2つのサーバーから共通の場所へのrsync

2つのサーバーから共通の場所へのrsync

サーバーが 2 台あり、rsync両方のサーバーからファイルを 1 つの場所に保存したいと考えています。

  • サーバー1にはファイルAとBがある
  • サーバー2にはファイルAとBがある
  • rsyncサーバー3にファイルAとBが保存された後

ユーザーがサーバー 1 からファイル A を削除し、サーバー 2 からファイル B を削除すると、サーバー 3 にはファイルが残らないはずです。

しかし、私の設定では正しく動作しません:

  • rsync --delete server1 server3
  • rsync --delete server2 server3

最初に A が削除され、次に B が削除されますが、A はサーバー 2 から再度コピーされます。空のディレクトリが取得される代わりに、再び A が残ります。

これを回避する方法を知っている人はいますか?

答え1

実行している rsync コマンドは、server3 をコピー元のサーバーの厳密なコピーにします。つまり、server1 のクローン (A がなく、B がある) になり、次に server2 のクローン (A があり、B がない) になるように指示します。

少し戻って、ここで何を目指しているのか説明していただけますか?

答え2

やってみました

rsync -u --delete server1 server3
rsync --delete server2 server3

rsync のマニュアルページより:

  -u, --update                update only (don’t overwrite newer files)

最初に同期を実行するのが server1 か server2 のどちらであっても、ファイルがすでに server3 にあるかどうかが尊重されます。

ただし、rsync コマンドを 1 つのスクリプトに配置し、他のスクリプトが実行中の場合は同期が実行されないことを示すフラグ ファイルを配置する必要があることに注意してください。

それが役に立つかどうか教えてください。

関連情報