回答:
あなたが持っている場合のinotify-toolsが、あなたが使用することができますインストールされinotifywait
たファイルまたはディレクトリが書き込まれている場合、アクションをトリガーします:
#!/bin/sh
dir1=/path/to/A/
while inotifywait -qqre modify "$dir1"; do
/run/backup/to/B
done
ここで、-qq
スイッチが完全に沈黙して、-r
再帰的(必要な場合)、-e
この場合には、モニタにイベントですmodify
。からman inotifywait
:
変更
監視対象ファイルまたは監視対象ディレクトリ内のファイルが書き込まれました。
/etc/profile
、システム全体または.bash_profile
ユーザーのみに対してはい。起動後に実行するには、Unix / Linuxのフレーバーに依存します。/etc/rc.local
、/etc/rc.d/
または/etc/init.d/
--monitor
そうでない場合があったときに多くのオーバーヘッドがあり、スイッチ(およびパイプの代わりにあなたのループへの出力)をinotifywait
何度も何度も開始され、
厳密に言えば、誰かがファイルをドロップし、非常に迅速にそれを削除した場合、あなたはそれを見逃すかもしれません。inotifyの使用(Linux、または他の大学での同様の機能)により、リスクのウィンドウは小さくなります。
選択したファイルシステムをそのディレクトリにマウントできる場合(これはオプションではないかもしれませんが)、すべてのファイルバージョンを記録するファイルシステム(copyfsなど)を配置できます。
entr
ファイルが変更されたときに任意のコマンドを実行できるコマンドラインツールを試してください。2.9リリース以降、ディレクトリ監視オプション(-d
)が追加され、新しいファイルがディレクトリに追加されたときにイベントに反応するようになりました。
新しいファイルがプロジェクトに追加された場合にユーティリティを実行する例:
$ while true; do
> echo src/* | entr -d your_command
> done
ディレクトリ監視モードでは、各ファイルの親ディレクトリが暗黙的に監視リストに追加されます。
これの唯一の意味は、新しいファイルが表示されたら、外部シェルループがファイルシステムを再スキャンできるように終了する必要があるということです。
ディレクトリ監視オプションなしのバージョンは次のとおりです。
$ while true; do
> echo src/* src | entr your_command
> done
ニーズに応じたより簡単な例を次に示します。
$ ls -d * | entr sh -c 'rsync -vuar A B'
詳細については、entrproject.orgの Webサイトを確認してください。
incrond
興味深いかもしれません。