inotifywait
も使用できます inotify-tools パッケージから。
inotifywait -r -m -e close_write --format '%w%f' /tmp | while read MODFILE
do
echo need to rsync $MODFILE ...
done
Lsyncd はこれに適したソリューションです。
<ブロック引用>Lsyncd は、ローカル ディレクトリ ツリーのイベント モニター インターフェイス (inotify または fsevents) を監視します。数秒間イベントを集約して結合し、1 つ (または複数) のプロセスを生成して変更を同期します。デフォルトでは、これは rsync です。したがって、Lsyncd は軽量のライブ ミラー ソリューションであり、インストールが比較的簡単で、新しいファイル システムやブロック デバイスを必要とせず、ローカル ファイルシステムのパフォーマンスを妨げません。
要するに、他の回答で示唆されているように、同じ種類のツール (inotify と rsync) を使用してジョブを実行しますが、シェル スクリプトに慣れていない人にとっては簡単にセットアップできます。
私のコードはリモートボックスで実行する必要があり、ローカルマシンでコードを書くので、これがたくさん必要です。ローカル フォルダーを継続的に監視し、それらをリモートまたはローカル フォルダーに同期するために使用できる便利なツールを見つけました:https://github.com/axkibe/lsyncd
ssh 経由でローカル ディレクトリをリモート マシンと継続的に同期する簡単なコマンドは次のとおりです。
lsyncd -log all -nodaemon -rsyncssh <local_path> <user>@<ip> <remote_path>
他の rsync コマンドと同様に、コマンドを実行する前にフォルダー パスを正しく指定し、確認してください。正しい宛先ディレクトリを指定できなかったため、リモート マシンの 1 つを殺してしまいそうになりました。リモート パスを見逃さないようにしてください。また、自分が何をしているのかわからない限り、「/」を使用しないでください。