他の人によって内容が頻繁に変更されるディレクトリA
があります。
個人用ディレクトリB
を作成しました。ここには、これまでA
にあったすべてのファイルを保存します。
現在、たまにrsync
を実行して、ファイルをA
からB
にバックアップしています。ただし、一部のファイルがA
に追加され、A
から削除されてから、B
にコピーする機会が得られる可能性を恐れています。
これを防ぐための最良の方法は何ですか?理想的には、A
の内容が変更されるたびに現在のバックアップスクリプトを実行したいのですが。
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
:
修正
監視されたファイルまたは監視されたディレクトリ内のファイルが書き込まれました。
ファイルが変更されたときに任意のコマンドを実行できる 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 または eradman.com/entrproject Webサイトを確認してください。
あなたが探しているプログラムは inotify
です。