1

そのため、リモート サーバーからアクセス ログを取得して処理する Python プログラムがあります。日ごとに個別のログ ファイルがあります。サーバー上のファイルは次の形式です。

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

ファイル「access.log」は当日のログ ファイルで、新しいデータで 1 日を通して変更されます。タイムスタンプが追加されたファイルはアーカイブされたログ ファイルであり、変更されません。ディレクトリ内のいずれかのファイルが変更された場合は、(1) データが「access.log」ファイルに追加されているか、(2) 「access.log」ファイルがアーカイブされてお​​り、空のファイルが代わります。私のプログラムは約 1 分ごとにディレクトリ内のファイルの最新の変更時刻をチェックし、変更された場合は「access.log」ファイルと新しくアーカイブされたファイルをプルダウンします。

現在、これらすべてが正常に機能しています。ただし、1 日を通して大量のデータがログ ファイルに追加される場合、ファイルの末尾にあるデータの一部を取得するためだけにすべてを何度もダウンロードすると、ネットワーク上に大量のトラフィックが発生します。それを避けたい。ファイルの一部だけをダウンロードする方法はありますか? 1 GB のファイルを処理済みで、さらに 500 バイトが突然ログ ファイルに追加された場合、最後に 500 バイトのみをダウンロードする方法はありますか?

私は Python 3.2 を使用しており、ローカル マシンは Windows を実行しており、リモート サーバーはすべて Linux を実行しています。SSH および SFTP 接続を確立するためにChilkatを使用しています。どんな助けでも大歓迎です!

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 に答える