Vérifier la taille totale du contenu d'un fichier tar gz

Comment puis-je extraire la taille du total des données de fichier non compressé dans A.tar.le fichier gz de la ligne de commande?

41
demandé sur Ztyx 2010-04-26 12:59:32

7 réponses

si vous voulez faire cela à partir de la ligne de commande, vous pouvez essayer le -l option gzip:

$ gzip -l compressed.tar.gz
     compressed        uncompressed  ratio uncompressed_name
            132               10240  99.1% compressed.tar
47
répondu Matthew Mott 2010-04-30 12:15:31

ceci additionnera la taille totale du contenu des fichiers extraits:

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

La sortie est donnée en octets.

Explication: tar tzvf liste les fichiers dans l'archive en format verbeux comme ls -l. sed et cut isoler le champ Taille du fichier. Le deuxième sed met un + devant toutes les tailles sauf le premier et paste les concaténate, donnant une expression de somme qui est ensuite évaluée par bc.

notez que cela ne comprend pas les métadonnées, donc l'espace disque occupé par les fichiers lorsque vous les extrayez va être plus grand - potentiellement beaucoup plus grand si vous avez beaucoup de très petits fichiers.

26
répondu Ztyx 2012-08-14 22:33:43

La commande gzip -l archive.tar.gz ne fonctionne pas correctement avec des tailles de fichier supérieures à 2 Go. Je recommanderais zcat archive.tar.gz | wc --bytes au lieu de cela pour de très gros fichiers.

21
répondu swdev 2013-04-11 17:39:19

Utilisez la commande suivante:

tar -xzf archive.tar.gz --to-stdout|wc -c
3
répondu elec3647 2013-06-02 23:45:52

je sais que c'est une vieille réponse; mais j'ai écrit un outil pour cela il y a deux ans. Il est appelé gzsize et il vous donne la taille non compressée d'un gzip ed fichier sans décompression de l'ensemble du fichier sur le disque:

$ gzsize <your file>
1
répondu bfontaine 2016-10-25 17:18:27

je trouve tout les sites dans le web, et ne résolvez pas ce problème la taille get lorsque la taille du fichier est plus grand de 4 Go.

d'abord, lequel est le plus rapide?

[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

certainement, tar-xvf est la plus rapide, mais ¿comment annuler des exécutions après avoir récupérer l'en-tête?

ma solution est-ce:


[oracle@base tmp]$  time echo $(timeout --signal=SIGINT 1s tar -tvf oracle.20180303.030001.dmp.tar.gz | awk '{print }') | grep -o '[[:digit:]]*' | awk '{ sum +=  } END { print sum }'
    6667023572

    real    0m1.005s
    user    0m0.013s
    sys     0m0.066s

0
répondu RaZieRSarE 2018-03-08 21:59:04

un fichier tar n'est pas compressé tant qu'il n'est pas filtré par un autre programme, tel que gzip, bzip2, lzip, compress, lzma, etc. La taille du fichier tar est la même que celle des fichiers extraits, avec probablement moins de 1kb d'informations d'en-tête ajoutées pour en faire une boule de goudron valide.

-1
répondu Tom S 2011-06-06 09:02:38