「新しい」モード(-uまたは--updateフラグ)に加えて、-t(ファイルの変更時刻をコピーする)、-r(再帰フォルダーの場合)、および-v(詳細な出力を表示して内容を確認する)を使用して、2回実行するだけですしている):
rsync -rtuv /path/to/dir_a/* /path/to/dir_b
rsync -rtuv /path/to/dir_b/* /path/to/dir_a
これは削除を処理しませんが、定期的な同期だけでこの問題を解決できるかどうかはわかりません.
Unison File Synchronizer をご存知ですか?
<ブロック引用>Unison は、Unix および Windows 用のファイル同期ツールです。これにより、ファイルとディレクトリのコレクションの 2 つのレプリカを異なるホスト (または同じホスト上の異なるディスク) に保存し、個別に変更してから、各レプリカの変更を他のレプリカに伝達することで最新の状態に更新できます。 ...
また、障害に対する回復力があることにも注意してください:
<ブロック引用>Unison は失敗に強いです。異常終了や通信障害が発生した場合でも、レプリカとそれ自体のプライベート構造を常に適切な状態にしておくように注意してください。
06
を実行する必要があります 14
で実行することをお勧めします :
rsync -au /local/source/* /remote/destination
rsync -au /remote/destination/* /local/source
22
(アーカイブの a) は 35
のショートカットです :
47
サブディレクトリに再帰54
シンボリック リンクも同期63
ファイルのアクセス許可も同期71
ファイルの変更時刻も同期88
ファイル グループも同期94
ファイル所有者も同期108
特別な (通常/メタではない) ファイルも同期します
基本的に 110
を使用して同一の 1 対 1 のコピーを作成する場合はいつでも 、常に 123
を使用する必要があります これは、ほとんどのユーザーが「同期」について話すときに起こることを期待しているためです。 "。ここでの他の回答は、ファイルの内容が変更されていない場合があるが、その所有者が変更されているか、アクセス許可が変更されている可能性があることを見落としているようです。その場合は 130
致命的な可能性があるファイルを同期しません。
ただし、143
も必要です 150
を伝えるように ファイル/フォルダーが宛先に既に存在し、最終更新日が新しい場合に備えて、ファイル/フォルダーを完全にそのままにします。 161
なし 176
ファイル/フォルダーが新しいかどうかに関係なく同期します。
このソリューションでは、削除されたファイルを処理できないことに注意してください。次の状況を考慮すると、削除の処理は容易ではありません:ファイルがソースで削除されました。 そのファイルがかつて存在し、削除されたかどうか (その場合、宛先でも削除する必要があります)、またはソースに存在しなかったかどうか (その場合、宛先からコピーする必要があります) を認識します。これら 2 つの状況は 193
と同じに見えます したがって、正しく反応する方法を知ることができません。同じ状況につながる可能性があるため、逆方向の同期は役に立ちません。ソースにはファイルが存在しますが、宛先には存在しません。なんで?宛先に存在しなかったか、または削除されましたか?どちらの場合も 202
と同じように見えます .
削除されたファイルを確実に同期できる同期ツールは、通常、過去のすべての同期操作に関する同期ログを管理します。そのログで、以前はファイルが存在して同期されていたが、現在は見つからないことが明らかになった場合、そのファイルは削除されたことは明らかです。ログにそのようなファイルがなかった場合は、同期する必要があります。すべてのログ エントリをタイムスタンプ付きで保存することにより、削除されたファイルが戻ってきて何度も削除される可能性さえありますが、同期ツールは常に何をすべきかを認識し、結果は常に正しいものになります。 216
にはそのようなログはありません。操作の両側の現在のファイル状態にのみ依存しています。
ただし、 225
を使用して同期コマンドを作成できます そして、上記の同期ツールに非常に近い POSIX シェル スクリプトを少し使用します。私自身もそのようなツールが必要だったので、このようなスクリプトの作成をガイドする Stackoverflow の回答を次に示します。