rsync如何解决冲突?


14

如果机器A和机器B共享的目录先前通过进行了同步rsync,并且A更改了文件,B更改了相同的文件,而您rsync从A更改为B,该怎么办?

可能是像合并冲突那样的事情git

冲突可以轻松解决吗?

Answers:


25

Rsync不会尝试解决冲突。这不是它的工作。Rsync甚至没有办法检测到双方都修改了该文件,因为它没有有关任何公共祖先的信息。

使用默认选项,源文件将无条件复制到目标,从而覆盖目标文件。使用选项-u,仅在目标文件丢失或早于源文件时才复制源文件。使用选项--ignore-existing,仅在目标文件不存在时才复制源文件。

如果要检测冲突,则需要一个知道文件上次同步时间的工具,以便它可以将{目标=旧版本,源=新版本}与{目标=新版本1,源=新版本2)区分开来。 }。使用Unison,它可以做到这一点。Unison是双向同步器:它将自上次同步以来已被修改的文件复制到未修改文件的那一侧。如果双方都没有被修改,或者双方都被相同地修改,则它什么都不做。如果双方的修改方式不同,它会告诉您并允许您选择跳过,向一个方向复制或向另一个方向复制。

如果要自动解决冲突,即自动合并(在可能的情况下-总是有必要进行手动合并的情况),请使用版本控制系统,例如git。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.