Linux FTP 服务器可以监测上传文件完成,并自动对文件操作吗?
- 0次
- 2021-06-21 03:59:01
- idczone
linux 服务器,目前是 Centos,做 FTP 服务器,目前使用的是 vsftpd,想实现如下功能,自动监测 FTP 服务,如果有客户端上传文件完成,就对文件进行某个操作(具体什么操作不重要),这样的功能用什么方式实现较好,先谢过。
问题来了 怎么判断用户上传完了? NOW() - LAST_MODIFIED_TIME() > INTERVAL?
inotify?
你这个用现成的软件恐怕不好做,你可以看下你会的语言的 ftp 协议库,定制一个。
bash 脚本,死循环,每秒检测一下。
其他的方法都太难,这个最简单。
具体什么操作不重要
判断用户上传完成-->自动删除
研究下。
Microsoft Flow 有个对接 FTP 的服务,可以在发现文件修改后进行操作
但我猜他就是定时去看一看你文件改过了没有。
https://stackoverflow.com/questions/11374305/using-vsftpd-with-inotify-in-close-write-event
https://superuser.com/questions/135155/vsftpd-email-notification
可以用 inotify 或者 bash 循环读取 log 来实现.
让用户同时上传一个文件的元信息文件用来校验
同时上传一个包含 md5 值的文件,操作的脚步循环校验
python 的 ftp 库适合你 简单易用
不依赖外部手段无法实现
1.以前玩 0day 的时候,FTP 用 sfv(Simple File Verification)文件来校验文件完整性
2.有些 FTP 客户端的实现是用临时文件,传输完成后用 FTP 的 rename 命令重命名
https://serverfault.com/questions/431315/ftp-upload-hook
可能需要双端比对 MD5
proftpd 有这个功能
inotify 就可以
写个端口转发 映射 ftp 服务器控制端口,监控控制信令,如果上传命令完成就可以认为是上传成功了
1 ftp,http,上传文件,下载文件,是不可靠的。
2 ftp,http,上传文件,下载文件,完成通知,也是是不可靠的。
3 经常会有上传下载完成了。但是文件只有 99%相同。
4 所以人家才会发明 sfv,校验码等。
5 只有带校验码,并再读一遍。才可靠。如 bt,rsync。
inotify 确实是个好东西。
本来想使用 脚本的方式实现,发现没有那么简单,因为后续需要对文件的操作涉及到的东西较多。