题
我们有一个ftp系统设置程序来监测/下载遥ftp服务器是不是我们的控制之下。脚本连接到的遥ftp,并抓住文件名单服务器上的文件,然后我们检查,看看它的东西已经被下载。如果它还没有被下载了然后我们下载该文件并将它添加到名单。
我们最近碰到的一个问题,在那里别人的远程ftp方面,将复制在一个巨大的单一文件(>1GB)然后脚本会醒来看到一个新的文件和开始下载的文件,该文件是被复制。
什么是最好的方式来检查?我想抓住文件的尺寸等待几秒钟检查文件的尺寸,再次,看看它是否有所增加,如果它还没有然后,我们下载。但是,由于时间的关切,我们不能等了几秒钟对每一个文件集,并看到如果这是文件的大小有所增加。
什么是最好的方式去关于这一点,目前的一切是通过蟒蛇ftplib,我们怎么可以这样做除了使用上述方法。
又一次让我重申这一点,我们必须0控制在远程ftp站点。
谢谢。
更新1:
我想如果我试图重新命名...由于我们有充分的权限ftp,如果在文件上传中取得进展的重命名的命令失败?
我们没有任何真正的选择在这里...我们?
UPDATE2:很好这里的东西有趣的一些ftps我们测试了上似乎自动分配的空间一旦转移开始。
E.g。如果我传送一个200mb文件ftp服务器。虽然传活动,如果我连接到ftp服务器和做一个小时的上正在发生的事情。它显示了200兆流量的大小。虽然该文件是唯一喜欢的10%完成。
权限也似乎是随机设置的FTP服务器的附带IIS组的权限文件后完成的复制。虽然一些其他老年ftp服务器设它尽快发送文件。
:'(
解决方案
“该死的鱼雷!全速前进!”
只要下载该文件。如果它是一个大的文件,然后下载之后完成,只要是合理的,您的情况等,并继续从停止处下载。重复,直到没有更多的东西下载。
其他提示
当你说你有过服务器0控制和不能使你的客户后触发文件由S.洛特的建议,你必须处理与不完整的解决方案和风险不完整的文件传输,也许是等待了一会儿,之前和之后的文件大小进行比较。
您可以尝试重新命名如你所说,但你有0的控制,你不能肯定的是,FTP服务器管理员(或他们的继任者)不会改变平台或FTP服务器或限制您的权限。
对不起。
如果你正在处理多个文件,你可以同时得到所有的尺寸列表中,请等待10秒钟,看看哪些是相同的。无论是还是一样应该是安全的下载。
你不可能知道当操作系统复制完成。它可以慢下来,或等待。
对绝对的确定性,你真的需要两个文件。
- 大量的文件。
- 和一个小小的触发的文件。
他们可以乱的大量文件,所有他们想要的。但当他们接触的触发的文件,你在下载这两者。
如果你不能扳机,你必须平衡所需要的时间调查与所需要的时间来下载。
这样做。
得到一个清单。检查的时间戳。
检查的大小与以前的尺寸的文件。如果大小,甚至不是关闭的,它是被复制了现在。等待;环路上的这个步骤,直至大小靠近之前的大小。
虽然你没有完成:
a.获得的文件。
b.得到一个清单。检查的大小的新清单,以前的清单和你的文件。如果他们同意:你完成。如果他们不同意:文件改变而你是下载;你没有这样做。