A
他の人がコンテンツを頻繁に変更するディレクトリがあります。
B
私はこれまでに存在していたすべてのファイルを保持するプライベートディレクトリを作成しましたA
。
rsync
現在は、バックアップするA
ファイルを取得するために時々実行しますB
。しかし、いくつかのファイルがA
.に追加された後。A
にコピーされる可能性があるという懸念がありますB
。
これが起こらないようにする最善の方法は何ですか?理想的には、A
変更があるたびに現在のバックアップスクリプトを実行したいと思います。
答え1
お持ちの場合イノティファイツールinotifywait
インストール後にファイルまたはディレクトリが次に記録されたら、それを使用して操作をトリガーできます。
#!/bin/sh
dir1=/path/to/A/
while inotifywait -qqre "attrib,modify,close_write,move,move_self,create,delete,delete_self" "$dir1"; do
/run/backup/to/B
done
スイッチ-qq
は完全に静かで-r
再帰的で(必要な場合)-e
監視するイベントです。 ~からman inotifywait
:
プロパティ 監視されたファイルまたは監視されたディレクトリにあるファイルのメタデータが修正されました。これには、タイムスタンプ、ファイル権限、拡張属性などが含まれます。
調整監視ファイルまたは監視ディレクトリのファイルに書き込まれます。
書き込みを閉じる監視されたファイルまたは監視されたディレクトリのファイルが書き込み可能モードで開かれて閉じました。これは必ずしもファイルが作成されたことを意味するわけではありません。
移動するファイルまたはディレクトリが監視ディレクトリから移動されたか、監視ディレクトリに移動されました。これは実際にMoving_toとMoving_fromを受信することによって行われるため、受信されたクローズイベントはMOVEではなく2つのいずれかに出力されます。
move_self監視対象のファイルまたはディレクトリが移動されました。このイベントの後、ファイルやディレクトリは監視されなくなります。
作る監視対象のディレクトリにファイルまたはディレクトリが作成されました。
削除監視ディレクトリのファイルまたはディレクトリが削除されました。
自分を削除監視対象のファイルまたはディレクトリが削除されました。このイベントの後、ファイルやディレクトリは監視されなくなります。このイベントを明示的に受信しない場合でも、このイベントが発生する可能性があります。
答え2
努力する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'
確認する:eradman.com/entrproject詳しくはウェブサイトをご覧ください。
答え3
答え4
あなたが探しているプログラムはinotify
。