Rsyncで双方向または双方向の同期をセットアップしようとしています。私の場合、ファイルを削除する必要があるのは、BからAに同期するときだけです。そのため、次のようにrsyncを2回実行することを考えていました。
rsync -rtuv ./A/ ./B/
rsync -rtuv --delete ./B/ ./A/
このソリューションのこの問題は、rsync(A-B)を実行した直後にrsync(B-> A)を実行すると、同期の間に作成された新しいファイルもすべて削除されることです。
この日時より前に作成された場合にのみファイルを削除するという条件としてタイムスタンプを指定できる方法はありますか?.
更新しました:
ユニゾンソリューションがあることを理解していますが、ユニゾンの問題は両端にインストールする必要があります。リモートサーバーと同期していますが、リモートエンドにunisonをインストールできません。
あなたはまさにこのタスクのために設計されたosyncを試すことができます。仕事をするためにrsyncコマンドの複雑なシーケンスを一度設定しましたが、今はosyncを使用しています。
https://github.com/deajan/osync
内部でrsyncを使用するため、rsyncを使用できるあらゆる状況に適しています。
rsync
は、発生した正確な理由により、このタスクには不適切なツールです。代わりに、 unison
の使用を検討してください:
unison A/ B/
これを初めて実行すると、A
に一意にあるファイルとB
に一意にあるファイルが識別されます。また、両方の場所にあるものにフラグを付け、どちらを上書きするかを特定するように求めます。
次回これを実行すると、A
からB
への変更と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
で使用できる便利なフラグがいくつかあります。これらは、仮定を定義することでプロセスを自動化し、それにより同期中に尋ねられる質問の数を減らすのに役立ちます。
本当に必要なのは Rclone です。 Rcloneは、クラウドストレージ(ボックス、ドロップボックス、ネクストクラウド、ftpなど)とローカルストレージのrsyncです。