我想监视几个站点的更改,以便在添加文件更改时基本上通知我。这样我就可以在黑客发生或其他用户做出错误的更改时快速逆转。我读了很多关于这个主题的文章,我最初明白我应该为此使用incron 或 incrontab。
问题是 incron 没有递归搜索,我没有找到一个脚本在检测到时会更改电子邮件,而且我还不是 Bash 明星,所以黑客攻击很慢。
使用 incrontab 递归搜索
我确实在 Cybercity 找到了一些可以帮助递归搜索的方法。这是一篇更多关于在进行更改时使用 rsynch 的文章。我只需要在进行更改时收到一封电子邮件,以便我可以在需要时做一些事情。在电子邮件地址记录和 ping 的任何一个或更改。
正在进行中的代码
我每天尝试制作和运行的代码类似于:
find /home/user/site.com -type d -print0 | xargs -0 -I{} echo "{} IN_CLOSE_WRITE,IN_CREATE,IN_DELETE email-me '*.tmp' -a /home/user/site.com/ user@www2.example.com:/home/user/site.com/" > /etc/incron.d/webroot.conf
通过电子邮件发送更改
我可能需要弄清楚的是如何发送一封包含所做更改的电子邮件,并每天在特定时间发送一次这些更改。通过电子邮件发送它在这里进行了讨论。它的代码是mail -s "server change" email@emailaddress.com
但我需要的是让它在我的代码段中工作。每天发送它可能就像一个常规的 crontab,所以主要问题是在电子邮件中打印所有内容并发送它。
问题
所以我的问题是,我怎样才能修复这个脚本以电子邮件更改,我怎样才能让它每天运行?
更新
有人告诉我,我也可以使用 (Sub)version 和 cronjob 来实现这一切。Subversion 可用于将本地或开发副本与实时副本进行比较,并且通过 cronjob,我可以安排将差异报告发送给我。我确实知道如何制作 cronjob,并且我有以下设置
svn.site.com with repo
dev.site.com with beta site/backup site
site.com live site
我在 dev 上所做的任何更改都可以使用 svn update 推送实时站点。
但我现在需要的是一个脚本,用于向我发送与 repo 或 dev 站点相比在实时站点上所做的更改。我在这里阅读 diff 。我现在如何将实时站点与 repo 进行比较,并通过电子邮件将差异发送给我?
@tripleee 告诉我cd /path/to/directory; svn diff | mail -s "diff" you@example.com
,就像 cronjob 一样。我正在调查这个。