我正在考虑安排FTP文件传输,但为了节省带宽,我想只上传已更改的文件。什么是一个很好的可靠方法,可以在各种不同的托管服务提供商上工作?
答案 0 :(得分:2)
首先,检查本地文件是否已更改确实与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上传需要一些时间才能完成。