Rsync

rsync 如何解決衝突?

  • December 25, 2021

如果機器 A 和機器 B 共享以前通過 同步的目錄rsync,並且 A 更改了一個文件,B 更改了同一個文件,而您rsync從 A 到 B,該怎麼辦?

是否可能類似於合併衝突git

衝突能輕易解決嗎?

Rsync 不會嘗試解決衝突。這不是它的工作。Rsync 甚至沒有辦法檢測到雙方都修改了文件,因為它沒有任何共同祖先的資訊。

使用預設選項,源文件無條件複製到目標,覆蓋目標文件。使用選項-u,僅當目標文件失去或比源文件舊時才複製源文件。使用選項--ignore-existing,僅當目標文件不存在時才複製源文件。

如果要檢測衝突,則需要一個知道文件上次同步時間的工具,以便它可以區分 {destination = old version, source = new version} 和 {destination = new version 1, source = new version 2 }。使用Unison,它正是這樣做的。Unison 是一個雙向同步器:它將自上次同步以來修改過的文件複製到文件未修改的一側。如果雙方都沒有被修改,或者如果雙方都被相同的修改,它什麼也不做。如果兩邊都以不同的方式進行了修改,它會告訴您並讓您選擇跳過、向一個方向複製或向另一個方向複製。

如果您想要自動解決衝突,即自動合併(如果可能——總是存在需要手動合併的情況),請使用 git 等修訂控制系統。

引用自:https://unix.stackexchange.com/questions/200061