共有ホスティングアカウントのファイル変更を追跡する

共有ホスティングアカウントのファイル変更を追跡する

そのため、追加されたファイルだけでなく、編集されたファイルも追跡しておきたいのです。

find /home/user/public_html -type f -mtime -6 ! -path '*/exclude1*' ! -path '*/exclude2/etc*' -exec ls -ls {} \; | mail -e -s "File Monitor Report" [email protected]

これはまさに私が必要としていることですが、変更内容 (E 編集済み、N 新規、D 削除済み) などを追加する必要があります。

これまで何度もこの質問が寄せられてきましたが、答えはいつも同じです。fswatch inotify Auditd または他のパッケージです。これは cpanel 共有ホスティング サーバーであるため、私にはアクセス権がないため、選択肢にはなりません。

だから私は、これを実行するための最も簡単な方法、またはそれに近い方法を探しています。

Git は利用可能ですが、リポジトリの変更をコミットする必要があることは知っていますが、フォルダーをスキャンして変更を探すことはできません。また、スクリプト化できる必要があります。

つまり、毎日変更内容をメールで送信するためのできるだけシンプルなスクリプトが必要なのです。

答え1

文字通り、Git のようなバージョン管理システムを求めているのです。

すべてのファイルを「prev」ディレクトリにコピーしてメールを送信する cronjob を作成して独自に実行することもできますdiff -rが、これは実際には VCS が既により効率的に、通常は労力をかけずに実行していることなので、それを使用するほうがよいでしょう。

Git は利用可能ですが、私の知る限り、リポジトリの変更をコミットするなどする必要があるため、フォルダーをスキャンしてそれらの変更を検出することはできません。

要求すれば、その通りになります。これは文字通り、あらゆるバージョン管理システムのコア機能の 1 つです。コミット間で何が変更されたか、また前回のコミット以降に何が変更されたか (つまり、まだコミットされていないもの) を通知します。

したがって、public_html にリポジトリがある場合は、git statusまたはを実行するgit diffだけで変更を確認できます。特に、--name-statusは、要求されているように、A(追加)/M(変更)/D(削除) ファイルのリストを表示します。コミット間の変更を表示するコマンドにも同じことが当てはまります。

またスクリプト化可能である必要がある

すべてのバージョン管理システムはスクリプト化可能です。特に Git はスクリプト化可能であるため、ユーザー向けのコマンドの多くは、以前は (そして時々今でも) 低レベルのコマンドを中心としたシェル スクリプトでした。

他のほとんどのバージョン管理システムもスクリプト化可能少なくともコミットして変更の概要を表示するまでです (要求している Add/Mod/Del 出力は、多くの場合、実際には、たとえば ahg statusまたはのデフォルト出力ですsvn status)。

cronjob は基本的に次のようになります:

cd ~user/public_html
git add --all
git commit -m "Daily snapshot"
# Output the changes for cronmail
git show --name-status
# ...and output the whole diff as well.
git show --stat

関連情報