如何通过SFTP连接下载部分文件?

时间:2013-07-18 15:59:20

标签: python file sftp chilkat

所以我有一个Python程序从远程服务器提取访问日志并处理它们。每天都有单独的日志文件。服务器上的文件采用以下格式:

access.log
access.log-20130715
access.log-20130717

文件“access.log”是当天的日志文件,并在全天使用新数据进行修改。附加时间戳的文件是归档日志文件,不会被修改。如果目录中的任何文件被修改,则可能是因为(1)数据被添加到“access.log”文件,或者(2)“access.log”文件被存档,并且是空的文件取代它的位置。每分钟左右,我的程序会检查目录中任何文件的最新修改时间,如果更改,则会下拉“access.log”文件和任何新归档的文件

目前所有这些都可行。但是,如果在一天中将大量数据添加到日志文件中,为了获取文件末尾的一些数据而反复下载整个内容将在网络上产生大量流量,我会喜欢避免这种情况。有没有办法只下载文件的一部分?如果我已经处理过,比如1 GB的文件,另外500个字节突然被添加到日志文件中,有没有办法只在最后下载500个字节?

我正在使用Python 3.2,我的本地计算机正在运行Windows,而远程服务器都运行Linux。我正在使用Chilkat来建立SSH和SFTP连接。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

调用ResumeDownloadFileByName。以下是Chilkat参考文档中方法的描述:

  

恢复SFTP下载。检查localFilePath的大小   下载从remoteFilePath中的适当位置开始。   如果localFilePath为空或不存在,则此方法为   与DownloadFileByName相同。如果localFilePath已经完全   下载,然后没有下载其他数据,方法将   返回True。

请参阅http://www.chilkatsoft.com/refdoc/pythonCkSFtpRef.html

答案 1 :(得分:0)

您可以这样做,或者您可以通过将最新的日志文件拆分为数小时或数十分钟来大幅降低复杂性。