从两台服务器 rsync 到一个共同位置

从两台服务器 rsync 到一个共同位置

我有两台服务器,我想将rsync两台服务器上的文件传输到一个位置。

  • 服务器 1 有文件 A 和 B
  • 服务器 2 有文件 A 和 B
  • rsync当服务器 3 有文件 A 和 B后

当用户从服务器 1 中删除文件 A 并从服务器 2 中删除文件 B 时,服务器 3 上不应有任何文件。

但它在我的设置中无法正常工作:

  • rsync --delete server1 server3
  • rsync --delete server2 server3

它首先删除 A,然后删除 B,但 A 会从服务器 2 再次复制。最终我没有得到空目录,而是再次得到了 A。

有谁能解决这个问题?

答案1

您正在执行的 rsync 命令使 server3 成为其所复制服务器的严格副本。因此,它成为 server1 的克隆(缺少 A 而有 B),然后您告诉它成为 server2 的克隆(缺少 A 而有 B)

您能否退后一步并解释一下您在这里想要做什么?

答案2

你有没有尝试过

rsync -u --delete server1 server3
rsync --delete server2 server3

来自 rsync 手册页:

  -u, --update                update only (don’t overwrite newer files)

无论是服务器 1 还是服务器 2 首先进行同步,它都会尊重文件是否已经在服务器 3 中。

但请注意,您应该将 rsync 命令放在 1 个脚本中,并放置一个标志文件,以指示如果另一个脚本正在运行,则同步将不会运行。

如果有帮助的话请告诉我。

相关内容