Ubuntuで指定したファイルの変更を監視する方法

Ubuntuで指定したファイルの変更を監視する方法

この記事では、Ubuntuで特定のファイルやディレクトリの変更をリアルタイムで監視する方法について解説します。特定のファイルが変更されたときに自動的に通知を受けたり、スクリプトを実行する設定方法を学びましょう。

監視に使う「inotifywait」とは

Ubuntuでは、「inotify-tools」というツールを使ってファイルやディレクトリの変更を監視できます。特に「inotifywait」は、ファイルの変更を監視し、その変化をリアルタイムでキャッチするために便利なコマンドです。

「inotify-tools」のインストール方法

まずは、監視ツールをインストールしましょう。以下のコマンドを使用して、簡単にインストールできます。

sudo apt-get install inotify-tools

「inotifywait」を使った基本的なファイル監視

「inotifywait」を使って特定のファイルの変更を監視する基本的なコマンドを紹介します。例えば、test.txtというファイルを監視したい場合は、以下のコマンドを実行します。

inotifywait -m test.txt

このコマンドを実行すると、ファイルに変更が加えられた際に、その変更内容がリアルタイムで出力されます。

特定のイベントだけを監視する

「inotifywait」では、ファイルの変更だけでなく、作成や削除といった特定のイベントに絞って監視することもできます。以下は、ファイルが書き込み可能な状態に変更されたときだけを監視する例です。

inotifywait -m -e modify test.txt

ディレクトリ全体の変更を監視する

特定のディレクトリ内で発生するすべてのファイル変更を監視することも可能です。以下のコマンドを使用して、ディレクトリ全体の変更を監視してみましょう。

inotifywait -m /path/to/directory

監視結果をログファイルに保存する

監視結果をログファイルに保存したい場合は、以下のようにコマンドを実行します。

inotifywait -m /path/to/directory -o /path/to/logfile

これにより、指定したディレクトリ内で行われた変更がすべてログファイルに記録されます。

スクリプトを使用した自動化

ファイルの変更が検知されたときに、自動でスクリプトを実行する方法を紹介します。例えば、ファイルの変更を検知したら自動的にバックアップを取るスクリプトを実行する場合は、以下のようにします。

!/bin/bash
inotifywait -m /path/to/file | while read path action file; do
echo "File $file at $path was $action"
# バックアップスクリプトの実行
/path/to/backup_script.sh
done

このスクリプトを実行することで、指定したファイルに変更が加えられた際に、自動的にバックアップが実行されます。