rsyncはどのように競合を解決しますか?


14

マシンAとマシンBの共有に以前に同期したディレクトリがrsyncあり、Aがファイルを変更し、Bが同じファイルを変更し、rsyncAからBに変更した場合はどうなりますか?

おそらくマージ競合のようなものgitですか?

競合は簡単に解決できますか?

回答:


25

Rsyncは競合を解決しようとしません。これはその仕事ではありません。Rsyncには、共通の祖先に関する情報がないため、両側がファイルを変更したことを検出する方法すらありません。

デフォルトのオプションでは、ソースファイルは無条件に宛先にコピーされ、宛先ファイルが上書きされます。オプションを使用すると-u、宛先ファイルが欠落しているか、ソースファイルよりも古い場合にのみ、ソースファイルがコピーされます。オプションを使用する--ignore-existingと、ソースファイルはコピー先ファイルが存在しない場合にのみコピーされます。

競合を検出する場合は、ファイルが最後に同期されたときを認識するツールが必要です。これにより、{destination =古いバージョン、source =新しいバージョン}と{destination =新しいバージョン1、source =新しいバージョン2を区別できます}。それを正確に行うUnisonを使用します。Unisonは双方向シンクロナイザーです。最後の同期以降に変更されたファイルを、ファイルが変更されていない側にコピーします。どちらの側も変更されていない場合、または両側が同じように変更されている場合、何も実行されません。両側が異なる方法で変更されている場合は、通知され、スキップ、一方向へのコピー、または他方向へのコピーを選択できます。

自動競合解決、つまり自動マージ(可能な場合、手動マージが必要な場合が常にあります)が必要な場合は、gitなどのリビジョン管理システムを使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.