rsyncによる双方向同期


11

rsyncで双方向または双方向の同期をセットアップしようとしています。私の場合、BからAに同期するときにファイルを削除するだけで済みます。したがって、次のようにrsyncを2回実行することを考えていました。

rsync -rtuv ./A/ ./B/
rsync -rtuv --delete ./B/ ./A/

このソリューションのこの問題は、rsync(AB)を実行した直後にrsync(B-> A)を実行すると、同期の間に作成された新しいファイルも削除されることです。

この日時より前に作成された場合にのみファイルを削除するという条件としてタイムスタンプを指定できる方法はありますか?

更新しました:

私はユニゾンの解決策があることを理解していますが、ユニゾンの問題は両端にインストールする必要があります。リモートサーバーと同期していますが、リモートエンドにunisonをインストールできません。


非常によく似た質問があり、ここにいくつかの回答があります:stackoverflow.com/questions/2936627/two-way-sync-with-rsync
Thomas

回答:


4

あなたはまさにこのタスクのために設計されたosyncを試すことができます。仕事をするためにrsyncコマンドの複雑なシーケンスを設定したことがありましたが、今はosyncを使用しています。

https://github.com/deajan/osync

内部でrsyncを使用するため、rsyncを使用できるあらゆる状況に適しています。


1
ありがとう、マーク。私は自分の質問に答えようとしていました。私はbsyncと呼ばれる非常によく似たスクリプト(github.com/dooblem/bsync)を見つけました。基本的にはdiffを使用して何を同期する必要があるかを理解しています。同期の競合を想定していないため、このスクリプトを少し変更して、cronジョブで実行したときにサイレントで実行されるようにします。
Raza

7

rsyncあなたが遭遇した正確な理由のために、このタスクのための間違ったツールです。代わりに、次の使用を検討してunisonください。

unison A/ B/

これを最初に実行するときには、それが一意であるファイルを識別することになるA、として一意なものをB。また、両方の場所にあるものにフラグを付け、どちらを上書きするかを特定するように求めます。

これを次回実行時には、それはからの変更コピーするABしてもBへをA手動で解決するために、両方の場所で変更されたすべてのファイルにフラグを立てます。

mkdir A B
date > A/date
who > B/who
unison A/ B/
# Lots of output from unison, showing synchronisation

ls A
date    who
ls B
date    who

date > A/date
unison A/ B/
# Lots of output from unison, showing synchronisation

unison前提条件を定義することでプロセスを自動化し、それによって同期中に尋ねられる質問の数を減らすのに役立つ、いくつかの有用なフラグが利用できます。


3
私はユニゾンソリューションを見ましたが、それの問題は私が両端にインストールする必要があることです。リモートと同期していますが、リモートエンドにunisonをインストールできません。
Raza

1
それはOPを助けませんが、私はユニゾンを探していました。私はそこにある参照してDebianパッケージは、それは、SSHトランスポートをサポートしています。
テッド

1
この回答のコメントを参照、サーバー上にインストールせずに一斉に使用する可能性がありますstackoverflow.com/a/2936711ポイントがするi3vi3v.wordpress.com/2013/01/09/...~~Vは
トーマス・

-1

本当に必要なのはRcloneです。Rcloneはクラウドストレージ(ボックス、ドロップボックス、ネクストクラウド、ftpなど)とローカルストレージのrsyncです。


2
問題を解決するために、rcloneをどのようにインストールして使用しますか?
ジェフシャラー

3
rcloneにはまだ双方向同期がありません。
ショーン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.