De acuerdo con la especificación de gz, el tamaño del archivo se guarda en los últimos 4 bytes de un archivo .gz.obtener el tamaño de archivo del archivo .gz muy grande en una plataforma de 64 bits
He creado 2 archivos con
dd if=/dev/urandom of=500M bs=1024 count=500000
dd if=/dev/urandom of=5G bs=1024 count=5000000
les gziped
gzip 500M 5G
Comprobé los últimos 4 bytes haciendo
tail -c4 500M|od -I (returns 512000000 as expected)
tail -c4 5G|od -I (returns 825032704 as not expected)
Parece que golpear la barrera de 32 bits invisibles, hace que el valor escrito en el ISIZE sea completamente absurdo. Lo cual es más molesto, que si hubieran usado algún bit de error en su lugar.
¿Alguien sabe de una forma de obtener el tamaño de archivo .gz sin comprimir del .gz sin extraerlo?
gracias
especificación: http://www.gzip.org/zlib/rfc-gzip.html
edición: si alguien para probarlo, se puede usar/dev/cero en lugar de/dev/urandom
'dd buscan 10G = if =/dev/zero of = count = out.dat 0' es más práctico para la mayoría de los sistemas de archivos – nodakai