我想知道是否有最佳做法来检查上载到您的ftp服务器是否成功。Proftpd验证完成上传
我正在使用的系统有一个上传目录,其中包含上传文件的每个用户的子目录。
这些目录中的文件只是临时性的,它们在处理后会被丢弃。
系统循环遍历这些子目录和其中的新文件,并为每个文件检查它是否被修改了10秒。如果它在10秒内未被修改,则系统假定文件已成功上传。
我不喜欢系统当前处理这些情况的方式,因为它会尝试处理文件,并在文件上传不完整时失败,而不是等待并允许用户恢复上传直到完成。 对于上传时间不长的小文件可能会很好,但如果文件很大,我希望能够恢复上传。
我也不喜欢目录和文件的循环,系统在高cpu使用率下闲置,所以我实现了pyinotify来触发文件写入时的动作。我没有真正看过源代码,我只能假设它比当前的实现更优化(比我所描述的要多得多)。
但是我仍然需要检查文件是否成功上传。
我知道我可以解析xferlog以获得所有完整的上传。像:
awk '($12 ~ /^i$/ && $NF ~ /^c$/){print $9}' /var/log/proftpd/xferlog
这将使pyinotify不必要的,因为我可以得到的路径,完全和不完全上传,如果我只尾巴日志。
所以我的解决方案是检查我的运行循环中的xferlog,只处理完整的文件。
除非有最佳做法或者只是一个更好的方法来做到这一点?
这种方法的缺点是什么?
我在debian服务器上运行我的应用程序,proftpd安装在同一台服务器上。另外,我无法控制发送文件的客户端。
python脚本的基本目的是什么?它是清理用完的文件,在网页上显示状态还是其他的东西? –
现在阅读,发布一年后,这个问题似乎还不清楚。基本上我想在上载完成后用上传的文件做一些事情。但无法找到一种方式来使用proftpd来保证完整的上传而不阻止FTP REST命令。所以在问题出现的时候,我最终使用iNotify做了一个解决方案,并在写入时验证这些文件。 – JayLev