GNU/Linux >> Linux の 問題 >  >> Linux

RSync:双方向で同期するにはどうすればよいですか?

「新しい」モード(-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 の回答を次に示します。


Linux
  1. Rsyncコマンドをスケジュールする方法は?

  2. Rsyncを使用して双方向でディレクトリを同期しますか?

  3. ファイルをスパースにする方法は?

  1. LinuxでRsyncを使用して新しいファイルまたは変更/変更されたファイルを同期する方法

  2. ファイル内で \n を grep する方法

  3. ファイルをトランザクション的にコピーする方法は?

  1. Linuxでファイルの名前を変更するにはどうすればよいですか?

  2. rsyncを使用してファイルを同期する

  3. 単一のファイルを RSYNC するには?