我有一个 24/7 运行的 linux 机器(Debian)。我想以这样的方式设置它,它每天一次连接到特定的 FTP 服务器并检查自上次检查以来是否有任何文件发生更改。如果有,它应该向我发送一封电子邮件,其中包含已更改文件的列表。
检查不必彻底 - 如果它只是比较文件日期,我会很高兴。但它必须是递归的。
我怎样才能做到这一点?我知道我可以使用 cron 来安排进程,但是我用什么来连接和检查更改?
我有一个 24/7 运行的 linux 机器(Debian)。我想以这样的方式设置它,它每天一次连接到特定的 FTP 服务器并检查自上次检查以来是否有任何文件发生更改。如果有,它应该向我发送一封电子邮件,其中包含已更改文件的列表。
检查不必彻底 - 如果它只是比较文件日期,我会很高兴。但它必须是递归的。
我怎样才能做到这一点?我知道我可以使用 cron 来安排进程,但是我用什么来连接和检查更改?
ncftp 客户端有ncftpls工具,它可以做一个递归的长列表。
这是使用 Net::FTP 的 Perl 解决方案。下面的脚本应该打印文件服务器中每个文件的文件名和时间戳。您可以轻松扩展它以满足您的实际需求。
我很确定 lftp 可以编写脚本来执行此操作;否则,我只需将 FTP 库用于我最喜欢的脚本语言(Ruby/Perl/Python)并以这种方式完成工作。
这是一个 shell 脚本来帮助你。如果您可以通过 ssh 执行此操作,那么您就完成了。如果您必须通过 FTP 进行操作,那么您将会遇到我的老朋友Expect。祝你好运!
使用 wget。第一天:
此命令将生成一个名为 YOURSERVER 的本地目录,其下有一个下载的目录树,但每个目录将仅包含一个名为“.listing”的文件。可以使用 diff 命令将 .listing 文件与旧副本进行比较。
现在每天:
这将打印所有不同的行,并且 cron 应该自动将结果邮寄给您。