Можно ли получить размер, который займет tgz после извлечения, но без его извлечения? Я в основном хочу
tar tzf file.tgzwith sizes beside them. I'm really looking for a total, so a solution that gives total size but not specific file sizes would work.
Если он был сжат с использованием сжатия gzip, вы можете сделать что-то вроде:
gunzip -l filename.tar.gz
Поскольку tar не сжимается, это должно дать вам необходимую информацию.
Хм, я бы предпочел что-то вроде:
tar vtzf somefile.tar.gz |awk '{SUM += $3} END {print SUM}'
zcat file.tgz | wc -c
Дает вам количество символов, занятых несжатым файлом .tar, которое будет очень близко к правильному.
Я нахожу все сайты в Интернете и не решаю эту проблему, когда размер файла превышает 4 ГБ.
во-первых, что быстрее?
[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
определенно, tar -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