rsync 多个源目录到多个目标目录

rsync 多个源目录到多个目标目录

我有多个源目录,比如/home/me/source1/mnt/somedisk/source2。我想将它们分别推送到类似/home/someoneelse/dest1和的位置/home/someoneelse/dest。我想使用一个 rsync 命令来实现这一点,可以吗?

那么对于 N 个目录到 N 个目录,其中每个目录都是唯一的,情况如何?

答案1

如果您经常这样做,我还建议您通过脚本来处理。

如果目标根始终相同,例如rsync /foo/blah1 /bar/rsync /fin/blah2 /bar/

您可以使用简单的 Bash for 循环来处理这个问题。

for x in /foo/blah1 /fin/blah2
do
    rsync $x /bar
done

而且,您还可以设置嵌套循环,以便各种源可以到达每个目的地。多年来,我们一直将其用作办公室的基本备份系统。

答案2

如果您不必复制任何符号链接,那么您可以在接收端设置一个目录,模仿发送端的目录布局,每个链接都指向预期的目的地。

一种方法是在接收端拥有符号链接source1和,并使用运行接收进程。source2--keep-dirlinks

如果您必须传输符号链接,那么您可能会让--no-implied-dirs为您工作。同样,您会在接收端拥有符号链接,但这次是在目录结构内,即home/me/将是目录(在 rsync 目标文件夹内,无论您希望它在哪里)并且home/me/source1将是 的符号链接/home/someoneelse/dest1。当不使用 时--keep-dirlinks,您不应该传输source1它本身(因为这会删除符号链接并将其替换为目录),而是传输 内的所有文件source1,即/home/me/source1/*。使用shopt -s dotglob也匹配其中的隐藏文件。

所有这些都只是远程测试:我知道我曾经做过类似的事情,但现在还没有详细信息或命令可用。因此,在生产设置中使用它之前,请测试可能的组合,特别是目录之间的更改和目录的符号链接。

相关内容