2008-09-12 23 views
5

El método más común para corromper archivos comprimidos es realizar inadvertidamente una transferencia FTP de modo ASCII, lo que provoca la eliminación de varios de uno a uno de los caracteres CR y/o LF.¿Recuperar archivos zip o gzip corruptos?

Obviamente, hay pérdida de información, y la mejor manera de solucionar este problema es transferir de nuevo, en modo binario FTP.

Sin embargo, si se pierde el original, y es importante, ¿qué tan recuperables son los datos?

[En realidad, ya sé cuál creo que es la mejor respuesta (es muy difícil pero a veces es posible - publicaré más adelante), y las no respuestas comunes (muchos programas disponibles para reparar) CRCs sin reparar datos), pero pensé que sería interesante probar esta pregunta durante el período beta de stackoverflow, y ver si alguien más ha seguido la ruta de recuperación exitosa o ha descubierto herramientas que desconozco.]

Respuesta

4

De Bukys Software

Aproximadamente 1 de cada 256 bytes se conoce a corromper, y la corrupción es sabe que se producen sólo en bytes con el valor '\ 012'. Por lo tanto, la tasa de error de byte es 1/256 (0.39% de la entrada), y 2/256 bytes (0.78% de la entrada) son sospechosos. Pero como solo se ven afectados tres bits por byte, la tasa de error de bit es solo 3/(256 * 8): 0.15% es malo, 0.29% es sospechoso.

...

Un error en la entrada comprimido interrumpe el proceso de descompresión para todos los bytes posteriores ... El hecho de que la salida descomprimida es reconocible mal tan rápidamente es causa para la esperanza - una búsqueda para la respuesta correcta puede identificar respuestas incorrectas rápidamente.

En última instancia, varias técnicas fueron combinaron para extraer con éxito datos razonables a partir de estos archivos:

  • análisis específico del dominio de los campos y de las cadenas textuales
  • máquina de aprendizaje a partir de los datos anteriores con baja probabilidad de daños
  • Tolerancia al daño de archivos debido a otras causas (p. Ej.disco completo, mientras que la tala )
  • Lookahead para orientar la búsqueda a lo largo de los caminos de mayor probabilidad

Estas técnicas identifican el 75% de las reparaciones necesarias con certeza, y el resto se exploran más alto -probability- primero, para que reconstrucciones plausibles sean identificadas inmediatamente.

1

Puede intentar escribir una pequeña secuencia de comandos para reemplazar todas las CR con CRLF (suponiendo que la dirección de la eliminación fue CRLF a CR), intercambiándolas aleatoriamente por bloque hasta que tenga el crc correcto. Asumiendo que los datos no eran particularmente grandes, supongo que podría no usar toda tu CPU hasta que termine la muerte por calor del universo.

Como hay una pérdida de información definitiva, no sé si hay una mejor manera. La pérdida en la dirección CR a CRLF podría ser un poco más fácil de revertir.

Cuestiones relacionadas