web-dev-qa-db-ja.com

rsyncとの双方向同期

フォルダーa /とリモートフォルダーA /があります。 Makefileで次のようなものを実行します。

get-music:
 rsync -avzru server:/media/10001/music/ /media/Incoming/music/

put-music:
 rsync -avzru /media/Incoming/music/ server:/media/10001/music/

sync-music: get-music put-music

sync-musicを作成すると、最初にサーバーからローカルへのすべての差分を取得し、次に逆に、ローカルからサーバーにすべての差分を送信します。

これは、将来の更新または新しいファイルだけがある場合にのみ非常にうまく機能します。削除がある場合、何もしません。

Rsyncには、-deleteオプションと--delete-afterオプションがあり、目的を達成するのに役立ちますが、2方向同期では機能しません。

Synのサーバーファイルを削除する場合、ローカルファイルが削除されたときに機能しますが、何らかの理由で(後で説明する)サーバーにはないがローカルに存在するファイルがいくつかあり、それらが削除された場合、サーバーがコピーされたのではなく、ローカルでそれらを削除したいです(たまたま)。

コンテキストには3台のマシンがあります:

  1. デスクトップ
  2. ノート
  3. ホームサーバー

そのため、たとえば、サーバーにノートブック同期で削除されたファイルがある場合があります。その後、デスクトップ(削除されたサーバーファイルがまだ存在する場所)で同期を実行すると、これらのファイルは削除され、サーバーに再度コピーされました。

これはデータベースと操作の追跡でのみ可能だと思います:P

より簡単なソリューションはありますか?ありがとうございました。

90
mwm

Unisonを試してください: http://www.cis.upenn.edu/~bcpierce/unison/

構文:unison dirA/ dirB/

Unisonは、ファイルが異なる場合に何をすべきかを尋ねますが、デフォルト(競合しない)オプションを受け入れる以下を使用してプロセスを自動化できます。

unison -auto dirA/ dirB/

unison -batch dirA/ dirB/はまったく質問をせず、無視されたファイルの数を出力に書き込みます(競合しているため)。

61
alex

Bitpocketを試すこともできます: https://github.com/sickill/bitpocket

8
saif

これを試して、

get-music:
 rsync -avzru --delete-excluded server:/media/10001/music/ /media/Incoming/music/

put-music:
 rsync -avzru --delete-excluded /media/Incoming/music/ server:/media/10001/music/

sync-music: get-music put-music

これをテストするだけでうまくいきました。 Windows7(rsyncパッケージがインストールされたcygwinを使用)とFreeNASファイルサーバー(FreeNASはrsyncパッケージがプリインストールされたFreeBSD上で動作します)の間で双方向の同期を行っています。

6
Chris Collins

Osync: http://www.netpower.fr/osync を使用できます。これは、インテリジェントな削除伝播を使用したrsyncです。また、停止した実行の再開、一時的な削除、時間制御など、複数のオプションがあります。

5
Orsiris de Jong

元の質問にはデスクトップとラップトップ、および音楽ファイルが関係する例も含まれているため(おそらくGUIを使用しているため)、これまでで最高の双方向、マルチプラットフォーム、フリー、オープンソースプログラムの1つに言及します。 FreeFileSync

GUIベースで、非常に高速で直感的で、フィルタリングや、リモート接続、「衝突」(タイムスタンプが類似したファイルなど)の表示とインタラクティブな管理、双方向転送、ミラーリング、など。

4
Dario Fumagalli

csync を試すことができます。これは owncloud に隠れた同期エンジンです。

3
marton78

現在SparkleShareを使用しています https://www.sparkleshare.org/

mac、Linux、Windowsで動作します。

1
mwm

2つの同期で機能するかどうかはわかりませんが、-deleteを機能させるには--recursiveパラメーターも追加する必要があります。

0
Boardy

Rclone はあなたが探しているものです。 Rclone(「クラウドストレージのrsync」)は、ローカルファイルシステムを含むさまざまなクラウドストレージプロバイダーとの間でファイルやディレクトリを同期するコマンドラインプログラムです。 Rcloneは以前はSwiftsyncとして知られており、2013年から利用可能です。

0
user1461607