有没有办法在已上传至 FTP 服务器的文件上运行脚本。
我在服务器上运行 ProFTP,并希望在上传文件后立即处理它们。我目前想到的方法是
- Cron Job 每分钟在 FTP 中查找新文件并处理它们。
- 编写一个守护进程来监视文件上传日志并使用该信息来处理文件。
有没有更好的方法,或者我可以在服务器上设置指令来在所有文件上传时运行脚本?
更新:Linux 操作系统
答案1
您无需说明您的操作系统,但如果您使用的是 Linux 系统,则可以挂接“inotify”,这是一个内核子系统,在发生文件系统事件时触发。这应该比 cron 的响应时间要好得多,因为 cron 只能以一分钟为单位运行。
下面的链接可以帮助您入门,但是还有 Perl、Python 和许多其他可用的绑定。
答案2
如果更改 ftp 守护进程没有问题,那么纯 ftpd具有这个功能。
希望这可以帮助。
答案3
解决此问题的两种一般方法是:
- 使用 ProFTP 的内置功能(如果存在)或其他 FTP 服务器产品
- 让某个操作系统进程或 cron 作业(正如您在第 1 和第 2 点中提到的)监视文件,或者比轮询更好的方法是监视文件系统事件并做出相应的响应。请参阅https://stackoverflow.com/questions/324258/is-there-an-equivalent-to-the-net-filesystemwatcher-in-the-linux-world。
最简单的方法是使用 FTP 服务器内置的功能(如果存在)。如果没有,您可以下载文件监视程序代码和/或可以 cron 执行的已编写的 shell 脚本。