ディレクトリの内容が更新されたときにコマンドを実行する方法は?

ディレクトリの内容が更新されたときにコマンドを実行する方法は?

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監視対象のファイルまたはディレクトリが移動されました。このイベントの後、ファイルやディレクトリは監視されなくなります。

作る監視対象のディレクトリにファイルまたはディレクトリが作成されました。

削除監視ディレクトリのファイルまたはディレクトリが削除されました。

自分を削除監視対象のファイルまたはディレクトリが削除されました。このイベントの後、ファイルやディレクトリは監視されなくなります。このイベントを明示的に受信しない場合でも、このイベントが発生する可能性があります。

おすすめ記事