检查tar gz文件的总内容大小

如何从命令行提取.tar.gz文件中的未压缩文件数据的总大小?

如果您想从命令行执行此操作,则可以尝试使用-l选项来进行gzip

$ gzip -l compressed.tar.gz compressed uncompressed ratio uncompressed_name 132 10240 99.1% compressed.tar 

这将总结提取的文件的总内容大小:

 $ tar tzvf archive.tar.gz | sed 's/ \+/ /g' | cut -f3 -d' ' | sed '2,$s/^/+ /' | paste -sd' ' | bc 

输出以字节为单位给出。

说明: tar tzvf以详细格式(如ls -l列出存档中的文件。 sedcut隔离文件大小字段。 第二个sed在每个尺寸的前面放一个+, paste它们连接起来,给出一个总和expression式,然后由bc进行求值。

请注意,这不包括元数据,因此当您提取文件时,文件占用的磁盘空间会更大 – 如果您有很多非常小的文件,则可能会多出许多倍。

命令gzip -l archive.tar.gz在文件大小大于2Gb时无法正常工作。 我会推荐zcat archive.tar.gz | wc --bytes zcat archive.tar.gz | wc --bytes而不是真正的大文件。

使用以下命令:

 tar -xzf archive.tar.gz --to-stdout|wc -c 

我知道这是一个古老的答案; 但两年前我写了一个工具。 它被称为gzsize ,它给你一个gzip'ed文件的未压缩大小,而不需要实际解压缩光盘上的整个文件:

 $ gzsize <your file> 

一个tar文件是未压缩的,直到/除非通过其他程序(如gzip,bzip2,lzip,compress,lzma等)进行过滤。tar文件的文件大小与提取的文件相同,可能小于1kb标题信息添加到使其成为一个有效的tarball。