如何修改gzip压缩文件

时间:2014-01-26 18:13:52

标签: linux file gzip compression data-compression

我有一个gzip压缩文件(100GB无压缩40GB压缩文件)。现在我想修改一些字节/字节范围 - 我不想改变文件大小。

例如 字节8 + 10和字节5000 - 40000

这可以不重新压缩整个文件吗?

的Stefan

3 个答案:

答案 0 :(得分:1)

是否要更改文件大小没有区别(因为生成的gzip不会根据原始文件大小进行布局),但是如果将压缩文件拆分为多个部分以便修改要修改的部分在单独的块中,使用多文件压缩方法而不是单文件gzip方法,您可以只更新已更改的文件而无需解压缩和压缩整个文件。

在你的例子中:

bytes1-7.bin        \
bytes8-10.bin        \ bytes.zip
bytes11-4999.bin     /
bytes5000-40000.bin /

然后您可以更新bytes8-10.binbytes5000-40000.bin,但不能更新其他两个。但这是否需要更少的时间是可疑的。

答案 1 :(得分:0)

总之,没有。有必要用具有完全相同的总位数但具有不同内容的新块替换一个或多个放气块。如果新数据在压缩时压缩性较差,则无法实现。即使它更易于压缩,也需要手动进行大量操作以尝试使位匹配。它仍然可能是不可能的。

答案 2 :(得分:-1)

gzip的手册页说"如果您希望创建一个包含多个成员的存档文件,以便以后可以独立提取成员,请使用tar或zip等存档文件。"我认为这意味着gzip压缩继续通过文件,因此是上下文相关的,因此不允许你想要的。

解压缩/补丁/重新压缩,或切换到数据的不同表示形式(可能是单独压缩文件的未压缩tar或zip,因此您只需要解压缩/重新压缩要更改的数据。)后者将一般而言,不要将数据存储得紧凑,但这是您必须做出的权衡。