1

最初我想同步 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 "      /var/www/released/$project"

rsync -pr /var/repo/released/$project /var/www/released/$project

结果,它复制了 /released 中的所有内容(那里有很多目录,比如说 -projects-)。

我想复制(同步)参数中给出的唯一项目。

你能建议如何做到这一点吗?

4

1 回答 1

1

当您在没有参数的情况下调用脚本时(这很可能是您正在做的事情,因为您以交互方式将项目名称读入变量$project),位置参数$1保持为空。因此脚本rsync/var/repo/released/.

您需要在脚本中替换$1为。$project另外,我建议在路径周围加上双引号,以避免由于目录名称中的空格而导致的问题。

rsync -pr "/var/repo/released/$project" "/var/www/released/$project"
于 2013-05-24T20:38:13.483 回答