Comment puis-je extraire la taille totale des données de fichier non compressées dans un fichier .tar.gz à partir de la ligne de commande?Vérification de la taille totale du contenu d'un fichier tar gz
Répondre
Cela somme la taille du contenu total 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
répertorie les fichiers dans l'archive au format verbeux comme ls -l
. sed
et cut
isolent le champ de taille de fichier. Le second sed
place un + devant chaque taille sauf la première et paste
les concatène, donnant une expression de somme qui est ensuite évaluée par bc
. Notez que cela n'inclut pas les métadonnées, donc l'espace disque occupé par les fichiers lorsque vous les extrayez sera plus grand - potentiellement beaucoup plus grand si vous avez beaucoup de très petits fichiers.
Ou un peu plus concis: 'tar tzvf archive.tar.gz | awk '{s + = $ 3} FIN {print (s/1024/1024), MB}' '. – Rubens
Si vous voulez faire de la ligne de commande, vous pouvez essayer l'option -l à gzip:
$ gzip -l compressed.tar.gz
compressed uncompressed ratio uncompressed_name
132 10240 99.1% compressed.tar
Cela me donne la taille du fichier tar y compris les méta-données de fichiers tels que les noms de fichiers, etc. Je cherchais un moyen de vérifier uniquement la taille totale des fichiers.Quoi qu'il en soit, la seule façon de le faire semble être d'extraire le fichier tar et d'exécuter un script sur le contenu extrait. – Ztyx
En fait, cela pourrait être suffisant. Vous aurez également besoin d'espace pour les inodes de dossier, qui peuvent varier pour différents systèmes de fichiers. De plus, 'tar -tf ...' avec une taille réelle de comptage ** lancera gzip -d ** sur le fichier complet, donc vous extrayez réellement tar. ** gzip -l ** indiqué ici ne sera pas extrait, donc c'est assez rapide. –
Dans mon cas, cela me donne une taille de décompression qui est inférieure à la compression et un ratio négatif. – lefterav
Un fichier tar est non compressé jusqu'à ce que/à moins qu'il ne soit filtré à travers un autre programme, comme gzip, bzip2, lzip, compress, lzma, etc. La taille du fichier tar est la même que celle des fichiers extraits, avec probablement moins de 1 Ko d'informations d'en-tête ajoutées pour en faire une archive tar valide.
Il y a un en-tête de 512 octets pour chaque fichier à l'intérieur de l'archive, plus les fichiers internes sont complétés pour être un multiple de 512 octets. Cela équivaut à un surcoût moyen de 768 octets par fichier à l'intérieur de l'archive. –
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
à la place pour les fichiers vraiment volumineux.
Je crois que 'gzip -l' ne fonctionne pas avec une taille de fichier supérieure à ** 4 Go **, car gzip n'utilise que 4 octets pour stocker la taille du fichier d'origine. – kevin
En regardant la source de gzip.c, il semble que ce soit un off_t qui est une valeur de 4 octets signée, donc 2GB maximum. – swdev
La spécification gzip (https://www.ietf.org/rfc/rfc1952.txt) indique que le champ ISIZE doit être la taille du fichier d'origine modulo 2^32, je ne sais pas pourquoi gzip utilise un int signé ... – kevin
Utilisez la commande suivante:
tar -xzf archive.tar.gz --to-stdout|wc -c
Je sais que c'est une vieille réponse; mais j'ai écrit un outil juste pour cela il y a deux ans. Il est appelé gzsize
et il vous donne la taille non compressée d'un fichier gzippé sans décompresser réellement le fichier entier sur le disque:
$ gzsize <your file>
Je trouve des sites tout dans le web, et ne résolvent pas ce problème, la obtenir la taille lorsque la taille du fichier est supérieure à 4 Go.
d'abord, ce qui est le plus rapide?
[[email protected] tmp]$ time zcat oracle.20180303.030001.dmp.tar.gz | wc -c 6667028480 real 0m45.761s user 0m43.203s sys 0m5.185s
[[email protected] tmp]$ time gzip -dc oracle.20180303.030001.dmp.tar.gz | wc -c 6667028480 real 0m45.335s user 0m42.781s sys 0m5.153s
[[email protected] 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 le plus rapide, mais ¿comment annuler les exécutions après obtiennent en-tête?
ma solution est ce:
[[email protected] 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 real 0m1.005s user 0m0.013s sys 0m0.066s
- 1. 7z obtenir la taille totale du contenu décompresser?
- 2. Vérification de la taille du fichier avant de le télécharger
- 3. Client Vérification de la taille du fichier en utilisant HTML5?
- 4. Vérification du contenu USB
- 5. obtenir la taille de fichier de très grand fichier .gz sur une plate-forme 64 bits
- 6. Obtenir de gros contenus de fichiers TAR (gz) par niveaux de répertoire
- 7. Déterminer la taille totale du répertoire/tronc SVN
- 8. Vérification de la fin de la copie du fichier
- 9. Comment télécharger et décompresser un fichier sitemap gz dans C#?
- 10. Vérification de la taille du téléchargement avant téléchargement
- 11. Lors d'un téléchargement FTP, la taille totale du fichier est-elle envoyée?
- 12. Lire un fichier gz avec php
- 13. lecture du contenu du fichier tar sans le débloquer, en script python
- 14. Extension Firefox pour la taille totale de la page?
- 15. Détection de la taille du contenu du SWFLoader
- 16. Fichier écrasé avec tar
- 17. Comment obtenir la taille du contenu WebView
- 18. Vérification du fichier téléchargé
- 19. Vérification du nom de fichier
- 20. Vérification jQuery du contenu de la liste de sélection
- 21. Calculer la taille totale de tous les fichiers à télécharger
- 22. Erreur HTTP 401.3 sur fichier créé .gz
- 23. Augmenter animée taille du contenu
- 24. Décompresser une partie d'un fichier .gz en utilisant python
- 25. Liste du contenu d'un fichier tar ou d'un répertoire seulement jusqu'à un certain niveau
- 26. Divs partageant la taille totale (pas le pourcentage)
- 27. Réduire la taille du fichier de pdf
- 28. La taille du fichier de jQuery
- 29. Gestion de la taille du fichier .git
- 30. Vérification du contenu des critères NHibernate
A partir d'un script shell, en Java, C, C++, C#, quoi? –
Désolé de ne pas être clair, je voulais dire par shell de ligne de commande. – Ztyx