我们有一个 ftp 系统设置来监控/从不受我们控制的远程 ftp 服务器下载。该脚本连接到远程 ftp,并获取服务器上文件的文件名,然后我们检查它是否已下载。如果尚未下载,则我们下载文件并将其添加到列表中。
我们最近遇到了一个问题,远程 ftp 端的某个人将复制一个巨大的单个文件(> 1GB),然后脚本将唤醒并看到一个新文件并开始下载正在复制的文件。
检查这个的最好方法是什么?我想抓住文件大小等待几秒钟再次检查文件大小,看看它是否增加了,如果没有,那么我们下载它。但是由于时间很重要,我们不能为每个文件集等待几秒钟,看看它的文件大小是否增加了。
最好的方法是什么,目前一切都是通过pythons ftplib完成的,除了使用上述方法之外,我们怎么能做到这一点。
让我再次重申这一点,我们对远程 ftp 站点的控制为 0。
谢谢。
更新1:
我在想如果我尝试重命名它会怎样......因为我们对 ftp 拥有完全权限,如果文件上传正在进行中,重命名命令会失败吗?
我们在这里没有任何真正的选择……是吗?
UPDATE2:这里有一些有趣的东西,我们测试过的一些 ftps 似乎会在传输开始后自动分配空间。
例如,如果我将一个 200mb 的文件传输到 ftp 服务器。如果我连接到 ftp 服务器并在上传时进行大小调整,则传输处于活动状态。它显示大小为 200mb。即使文件只完成了 10%。
权限似乎也是随机设置的,IIS 附带的 FTP 服务器在文件复制完成后设置权限。而其他一些较旧的 ftp 服务器会在您发送文件时立即设置它。
:'(