Une fois un fichier compressé, y a-t-il un moyen de l'interroger rapidement pour dire quelle est la taille du fichier non compressé (sans le décompresser), en particulier dans les cas où le fichier non compressé a une taille> 4 Go.
Selon la RFC https://tools.ietf.org/html/rfc1952#page-5, vous pouvez interroger les 4 derniers octets du fichier, mais si le fichier non compressé était> 4 Go, la valeur représente simplement leuncompressed value modulo 2^32
Cette valeur peut également être récupérée en exécutant gunzip -l foo.gz
, mais la colonne "non compressée" contient juste à uncompressed value modulo 2^32
nouveau, probablement pendant la lecture du pied de page comme décrit ci-dessus.
Je me demandais simplement s'il y avait un moyen d'obtenir la taille du fichier non compressé sans avoir à le décompresser au préalable, cela serait particulièrement utile dans le cas où les fichiers compressés contiennent plus de 50 Go de données et prendraient un certain temps pour décompresser en utilisant des méthodes comme gzcat foo.gz | wc -c
EDIT: La limitation de 4 Go est ouvertement reconnue dans la man
page de l' gzip
utilitaire inclus avec OSX ( Apple gzip 242
)
BUGS
According to RFC 1952, the recorded file size is stored in a 32-bit
integer, therefore, it can not represent files larger than 4GB. This
limitation also applies to -l option of gzip utility.
gzip
est sorti en 1992. Je serais surpris s'il y avait beaucoup de jeunes de 23 ans qui errent ici. Je suis sûr qu'il y en a mais d'après ce que je peux dire, l'âge médian se situe autour de 30-35 ans.
xz
qui n'a pas cette limitation. GNU passe à xz
.
xz
cela «résoudrait» ce problème.
gzip
doit être plus âgé que de nombreux utilisateurs de cette communauté!