Verificar la validez del archivo gz

13

¿Cómo puedo verificar la validez de un archivo gz? No tengo el hash del archivo, lo estoy usando gzip -tpero no devuelve ningún resultado.

Gracias

Noor
fuente

Respuestas:

22

El gzip -tcomando solo devuelve un código de salida al shell que indica si el archivo pasó la prueba de integridad o no.

Ejemplo (en un script):

if gzip -t file.gz; then
    echo 'file is ok'
else 
    echo 'file is corrupt'
fi

Agregar -vhará que realmente informe el resultado con un mensaje.

Ejemplo:

$ gzip -v -t file.gz
file.gz:        OK

Entonces el archivo está bien. Vamos a corromper el archivo (escribiendo el carácter 0en el byte 40 en el archivo) e intente nuevamente.

$ dd seek=40 bs=1 count=1 of=file.gz <<<"0"
1+0 records in
1+0 records out
1 bytes transferred in 0.000 secs (2028 bytes/sec)
$ gzip -v -t file.gz
file.gz:        gzip: file.gz: Inappropriate file type or format

La integridad de un archivo con respecto a su compresión no garantiza que el contenido del archivo sea ​​lo que usted cree que es. Si tiene una suma de verificación MD5 (o alguna suma de verificación similar) del archivo de quien lo proporcionó, entonces podría obtener una confirmación adicional de que el archivo no solo es un gziparchivo válido , sino también que su contenido es lo que espera. ser - estar.

Kusalananda
fuente
4

gzip -tno tiene ningún resultado, que no sea el código de retorno, si es un archivo comprimido gzip correcto.

Solo devuelve un error si lo está probando en algo que no es un archivo comprimido de gzip:

steamsrv@leviathan:~$ gzip -t commands.txt

gzip: commands.txt: not in gzip format

Conclusión: su archivo es casi seguro un archivo comprimido de gzip. Lo que no puedo decirte es si es el archivo exacto que crees que se supone que es, que es para lo que el hash sería útil ...

Shadur
fuente