108

1 つのフォルダーとそのすべてのサブツリーの同期コピーが必要です。

このように自動的に機能するはずです。元のフォルダーから何かを作成、変更、または削除するたびに、それらの変更は同期フォルダーに自動的に適用されるはずです。

このタスクへの最良のアプローチはどれですか?

ところで:私はUbuntu 12.04を使用しています

最終的な目標は、シンボリック リンクやマウントを使用せずに、個別のリアルタイム バックアップ コピーを作成することです。Ubuntu One を使用してコンピューター間でデータを同期しましたが、しばらくすると問題が発生し、同期中にすべてのデータが失われました。

そこで、データのバックアップ コピーを保持するための手順をさらに追加することを考えました。

  • 「フォルダA」にデータを保存しています
  • 「フォルダ A」から「フォルダ B」への一方向の同期を作成するには、現在の質問に対する回答が必要です ( ?cronを含むスクリプトはrsync?)。A から B への一方向のみにする必要があります。B への変更を A に適用してはなりません。
  • 「フォルダー B」を Ubuntu One と同期し続けるだけです

    。このようにして、A の変更は B に適用され、U1 から検出されてクラウドに同期されます。何か問題が発生し、U1 が B のデータを削除しても、私は常に A にデータを保持しています。

lanzz のコメントに触発された別のアイデアは、起動時に rsync を実行して Ubuntu One の下のフォルダーのコンテンツをバックアップし、rsync が完了した後にのみ Ubuntu One を起動することです。

あれについてどう思う?rsyncがいつ終了するかを知る方法は?

4

5 に答える 5

126

inotifywait(modify,create,delete,moveフラグを有効にして) とを使用できますrsync

while inotifywait -r -e modify,create,delete,move /directory; do
    rsync -avz /directory /target
done

システムにない場合はinotifywait、実行しますsudo apt-get install inotify-tools

于 2016-11-10T10:25:00.900 に答える
2

fschangeを利用できます。Linux ファイルシステムの変更通知です。ソースコードは上記のリンクからダウンロードでき、自分でコンパイルできます。fschangeproc ファイル (/proc/fschange) からデータを読み取ることにより、ファイルの変更を追跡するために使用できます。データがファイルに書き込まれると、 fschange は、ファイルが変更されたというだけでなく、変更された正確な間隔を報告します。より高度なソリューションをお探しの場合は、Resilio Connectを確認することをお勧めします。クロスプラットフォームであり、使用と監視のための拡張オプションを提供します。BitTorrent ベースなので、既存のどの同期ツールよりも高速です。それは彼らに代わって書かれました。

于 2018-10-16T06:09:45.940 に答える