前提・実現したいこと
inotifyというlinuxのツールを使い、特定フォルダの中に何か変更があった際、すべての変更が完了したら
特定のコマンドを実行するという処理を書きたい。
例えば
/data/app フォルダの中で
/data/app/test1
/data/app/test2
/data/app/test3
というフォルダを別のところからコピーしてきた際に、3つが完全にコピーが終わったときに(appフォルダ内の処理がすべて終わった際)
コマンドを実行したいです。
それぞれtest1,2,3には大量の画像などがはいっているので、イベントが始まった瞬間に実行されると困る。
該当のソースコード
watch-file.sh /data/app "echo"
これで/data/app を監視スタートし、watch-file.shの中は下記になります。
WATCH_DIR=$1 # 監視するディレクトリ COMMAND=$2 # ファイル更新時に実行するコマンド inotifywait -e CLOSE_WRITE -m -r ${WATCH_DIR} --format "%w %f %e" | \ while read LINE; do ${COMMAND} "コピー完了" done
試したこと
whileの1回目でbreakをはさんでみたが、うまくいかなかったです。
補足情報(FW/ツールのバージョンなど)
centos 6
inotify