1. ホーム
  2. linux

[解決済み] ファイルやディレクトリが変更されたときにシェルスクリプトを実行するには?

2023-07-28 08:22:29

質問

特定のファイルやディレクトリが変更されたときに、シェルスクリプトを実行したいのですが。

どうすれば簡単にできるのでしょうか?

どのように解決するのですか?

使用方法 inotify-tools(イノティファイ・ツール .

リンク先のGithubページには、いくつかの例が掲載されていますが、そのうちの一つを紹介します。

#!/bin/sh

cwd=$(pwd)

inotifywait -mr \
  --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' \
  -e close_write /tmp/test |
while read -r date time dir file; do
       changed_abs=${dir}${file}
       changed_rel=${changed_abs#"$cwd"/}

       rsync --progress --relative -vrae 'ssh -p 22' "$changed_rel" \
           [email protected]:/backup/root/dir && \
       echo "At ${time} on ${date}, file $changed_abs was backed up via rsync" >&2
done