2
我期待调度FTP文件传输,但节省带宽,我想只能上传已更改的文件。什么是一种很好的可靠的方式来做到这一点,将在各种不同的托管服务提供商工作?Python ftplib:检查文件是否已更改的最佳方法?
我期待调度FTP文件传输,但节省带宽,我想只能上传已更改的文件。什么是一种很好的可靠的方式来做到这一点,将在各种不同的托管服务提供商工作?Python ftplib:检查文件是否已更改的最佳方法?
首先,检查,以查看本地文件是否真的变了没有任何与FTP。你说的是你只打开一个FTP连接来上传文件,如果/当它发生了变化。
在高层次上,您需要使用的基本策略是跟踪应用程序上次检查更改的时间(以前的执行时间戳),并将其与您感兴趣的文件的时间戳进行比较在上传。如果文件上的时间戳更新,它们很可能已经改变。我说很可能是因为可以只更新时间戳(例如,unix/linux上的touch
)。
这里是你展示如何检查修改时间对于所有在特定目录中的项目的一个简单的例子:
import os, time
checkdir="./"
for item in os.listdir(checkdir):
item_path = "%s%s"%(checkdir,item)
mtime = os.path.getmtime(item_path)
print "%s: %s" %(item_path,mtime)
请注意,这并不文件类型之间的区别(如普通文件,目录,符号链接)。阅读docs on os.path以了解如何确定文件类型,以便您可以跳过某些类型(如果您愿意的话)。
您仍然需要提出逻辑来存储先前'扫描'的时间,以便在后续扫描中引用它。一个非常简单的方法是将值存储在文件中。
确保您在使用的情况下锁定策略二“扫描”重叠区。 FTP上传需要一些时间才能完成。