最初我想在bash脚本中的参数中同步目录(包含所有文件和子目录)。
我发现这篇文章:How can I recursively copy a directory into another and replace only the files that have not changed?解释了如何在类似情况下使用rsync。
我的bash脚本非常简单,如下所示:
#!/bin/bash
echo -e "Type the project to be deployed: \c "
read project
echo -e "* Deploying: $project *"
echo -e "Sync: /var/repo/released/$project"
echo -e " /var/www/released/$project"
rsync -pr /var/repo/released/$project /var/www/released/$project
结果它复制了/ release中的所有内容(那里有很多目录,比如说-projects-)。
我想复制(同步)参数中给出的项目。
请问您如何做到这一点?
答案 0 :(得分:1)
当您在没有参数的情况下调用脚本时(由于您以交互方式将项目名称读入变量$project
,这很可能是您正在执行的操作),位置参数$1
仍为空。因此,该脚本将rsync
/var/repo/released/
的全部内容。
您需要在脚本中将$1
替换为$project
。另外,我建议在路径周围加上双引号,以避免由于目录名中的空格而引起的问题。
rsync -pr "/var/repo/released/$project" "/var/www/released/$project"