質問: Ubuntu 16.04 の Samba を使いサーバーとしてフォルダをネットワーク共有しています。 フォルダに何らかのファイルが追加されたり変更があった場合その履歴を記録、メール通知したいのですが、指定したフォルダ以下(サブフォルダ含む)での変更を検知して何らかのスクリプトを走らせる方法はあるのでしょうか? 追加・変更時にCSVなどの形で一旦記録しておき、あとはCronなどで一定時間ごとにログをチェックしてメール通知と言うかたちになるかと考えています。記録したい内容はいつ、どのファイルが、書き込みまたは削除されたのかです。 ファイルに記録さえできてしまえばメール通知のスクリプト自体はなんとかなりそうなのですがフォルダ監視の方法が分かりません。 負荷を抑える方法があるのであれば定期実行して全ファイルを調べて差分を得る形でも構いません。 なにか良い手段はないでしょうか?
回答: 実際に実装したことないので想像で回答です。 お手軽な実装であれば以下が思いつきます。 まず、samba側で対象ディレクトリの監査ログを有効にします。 こちらは、ログに出力されることになるので、こちらをlogwatchやlogmonなどのログモニタリングツールで、ログが出力された場合にメール通知を行うスクリプトを実行すれば実現できると思います。 ただし、1点注意ですが、監査ログを出力すること、またこれをモニタリングすることはかなりの負荷がかかることが想定されます。 十分検証し、必要なリソースを算出してから本番環境への導入を検討されるべきかと思います。 > > 追加・変更時にCSVなどの形で一旦記録しておき > > > こちらはログを成形してcsvにするスクリプトを作成するしかないですね。 ログ監視をfluentd+ElasticSearch+grafanaにすれば、可視化インターフェースも提供できるし、色々なことができそうな感じがします。興味があれば上記構成も調べてみては如何でしょうか?ただし敷居が高いです・・・