Se for compactado usando a compactação gzip, você poderá fazer algo como:
gunzip -l filename.tar.gz
Como um tar não é compactado, isso deve fornecer as informações necessárias.
É possível obter o tamanho que um tgz ocupará quando for extraído, mas sem extraí-lo? Eu basicamente quero
tar tzf file.tgzcom tamanhos ao lado deles. Eu estou realmente procurando um total, portanto, uma solução que ofereça tamanho total, mas não tamanhos de arquivo específicos, funcionaria.
Hm eu preferiria algo como:
tar vtzf somefile.tar.gz |awk '{SUM += $3} END {print SUM}'
zcat file.tgz | wc -c
Fornecerá o número de caracteres utilizados pelo arquivo .tar descompactado, que estará bem próximo da correção.
Estou a encontrar todos os sites na Web e não resolvo este problema quando o tamanho do ficheiro for superior a 4 GB.
primeiro, o que é mais rápido?
[oracle@base tmp]$ time zcat oracle.20180303.030001.dmp.tar.gz | wc -c 6667028480 real 0m45.761s user 0m43.203s sys 0m5.185s
[oracle@base tmp]$ time gzip -dc oracle.20180303.030001.dmp.tar.gz | wc -c 6667028480 real 0m45.335s user 0m42.781s sys 0m5.153s
[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 real 0m46.669s user 0m44.347s sys 0m4.981s
definitivamente, tar -xvf é o mais rápido, mas ¿Como cancelar execuções depois de obter o cabeçalho?
minha solução é esta :
[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