两台计算机同时同步的故障模式

两台计算机同时同步的故障模式

rsync 如何处理与同一台机器上的另一个 rsync 发生干扰的可能性?我已阅读我能找到的所有文档,但没有看到任何关于此的提及。我打算进行一些实验,但担心它们可能无法揭示我可能遇到的任何问题的全部范围。

以下是场景。我想让两台机器保持同步。每台机器监视目录中的文件更改,当检测到更改时,它会运行 rsync 将该目录同步到远程机器。通常,一次只有一台机器会发生文件更改,但如果两台机器上的同一个文件同时更改,可能更改为不同的文件,会发生什么情况?rsync 会检测到它在两台机器上运行并正确处理这种情况(例如仅同步较新的文件)还是会出现严重错误,导致损坏或不确定的行为?

如果每台机器上都有一个 rsync 服务器,而不是使用 ssh,结果会有所不同吗?我还没有看到任何关于使用一种方法相对于另一种方法的好处的很好的解释。

答案1

简而言之 - 两个rsync过程将不是了解对方的一切情况。

在运行时,将仅根据源文件和目标文件的当前状态以及传递的参数/标志(即,如果您指定,或任何其他行为改变标志)rsync执行适当的操作。--dry-run--delete

这就是为什么rsync(以及其他单向同步工具)在某些环境下非常危险,也是为什么像Windows Server 的 DFS以及 Linux 的集群文件系统集群文件系统政府金融服务局或块级复制工具,例如DRBD如果您正在寻找真正的双向同步,则更适用。

您可能会发现此标志很有用(从rsync手册页),但您可能会遇到意外/不可预测的行为,特别是当您结合使用时--delete

-u, --update                skip files that are newer on the receiver

相关内容