¿Gzip agrega integridad / verificación de CRC a un .tar?

12

Ejecuto comandos:

tar -cf myArchive.tar myDirectory/
gzip myArchive.tar

luego copio el archivo en muchos medios poco confiables y luego lo descomprimo usando:

tar -xzf myArchive.tar.gz

El hecho de que comprima la bola de alquitrán, ¿garantizará de alguna manera la integridad, o al menos un CRC del contenido desempaquetado?

Aksel Willgert
fuente

Respuestas:

15

taren sí mismo no anota una suma de verificación para una comparación posterior. Si tiene gzipel tararchivo puede tener esa funcionalidad.

tarusos compress. Si usa la -Zbandera mientras crea el archivo tar, usará el compressprograma al leer o escribir el archivo. Desde la página del gzipmanual:

El formato de compresión estándar no fue diseñado para permitir verificaciones de consistencia.

Pero, puedes usar el -zparámetro. Luego tarlee y escribe el archivo a través gzip. Y gzipescribe una suma de comprobación de crc. Para mostrar esa suma de verificación, use ese comando:

$ gzip -lv archive.tar.gz
method  crc     date  time           compressed        uncompressed  ratio uncompressed_name
defla 3f641c33 Sep 25 14:01               24270              122880  80.3% archive.tar

Desde la página del gzipmanual:

Cuando se utilizan los dos primeros formatos ( se entiende gzip o zip ), gunzip comprueba un CRC de 32 bits.

caos
fuente
5

Sí, el formato de archivo gzip contiene una suma de verificación CRC-32 que se puede usar para detectar si el archivo está dañado.

Por supuesto, si bien la suma de comprobación le permite a gzip decirle que el archivo está dañado, en realidad no hace nada para ayudarlo a recuperar los datos dentro del archivo. Por lo tanto, es principalmente útil para cosas como verificar que un archivo que acaba de descargar de la web realmente se descargó correctamente.

Si realmente le preocupa almacenar o transmitir sus archivos a través de medios poco confiables, es posible que desee considerar usar un formato de archivo como par que realmente proporcione corrección de errores además de la detección de errores. Por supuesto, el lado negativo de dichos formatos es que la redundancia necesaria para la corrección de errores necesariamente aumenta un poco el tamaño del archivo.

Ilmari Karonen
fuente
4

tarno tiene una verificación de integridad. Ejemplo:

$ echo JJJJJJJJJJJJJJJJJJ > b
$ tar cvf a.tar b
$ sed -i s/JJJJJJJJJJJJJJJJJJ/tttttttttttttttttt/g a.tar
$ tar xvf a.tar
$ cat b

tttttttttttttttttt

Vea, el contenido del a.tararchivo cambió, por lo que el archivo btiene un contenido completamente diferente, pero tar no lo notó. Esto es cierto para cualquier tar, incluido tar-1.28 (último) con ambos formatos tar --format=gnu --format=posix. El paxcomando (lector de tar alternativo) pax -r < a.tartampoco nota cambios en el archivo.

usuario115641
fuente
2
El OP parece ser consciente (o al menos sospechoso) de que tar(al menos sin la -zopción) no realiza una comprobación de integridad. Además, la respuesta aceptada dice esto. La pregunta es: ¿ gzip(o el uso de la -zopción) agrega verificación de integridad?
G-Man dice 'Restablecer a Monica'
G-Man correcto, esta podría ser una respuesta correcta si también incluyera la parte gzip y demuestre que gzip detecta que el contenido ha cambiado.
Aksel Willgert
2

Si tar encuentra errores al desempacar, imprimirá un mensaje y saldrá con un valor de salida distinto de cero. Este comportamiento es independiente del algoritmo de compresión utilizado después de que se haya creado el archivo tar.

Si desea verificar que el archivo se envió correctamente al destino a través de un enlace poco confiable, cree una suma md5 del archivo antes de enviarlo y verifique la suma md5 después de la recepción.

ene
fuente
si solo estoy interesado en la integridad del contenido desempaquetado. ¿md5 en el alquitrán no agrega nada extra en comparación con el alquitrán de verificación durante el desempaquetado?
Aksel Willgert
La integridad del contenido dentro del archivo tar está a cargo de tarsí misma. Puede agregar una capa adicional si es necesario: si se verifica la integridad del archivo tar, entonces el contenido dentro del archivo tar también está bien. Pero todo eso debe ser atendido por el protocolo utilizado para transferir los datos en primer lugar.
Jan
-1

El paquete PKZip (win / dos) viene con un programa llamado PKZipFix que puede recuperar archivos de archivos dañados. He usado esta utilidad en el pasado, puede recuperar archivos de archivos moderadamente dañados que no se descomprimirían.

user87282
fuente