所以我喜歡追蹤添加的文件和編輯的文件。
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 inotifyauditd 或其他軟體包。這不是一個選項,因為它是一個 cpanel 共享託管伺服器,我沒有該存取權限。
所以我正在尋找最簡單的方法來做到這一點或接近它。
git 可用,但我知道你需要進行存儲庫提交更改等,它不會掃描資料夾。它還需要可編寫腳本
簡而言之,只需要一個盡可能簡單的腳本來每天郵寄更改
答案1
你實際上是在要求一個版本控制系統,例如 Git。
您可以透過建立 cronjob 將所有檔案複製到「prev」目錄並向您發送郵件來推出自己的 cronjob diff -r
,但這確實是 VCS 已經做得更有效且通常更省力的事情,因此您不妨使用它。
git 可用,但我知道你需要進行存儲庫提交更改等,它不會掃描資料夾。
如果你要求的話它就會這樣做。這實際上是任何版本控制系統的核心功能之一:告訴您提交之間發生了什麼變化,並告訴您自上次提交以來發生了什麼變化(即尚未提交什麼)。
因此,如果您在 public_html 中有一個儲存庫,您只需執行git status
或git diff
即可查看變更。特別是,--name-status
會向您顯示 A(新增)/M(修改)/D(刪除)檔案的列表,就像您所要求的那樣。這同樣適用於顯示提交之間更改的命令。
它還需要可編寫腳本
每個版本控制系統都是可編寫的腳本。尤其是 Git,它的腳本化程度很高,以至於它的許多面向使用者的命令過去(有時仍然是)只是圍繞低階命令的 shell 腳本。
大多數其他版本控制系統也是可編寫腳本的至少到進行提交並顯示更改摘要的程度(您要求的 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