在上传的FTP文件上自动运行脚本

有没有办法通过已经上传到FTP服务器上的文件来运行脚本

我正在服务器上运行ProFTP,并希望在上传后立即处理上传的文件。 我目前想到的方式是

  1. Cron Job在FTP中查找新文件并每分钟处理一次。
  2. 编写一个守护进程来监视file upload日志,并使用该信息来处理文件。

有没有更好的方法,或者我可以在服务器上设置一个指令来运行所有file upload的脚本?

更新:Linux操作系统

你没有说明你的操作系统,但是如果你在一个Linux机器上,你可以挂上'inotify',这将是一个在发生文件系统事件时触发的内核子系统。 这应该给你比cron更好的响应时间,它只能运行在一分钟的粒度上。

下面的链接将帮助你开始,但是还有Perl,Python和其他一些可用的绑定。

http://inotify-tools.sourceforge.net

如果改变你的ftp守护进程不是问题,那么pure-ftpd就具有这个function。

希望这可以帮助。

这两个一般的方法是:

  1. 使用内置于ProFTP(如果存在)或其他FTP服务器产品的function
  2. 有一些操作系统进程或cron作业(正如你在#1和#2中提到的那样)监视文件,或者比轮询更好地监视文件系统事件并作出相应的响应。 见https://stackoverflow.com/questions/324258/is-there-an-equivalent-to-the-net-filesystemwatcher-in-the-linux-world

最简单的方法是使用内置于FTP服务器的function(如果存在的话)。 如果没有,你可能会下载文件观察程序代码,或者你可以cron的已经写好的shell脚本。