如果机器 A 和机器 B 共享一个先前通过 同步的目录rsync
,并且 A 更改了一个文件,而 B 更改了同一个文件,而您rsync
从 A 更改到了 B,该怎么办?
这可能是类似于 中的合并冲突吗git
?
矛盾能轻易解决吗?
答案1
Rsync 不会尝试解决冲突。这不是它的工作。 Rsync 甚至没有办法检测双方都修改了文件,因为它没有任何共同祖先的信息。
使用默认选项,源文件将无条件复制到目标,覆盖目标文件。使用选项-u
,仅当目标文件丢失或早于源文件时才复制源文件。使用选项--ignore-existing
,仅当目标文件不存在时才复制源文件。
如果要检测冲突,您需要一个能够了解文件上次同步时间的工具,以便能够区分 {destination = old version, source = new version} 和 {destination = new version 1, source = new version 2 }。使用齐奏,正是这样做的。 Unison 是一个双向同步器:它将自上次同步以来修改过的文件复制到文件未修改的一侧。如果双方均未修改,或者双方修改相同,则不执行任何操作。如果两侧都以不同的方式修改,它会告诉您并让您选择跳过、沿一个方向复制或沿另一个方向复制。
如果您想要自动解决冲突,即自动合并(如果可能的话,总是有需要手动合并的情况),请使用版本控制系统,例如 git。