Estimation incorrecte du fichier non compressé?


9

J'avais un gros fichier compressé (~ 60G) ( tar.gz).

J'avais l'habitude splitde le diviser en 4 parties, puis catde les réunir à nouveau.

Cependant, maintenant, lorsque j'essaie d'estimer la taille du fichier non compressé, il s'avère qu'il est plus petit que l'original? Comment est-ce possible?

$ gzip -l myfile.tar.gz 
         compressed        uncompressed  ratio uncompressed_name
        60680003101          3985780736 -1422.4% myfile.tar

Est-ce splitvraiment pertinent pour cela? Avez-vous seulement le problème après les avoir séparés et réunis?
Barmar

Réponses:


20

Cela est dû à la taille du champ utilisé pour stocker la taille non compressée dans des fichiers compressés: ce n'est que 32 bits, donc gzipne peut stocker que des tailles de fichiers jusqu'à 4 Gio. Tout ce qui est plus grand est compressé et décompressé correctement, mais gzip -ldonne une taille non compressée incorrecte.

Donc, diviser l'archive tar et la reconstruire n'a pas causé cela, et n'aurait pas dû affecter le fichier - si vous voulez vous en assurer, vous pouvez le vérifier avec gzip -tv.

Voir le moyen le plus rapide de calculer la taille non compressée d'un gros fichier GZIPPED pour plus de détails et le gzipmanuel :

Le gzipformat représente la taille d'entrée modulo 2³² , de sorte que la taille et le taux de compression non compressés ne sont pas répertoriés correctement pour les fichiers non compressés de 4 Gio et plus.


Ainsi, le contenu réel peut toujours être intact, non?
Ruslan

@Ruslan oui, la taille affichée est fausse, mais le contenu est correct.
Stephen Kitt

+1 J'allais deviner que c'était une erreur UINT32 ou quelque chose comme ça.
mathreadler
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.