使用一个命令 rsync 到多个目录?

使用一个命令 rsync 到多个目录?

我想将我的工作目录 rsync 到其他两个目录。一个目标用于备份,另一个用于测试。我尝试了以下方法:

rsync -av --exclude='.git' source dest1,dest2

但随后我收到错误 -'dest1,dest2'未找到目录。因此它似乎将其视为一个目录路径。当然,我会使用不同的目标目录运行两次命令,但这样加起来,我希望始终使用 rsync 而无需使用多个命令。

可以做这样的事吗?

答案1

也许使用for循环:

for dest in dest1 dest2; do 
    rsync -av --exclude='.git' source $dest
done

答案2

建议的 for 循环解决方案有效,但如果要传输大量数据,则速度会非常慢。这是因为它序列化了作业,而作业受磁盘写入速度的限制。一个更好但稍微复杂一些的替代方案是使用 GNU Parallel:

http://www.gnu.org/software/parallel/

您可以想出一个命令来并行化多个 rsync 运行,如果您同时写入 N 个磁盘,速度将会快 N 倍。

这里给出了网络约束问题的类似并行解决方案:

https://stackoverflow.com/questions/24058544/speed-up-rsync-with-simultaneous-concurrent-file-transfers

相关内容