Cómo recuperar un tar (o un gzip) corrupto.
7 Enero, 2008 por PedroUno de los problemas que nos hemos encontrado al recuperar nuestro servidor, ha sido que el último backup del que disponíamos estaba corrupto, al intentar extraer su contenido, daba los siguientes errores:
tar: Skipping to next header
gzip: stdin: invalid compressed data–crc error
gzip: stdin: invalid compressed data–length error
tar: Child returned status 1
tar: Error exit delayed from previous errors
Esto nos dejaba practicamente sin datos fiables que recuperar, pero existe una aplicación llamada gzrecover que nos ha sacado del apuro. Esta herramienta recupera ficheros corruptos tarball y gzip, podéis descargar su versión para Unix aquí
Los pasos para recuperar el fichero son:
- Descargar, descomprimir y compilar la herramienta, para compilarla, ejecutamos make -f Makefile
- La ejecutamos con el gzip o el tar, gzrecover ficherocorrupto.tar.gz
- Esto generará un fichero .recovered, que necesitamos recuperar con cpio, cpio -F ficherocorrupto.tar.gz.recovered -i -v
Esto no nos recuperará la totalidad de los ficheros, pero sí gran parte de ellos.
Previamente habíamos intentado extraer el fichero utilizando la cláusula exclude en la instrucción tar, pero sin éxito. Podéis encontrar detalles de cómo excluir directorios, patrones o ficheros en este post de los foros de Ubuntu.