是否有压缩格式可以原位更新内容?

时间:2019-08-26 19:13:15

标签: zip compression gzip tar 7zip

zip格式不允许就地更新。要替换zip中的文件,必须复制原始zip文件,然后将这些文件原样复制,只要将更新后的文件复制到新的zip文件中即可。

其他人(例如tar.gz)也不允许就地替换,

是否存在一种压缩格式,可以本地进行就地更新?

我不确定7z。有人熟悉吗?

1 个答案:

答案 0 :(得分:0)

除了压缩的文件系统外,这可能没有以任何压缩格式实现。

原因很简单:数据不能以固定的速率压缩,因此通过更改输入数据,输出数据的大小可以更改。例如,如果首先输入1000个零字节的字符串,则可以将它们完美地压缩(例如,使用gzip压缩为29个字节)。如果现在将它们更改为1000字节的随机内容(白噪声),则根本无法对其进行压缩(由于添加了一些标头字节,gzip通常会产生1023字节的输出)。

如果我们正在谈论压缩包装的组合(例如ZIP,TGZ或类似的东西),这将意味着在文件中间插入更多字节,因此,将所有字节移至该位置之后。另一方面,这种转换操作并不是当前操作系统所准备的。 (至少Unix和Windows都不允许这样做。)结果是复制了当场实现的所有内容。这效率不高,因此不可行。

可以设计一种允许插入的文件格式,可以将其添加到文件的末尾,但我从未听说过这种情况。

如果使用压缩文件系统,则无论其位置如何,都可以更改其中的任何文件。并将其作为单个文件发送,您可以发送存储在其中的块设备的内容。

查看此任务的fusecompress文件系统。我认为该项目已被放弃,但也许您可以在某个地方找到有效的快照。