Una vez que se comprime un archivo, ¿hay alguna forma de consultarlo rápidamente para decir cuál es el tamaño del archivo sin comprimir (sin descomprimirlo), especialmente en los casos en que el archivo sin comprimir tiene un tamaño> 4 GB.
De acuerdo con la RFC https://tools.ietf.org/html/rfc1952#page-5 , puede consultar los últimos 4 bytes del archivo, pero si el archivo sin comprimir era> 4 GB, entonces el valor solo representa eluncompressed value modulo 2^32
Este valor también se puede recuperar ejecutando gunzip -l foo.gz
, sin embargo, la columna "sin comprimir" solo contiene uncompressed value modulo 2^32
nuevamente, presumiblemente porque está leyendo el pie de página como se describe anteriormente.
Me preguntaba si hay una manera de obtener el tamaño del archivo sin comprimir sin tener que descomprimirlo primero, esto sería especialmente útil en el caso de que los archivos comprimidos contengan más de 50 GB de datos y tomaría un tiempo descomprimirlos usando métodos como gzcat foo.gz | wc -c
EDITAR: la limitación de 4 GB se reconoce abiertamente en la man
página de la gzip
utilidad incluida con 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
salió en 1992. Me sorprendería si hubiera muchos jóvenes de 23 años deambulando por aquí. Estoy seguro de que hay algunos, pero por lo que puedo decir, la edad promedio es de alrededor de 30-35.
xz
que no tiene esa limitación. GNU está cambiando a xz
.
xz
que 'resolvería' este problema.
gzip
debe ser mayor que muchos usuarios en esta comunidad!