是否有支持尾部操作的压缩格式?


12

我正在寻找一种支持tailed 的压缩格式。这意味着您不必读取整个文件即可获得最后X个未压缩的字节。使用bzip2,xz,lzma等任何格式都可以吗?

我曾经用gzip编码一些可以做到的事情。从根本上讲,它的工作是将多个gzip块组合在一起,然后我有了一个util,可以从文件末尾向后搜索,直到最后一个块开始。这些文件可由标准的gzip实用程序完全读取,但是我希望可以提供一些标准化的文件。

这样做的最终目的是针对日志文件,我可以将其压缩后写出,然后再对tail它们进行写操作(即使它们尚未完全写入;即流式传输),而不必等待从磁盘或网络读取整个文件。

Answers:


5

gzip有一个--rsyncable选项,其作用基本相同。非标准部分将是gzip-block-aware的“ ztail”实用程序,但似乎您已经处理了它。


2
当然,即使您指定-9,该选项也会有效地将您限制为-0.5压缩级别。
psusi 2011年

您从哪里获得支持此功能的gzip版本?如果这是一个选择,则似乎已被删除。
Patrick

基于Debian的发行版确实具有它-这是从Ubuntu 10.04:root @ backup1:〜#gzip -V gzip 1.3.12 root @ backup1:〜#gzip -h | egrep rsync --rsyncable制作对rsync友好的存档
the-wabbit 2011年

显然,其他发行版维护者(例如Fedora)似乎也包含了补丁。这里有一个用于较旧的gzip的补丁程序:samba.org/netfilter/diary/gzip.rsync.patch,如果您确实需要自编译,它可能会应用到稍作修改的最新版本。
the-wabbit 2011年

顺便说一句,讨论表明对压缩的影响可以忽略不计(在2-3%以内),尽管特定数据集的里程可能会有所不同。如果您需要使用诸如deflate之类的自适应算法进行“适时”压缩,那么几乎没有办法不时地重置算法-当然,这会导致压缩效率下降。
the-wabbit 2011年

0

FWIW:我在zlib的zran.c源代码上开发了一个命令行工具,该工具可为gzip文件创建索引:https : //github.com/circulosmeos/gztool

它可以使带有-T选项的gzip文件连续尾部。或者只是最后一个内容的尾部并停止(带有-t许多其他选项)。

请注意,对于这些操作中的任何一个,gztool都会创建与该操作交错的索引文件。

索引可以随时中断,以后可以重用和/或完成。正如gztool可以命令从文件的任何位置提取数据,并创建与该操作交错的索引一样,使用它永远不会浪费时间。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.