Pregunta

Tengo un gran número de archivos en un archivo .tar.gz. Comprobando el tipo de archivo con el comando

file SMS.tar.gz

da la respuesta

gzip compressed data - deflate method , max compression

Cuando intento extraer el archivo con gunzip, después de un retraso recibo el mensaje

gunzip: SMS.tar.gz: unexpected end of file

¿Hay alguna forma de recuperar incluso una parte del archivo?

¿Fue útil?

Solución

¿Estás seguro de que es un archivo gzip? Primero ejecutaría 'archivo SMS.tar.gz' para validar eso.

Luego leería la la página del kit de herramientas de recuperación de gzip .

Otros consejos

La recuperación es posible pero depende de lo que causó la corrupción.

Si el archivo solo se trunca, obtener un resultado parcial no es demasiado difícil; simplemente ejecuta

gunzip < SMS.tar.gz > SMS.tar.partial

que dará algo de salida a pesar del error al final.

Si el archivo comprimido tiene bloques faltantes grandes, es básicamente imposible después del bloque defectuoso.

Si el archivo comprimido se corrompe sistemáticamente de forma pequeña (por ejemplo, transfiriendo el archivo binario en modo ASCII, lo que aplasta los retornos de carro y las nuevas líneas en todo el archivo), es posible recuperarlo pero requiere un poco de programación personalizada. Sólo vale la pena si no tiene absolutamente ningún otro recurso (sin copias de seguridad) y los datos valen mucho esfuerzo. (Lo he hecho con éxito.) Mencioné este escenario en una pregunta anterior .

Las respuestas para los archivos .zip difieren un poco, ya que los archivos zip tienen varios miembros comprimidos por separado, por lo que hay más esperanza (aunque la mayoría de las herramientas comerciales son más bien falsas, eliminan las advertencias al parchar los CRC, no a la recuperación de buena información). Pero su pregunta fue sobre un archivo .tar.gz, que es un archivo con un miembro grande.

Aquí hay un posible escenario que encontramos. Tuvimos un archivo tar.gz que no se descomprimiría, al intentar descomprimirlo se produjo el error:

gzip -d A.tar.gz
gzip: A.tar.gz: invalid compressed data--format violated

Descubrí que el archivo puede cargarse originalmente a través de una conexión ftp no binaria (no lo sabemos a ciencia cierta).

La solución fue relativamente simple utilizando la utilidad dos2unix de Unix

dos2unix A.tar.gz
dos2unix: converting file A.tar.gz to UNIX format ...
tar -xvf A.tar
file1.txt
file2.txt 
....etc.

Funcionó! Esta es una pequeña posibilidad, y tal vez valga la pena intentarlo, puede ayudar a alguien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top