Logging

是否有支持尾操作的壓縮格式?

  • September 15, 2019

我正在尋找一種支持被tail編輯的壓縮格式。這意味著您不必讀取整個文件即可獲得最後 X 個未壓縮字節。這對於 bzip2、xz、lzma 等任何格式是否可行?

我曾經使用 gzip 編寫了一些可以做到這一點的東西。基本上在一個非常高的水平上,它所做的是將多個 gzip 塊放在一起,然後我有一個工具可以從文件末尾向後搜尋,直到最後一個塊開始。這些文件可以被標準 gzip 實用程序完全讀取,但我希望有一些更標準化的東西可用。

這樣做的最終目的是用於我可以寫出壓縮的日誌文件,然後能夠寫入tail它們(即使它們尚未完全寫入;即流式傳輸),而無需等待從磁碟或網路讀取整個內容。

gzip 有一個 –rsyncable 選項,它的作用基本相同。非標準部分是支持 gzip-block 的“ztail”實用程序,但您似乎已經處理過這個問題。

FWIW:我在zlib 的zran.c原始碼上開發了一個命令行工具,它為 gzip 文件創建索引:https ://github.com/circulosmeos/gztool

它可以使用選項製作 gzip 文件的連續尾部-T。或者只是最後一個內容的尾部並停止,使用-t(許多其他選項可用)。

請注意,對於這些操作中的任何一個,都gztool將創建一個與該操作交錯的索引文件。

索引可以隨時中斷並在以後重新使用和/或完成。並且gztool可以命令從文件中的任何位置提取數據,並創建與該操作交錯的索引,使用它時永遠不會浪費時間。

引用自:https://serverfault.com/questions/312853