我有一个很大(~60G)的压缩文件(tar.gz
)。
我曾经split
把它分成四部分,然后cat
将它们重新组合在一起。
但是,现在,当我尝试估计未压缩文件的大小时,结果发现它比原始文件小?这怎么可能?
$ gzip -l myfile.tar.gz
compressed uncompressed ratio uncompressed_name
60680003101 3985780736 -1422.4% myfile.tar
答案1
这是由 gzip 压缩文件中用于存储未压缩大小的字段大小引起的:它只有 32 位,因此gzip
只能存储最大 4 GiB 的文件大小。任何较大的内容都可以正确压缩和解压缩,但gzip -l
在 1.11 及更早版本中给出不正确的未压缩大小。
因此,分割 tarball 并重建它不会导致这种情况,也不应该影响文件 - 如果您想确定,您可以使用gzip -tv
.
看计算大型 GZIPPED 文件未压缩大小的最快方法了解更多详情,以及手册gzip
:
格式
gzip
表示输入大小模2立方,因此对于 4 GiB 及更大的未压缩文件,未压缩的大小和压缩率列出不正确。