ディレクトリを同期するためのシンプルな分散切断方法

ディレクトリを同期するためのシンプルな分散切断方法

Ubuntu ラップトップのマシン X で、ホーム ディレクトリの定期的なバックアップを開始したいと考えています。バックアップできる 2 つの異なるリモート (Linux) サーバー (マシン A と B) にアクセスできるとします。マシン X はマスターとなり、A と B に同期される必要があります。X から A へ、次に X から B へ、rsync を定期的に実行するだけで済みます。必要なのはこれだけです。

しかし、もっと帯域幅を効率的に利用して、より高速に実行できる方法があるかどうか知りたいです。X が住宅用ブロードバンド回線上にあると仮定すると、帯域幅を消費したくないので、X からの転送を制限します。A と B は常にオンになりますが、X はそうではありません。そのため、X が転送する時間も短縮し、A と B が転送に費やす時間を増やせるようにしたいと考えています。また、X は常に接続されているわけではありません。

これを実行する最適な方法は何でしょうか? X から A に rsync し、次に A から B に rsync するのでしょうか? タイミングが問題になる場合があります。古いファイルを残しておきたくないので、rsync する場合は、オプションを--del使用します。つまり、何かが A から B に転送され、次に B から削除され、次に A から B に再び転送される可能性があるということですか? これは最適ではありません。

Gluster のような優れた分散ファイルシステムがあることは知っていますが、この場合はやり過ぎで、切断された性質には合わないのではないかと思います。

答え1

これを行うには賢い方法と簡単な方法があります。私は可能な限り簡単な方法を選びます。

X -> A、そしてA -> B を実行していただけますか?

次のような方法もありますユニゾンしかし、それは1つのレプリカにしか送られないようで、双方向なのでバックアップにはそれほど役に立たないようです。しかし、AとBの両方がUnison上で動作している場合、クライアントXはAにバックアップできるようです。またはB、そしてそれはうまく他のところにも届くでしょう。

答え2

X が A との同期を開始し、X からデータをプルして、完了したら B にプッシュするようにします。A のスクリプトは、オンラインで同期の準備ができたときに X によって A にアップロードされたファイルがどこかに存在するかどうかを確認するだけで済みます。X からのプルが完了したら、B にプッシュし、完了したらファイルを削除します。または、A と B の両方にほぼ同じスクリプトを用意し、A が X からのプルを完了すると、B に A と同期するように指示するファイルを配置することもできます。同期するマシンが 2 台以上ある場合は、これが最適な方法です。そうすれば、同期はすべてのマシンにカスケードできます (線形ではなく、分散ツリー形式になる可能性があります)。

答え3

Dropbox はあなたにとって役立ちますか?

答え4

Michael Graff の解決策が最善のアイデアだと思います。rsync X -> A。次に A -> B。

計算時間を短縮する別の提案が必要な場合は、xdelta(http://xdelta.org/) 基本的にはマルチホップ rsync と同じソリューションですが、各ホップで差分を計算する時間を節約できるという利点があります。関係するファイルが大きい場合、これは時間の大幅な節約になります。

ジム C. http://www.kleobackup.net

関連情報