压缩比

3

我有一个大小为20Gb的tar.gz文件,主要包含压缩的文本和图像文件。我想知道(在不解压文件的情况下)它在我的磁盘上需要多少空间。我该如何进行估算?

3个回答

3
在这种情况下,您需要解压 .gz 文件。 但您不需要将其存储或占用磁盘上的所有空间。
使用建议中提到的 gzip --list 不起作用。gzip 文件格式在末尾的四个字节中存储未压缩长度,因此只有在您确定某些其他方法确实具有小于 4 GB 的压缩长度的文件时,该方法才有用。 在这种情况下,由于压缩大小为 20 GB,您确定这不是那种情况。 因此,gzip 报告的长度是无用的。
要获取未压缩长度,请将 gzip 解压缩输出导入某个可以计算字节数的东西(例如 wc)。 例如:
gzip -dc < foo.tar.gz | wc -c

根据https://www.ietf.org/rfc/rfc1952.txt:ISIZE(输入大小)。这包含原始(未压缩)输入数据模2 ^ 32的大小。 - Martin Gergov

2

这个命令

gzip --list filename.gz

会告诉您原始未压缩文件的大小等信息,但不包括像 @MarkAdler 指出的原始文件大小为4GB或更大的情况。


1
唉,这种情况下那样做行不通。gzip会告诉你未压缩大小模2^32。因此,一个20GB的.gz文件将报告少于4GB的未压缩大小,这显然是错误的。 - Mark Adler

1

我有一堆压缩文件,需要知道它们的未压缩大小,所以我想到了以下命令:

find foo/*.gz -exec gzip -l '{}' \; |awk '{ sub(/uncompressed/, " "); print } {sum += $2} END {print sum}'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接