回答:
Rsyncは競合を解決しようとしません。これはその仕事ではありません。Rsyncには、共通の祖先に関する情報がないため、両側がファイルを変更したことを検出する方法すらありません。
デフォルトのオプションでは、ソースファイルは無条件に宛先にコピーされ、宛先ファイルが上書きされます。オプションを使用すると-u
、宛先ファイルが欠落しているか、ソースファイルよりも古い場合にのみ、ソースファイルがコピーされます。オプションを使用する--ignore-existing
と、ソースファイルはコピー先ファイルが存在しない場合にのみコピーされます。
競合を検出する場合は、ファイルが最後に同期されたときを認識するツールが必要です。これにより、{destination =古いバージョン、source =新しいバージョン}と{destination =新しいバージョン1、source =新しいバージョン2を区別できます}。それを正確に行うUnisonを使用します。Unisonは双方向シンクロナイザーです。最後の同期以降に変更されたファイルを、ファイルが変更されていない側にコピーします。どちらの側も変更されていない場合、または両側が同じように変更されている場合、何も実行されません。両側が異なる方法で変更されている場合は、通知され、スキップ、一方向へのコピー、または他方向へのコピーを選択できます。
自動競合解決、つまり自動マージ(可能な場合、手動マージが必要な場合が常にあります)が必要な場合は、gitなどのリビジョン管理システムを使用します。