检查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
列出存档中的文件。 sed
和cut
隔离文件大小字段。 第二个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。