![使用一个命令 rsync 到多个目录?](https://linux22.com/image/1399399/%E4%BD%BF%E7%94%A8%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%20rsync%20%E5%88%B0%E5%A4%9A%E4%B8%AA%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
我想将我的工作目录 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 倍。
这里给出了网络约束问题的类似并行解决方案: