给定原始未压缩文件,我可以准确地重新创建 gzip 文件吗?

给定原始未压缩文件,我可以准确地重新创建 gzip 文件吗?

我有一系列gzip文件,我希望使用 更有效地存储它们xz,而不丢失对 gzip 文件的一组校验和的可追溯性。

我相信这相当于能够从 xz 文件重新创建 gzip 文件,尽管我愿意接受其他建议。

详细说明...如果我有一个名为 的 gzip 文件target.txt.gz,并将其解压缩target.txt并丢弃压缩文件,我想完全重新创建原始压缩文件target.txt.gz。确切地说,我的意思是文件的加密校验和应该表明它与原始文件完全相同。

我最初认为这肯定是不可能的,因为 gzip 文件包含原始文件名和时间戳等元数据,这些元数据在解压时可能不会保留,而注释、源操作系统和压缩标志等元数据几乎肯定是可以保留的。解压后不保存。

但后来我想修改我的问题:是否有我可以从 gzip 文件中提取的最少量的标头信息,与未压缩的数据相结合,可以让我重新创建原始的 gzip 文件。

然后我想,由于诸如此类的工具的存在,答案可能仍然是否定的。佐普夫利7-拉链,它可以创建与 gzip 兼容的流,这些流比标准 gzip 程序更好(因此有所不同)。据我所知,gzip 文件格式不记录这些压缩器中的哪一个创建了它。

所以我的问题是:还有其他我没有想到的选择可能意味着我可以实现第一段中列出的目标吗?

答案1

这可能会有所帮助:https://github.com/google/grittibanzli

Grittibanzli 是一个将 deflate 流压缩为较小文件的工具,该文件可以再次解码为原始 deflate 流。也就是说,它不仅压缩 deflate 流内的数据,还压缩与 deflate 相关的信息,例如 LZ77 符号和霍夫曼树,以准确地再现 gzip、png 等文件。

相关内容