是否可以在不提取 tgz 文件的情况下获取其提取后占用的大小?我基本上想要
tar tzf 文件.tgz旁边是大小。我真正想要的是总数,因此给出总大小而不是具体文件大小的解决方案是可行的。
答案1
如果它使用 gzip 压缩,您可以执行以下操作:
gunzip -l filename.tar.gz
由于 tar 未经过压缩,因此它应该会为您提供所需的信息。
答案2
嗯我更喜欢这样:
tar vtzf somefile.tar.gz |awk '{SUM += $3} END {print SUM}'
答案3
zcat file.tgz | wc -c
将为您提供未压缩的 .tar 文件占用的字符数,这将非常接近正确值。
答案4
我在网上找到了所有网站,但都没有解决文件大小大于 4GB 时获取大小的问题。
首先,哪个最快?
[oracle@base tmp]$ time zcat oracle.20180303.030001.dmp.tar.gz | wc -c 6667028480 实际 0 分 45.761 秒 用户 0m43.203s 系统 0分5.185秒
[oracle@base tmp]$ time gzip -dc oracle.20180303.030001.dmp.tar.gz | wc -c 6667028480 实际 0m45.335s 用户 0m42.781s 系统 0 分 5.153 秒
[oracle@base tmp]$ time tar -tvf oracle.20180303.030001.dmp.tar.gz -rw-r--r-- oracle/oinstall 111828 2018-03-03 03:05 oracle.20180303.030001.log -rw-r----- oracle/oinstall 6666911744 2018-03-03 03:05 oracle.20180303.030001.dmp 实际 0分46.669秒 用户 0m44.347s 系统 0 分 4.981 秒
确实,焦油-xvf是最快的,但是如何在获取标题后取消执行?
我的解决方案是这样的:
[oracle@base tmp]$ time echo $(timeout --signal=SIGINT 1s tar -tvf oracle.20180303.030001.dmp.tar.gz | awk'{print $3}') | grep -o'[[:digit:]]*'| awk'{ sum += $1} END { print sum }' 6667023572