web-dev-qa-db-fra.com

Comment puis-je obtenir une taille de fichier (taille du fichier d'origine) dans .tar.gz sans le décompresser?

Je crée un fichier myfile.txt en fichier Zip à l'aide de la commande ci-dessous. Existe-t-il un moyen d'obtenir la taille du fichier d'origine 'myfile.txt' sans le décompresser?.

tar -czf myfile.tar.gz myfile.txt
2
αғsнιη

Pour obtenir la taille non compressée d'un fichier Zip, nous pouvons émettre gzip avec l'option --list ou -l

gzip -l mytext.txt.tar.gz

Cela donnera un résultat similaire à celui-ci

gzip -l mytext.txt.tar.gz
         compressed        uncompressed  ratio uncompressed_name
               1475                4608  68.4% mytext.txt.tar

Pour avoir la taille du fichier compressé, la taille non compressée et le taux de compression.

3
Takkat

Vous pouvez répertorier le contenu (y compris les tailles de fichier d'origine) du fichier tar à l'aide de:

tar -vtf myfile.tar.gz

Si vous voulez seulement myfile.txt:

tar -vtf myfile.tar.gz myfile.txt

Cela ne fonctionne que si vous ajoutez le chemin d'accès complet au fichier, sinon utilisez:

tar -vtf myfile.tar.gz | grep myfile.txt

Notez que tar devra décompresser l'archive pour accéder aux informations du fichier. Il vous cachera cependant cela.

Si vous avez spécifiquement besoin d'un moyen d'obtenir des fichiers méta-données sans avoir à décompresser l'archive entière, mieux vaut utiliser Zip pour stocker vos fichiers et vos répertoires. Zip utilise un "répertoire central" à la fin d'un fichier Zip qui stocke toutes les métadonnées du fichier.

1
NZD

Je trouve tous les sites sur le Web et ne résous pas le problème de la taille de fichier lorsque la taille du fichier est supérieure à 4 Go.

d'abord, lequel est le plus rapide?

 [Oracle @ base tmp] $ time zcat Oracle.20180303.030001.dmp.tar.gz | wc -c 
 6667028480 
 
 réel 0m45.761s 
 utilisateur 0m43.203s 
 sys 0m5.185s 
 [Oracle @ base tmp] $ time gzip -dc Oracle.20180303.030001.dmp.tar.gz | wc -c 
 6667028480 
 
 réel 0m45.335s 
 utilisateur 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 
 
 Valeur réelle 0m46. 669s 
 0m44.347s 
 Sys 0m4.981s 

définitivement, tar -xvf est le plus rapide, mais ¿comment annuler les exécutions après avoir en-tête?

ma solution est la suivante:

 
 [Oracle @ base tmp] $ time echo $ (délai d'expiration --signal = SIGINT 1s tar -tvf Oracle.20180303.030001.dmp.tar.gz | awk '{print $ 3}') | grep -o '[[: digit:]] *' | awk '{sum + = 1}} FIN {print sum}' 
 6667023572 
. 
 réel 0m1.029s. 
 utilisateur 0m0.012s 
 sys 0m0 .063s 
0
RaZieRSarE