テール操作をサポートする圧縮形式はありますか?


12

tailed をサポートする圧縮形式を探しています。つまり、最後のXの非圧縮バイトを取得するためにファイル全体を読む必要はありません。これは、bzip2、xz、lzmaなどの任意の形式で可能ですか?

これを行うことができるgzipを使用して何かをコーディングしたことがあります。基本的に非常に高いレベルで、複数のgzipブロックをまとめて処理し、最後のブロックが開始するまでファイルの末尾から後方にシークできるユーティリティがありました。これらのファイルは標準のgzipユーティリティで完全に読み取り可能でしたが、もう少し標準化されたものが利用できることを望んでいます。

これの究極の目的は、圧縮されたファイルを書き出すことができtail、ディスクまたはネットワークからすべてが読み取られるのを待たずに(完全に書き込まれていない場合でもストリーミングできるように)ログファイルを作成できることです。

回答:


5

gzipには、基本的に同じこと行う--rsyncableオプションがあります。非標準の部分はgzip-block-aware "ztail"ユーティリティですが、すでにそれを処理したようです。


2
もちろん、このオプションを使用すると、-9を指定した場合でも、-0.5圧縮レベルなどに効果的に制限されます。
-psusi

これをサポートするgzipのバージョンはどこで入手できますか?ある時点でこれがオプションだった場合、削除されたように見えます。
パトリック

Debianベースのディストリビューションにはあります-これはUbuntu 10.04からです:root @ backup1:〜#gzip -V gzip 1.3.12 root @ backup1:〜#gzip -h | egrepのrsyncの--rsyncable rsyncのフレンドリーなアーカイブを作る
- wabbit

どうやら、他のディストリビューションのメンテナー(Fedoraなど)にもパッチが含まれているようです。そして、ここで古いgzipのパッチがあります:samba.org/netfilter/diary/gzip.rsync.patch。これは、実際に自己コンパイルする必要がある場合、わずかな修正を加えたより新しいバージョンに適用される可能性があります。
the-wabbit

ところで、特定のデータセットの燃費は異なる可能性がありますが、議論によると、圧縮への影響はごくわずかです(2〜3%以内)。deflateのような適応アルゴリズムで「テーラブル」圧縮が必要な場合、時々アルゴリズムをリセットする方法はほとんどありません-もちろん、これは圧縮効率の低下を引き起こします。
-wabbit

0

FWIW:gzipファイルのインデックスを作成するzlibのzran.cソースコードにコマンドラインツールを開発しました:https : //github.com/circulosmeos/gztool

-Tオプションでgzipファイルの連続した尾を作成できます。または、最後のコンテンツの最後尾で停止し-tます(他の多くのオプションが利用可能)。

これらのアクションのいずれについても、gztoolそのアクションでインターリーブされたインデックスファイルが作成されることに注意してください。

インデックスはいつでも中断でき、後で再利用または完了できます。またgztool、ファイル内の任意の場所からデータを抽出するように命じることができ、そのアクションでインターリーブされたインデックスを作成するため、それを使用するときに時間を無駄にすることはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.