1

所以我有一个 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 连接。任何帮助将不胜感激!

4

2 回答 2

1

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

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

http://www.chilkatsoft.com/refdoc/pythonCkSFtpRef.html

于 2013-07-19T12:43:39.347 回答
0

你可以这样做,或者你可以通过将最新的日志文件分成几小时或几十分钟来大大降低你的复杂性。

于 2013-07-18T16:23:56.760 回答