Rsync复制了太多通过bash脚本执行的目录
最初我想同步bash脚本中参数中给定的目录(包括所有文件和子目录) 我发现了这篇文章:它解释了在类似情况下如何使用rsync 我的bash脚本非常简单,如下所示:Rsync复制了太多通过bash脚本执行的目录,bash,rsync,Bash,Rsync,最初我想同步bash脚本中参数中给定的目录(包括所有文件和子目录) 我发现了这篇文章:它解释了在类似情况下如何使用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 "
#!/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-)
我只想复制(同步)参数中给出的项目
您可以建议如何执行此操作吗?当您在没有参数的情况下调用脚本时(这很可能是您正在执行的操作,因为您以交互方式将项目名称读入变量
$project
),位置参数$1
仍为空。因此,脚本将rsync
包含/var/repo/released/
的全部内容
您需要将脚本中的$1
替换为$project
。另外,我建议在路径周围加上双引号,以避免由于目录名中的空格而导致的问题
rsync -pr "/var/repo/released/$project" "/var/www/released/$project"
当您在没有参数的情况下调用脚本时(这很可能是因为您以交互方式将项目名称读入变量
$project
),位置参数$1
保持为空。因此,脚本将rsync
包含/var/repo/released/
的全部内容
您需要将脚本中的$1
替换为$project
。另外,我建议在路径周围加上双引号,以避免由于目录名中的空格而导致的问题
rsync -pr "/var/repo/released/$project" "/var/www/released/$project"
这就是原因,引号是+$project而不是$1这就是原因,引号是+$project而不是$1