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
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.
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.
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