Continuar con ddrescue desde un archivo de registro dañado

Continuar con ddrescue desde un archivo de registro dañado

Ejecuté ddrescue hace unos días en mi partición de 180 GB, pero después de 3 días (y 99,91 % de rescate y en la fase 3 la última vez que revisé) el sistema se congeló, así que apago la computadora manteniendo presionado el botón de apagado.

Cuando lo encendí, hice una copia de seguridad del archivo de imagen y del archivo de registro, pero el archivo de registro no se copió por completo, decía que hubo un error al copiar, pero se copiaron 104 kb de 106 kb del archivo de registro (cosa rara ).

Y cuando volví a ejecutar el comando ddrescue, apareció un mensaje que decía "error en el archivo de mapa discoC.Logfile, línea 4092".

dominio:

sudo ddrescue -d -r0 /dev/sdb3 discoC.img discoC.Logfile

Este es miarchivo de registro incompleto en PasteBin, la línea 4092 es la última. Esta es una parte del archivo de registro:

# Mapfile. Created by GNU ddrescue version 1.23
# Command line: ddrescue -d -r0 /dev/sdb3 discoC.img discoC.Logfile
# Start time:   2021-12-15 01:56:33
# Current time: 2021-12-18 20:11:51
# Scraping failed blocks... (forwards)
# current_pos  current_status  current_pass
0xC5A65E00     /               1
#      pos        size  status
0x00000000  0x00003400  -
0x00003400  0x00000200  +
0x00003600  0x00000800  -

0x00003E00  0x00000800  +

0x00004600  0x00000200  -

0x00004800  0x00000200  +

0x00004A00  0x00000400  -

....... (Lot of - and +)........

0xC564C600  0x00000400  +
0xC564CA00  0x00000600  -
0xC564D000  0x00000200  +
0xC564D200  0x00000200  -
0xC564D400  0x00000800  +
0xC564DC00  0x00000400  -
0xC564E000  0x00000600  +
0xC564E600  0x00000200  -
0xC564E800  0x00001A00  +
0xC5650200  0x00000200  -
0xC5650400  0x00000E00  +
0xC5651200  0x00000200  -
0xC

¿Me podrían ayudar para que el proceso pueda continuar desde allí?

Respuesta1

De acuerdo ahttps://www.electric-spoon.com/doc/gddrescue/html/Mapfile-structure.htmlEl archivo de mapas (archivo de registro) es bastante fácil de interpretar y editar con un editor de texto.

Me inclinaría por hacer una copia y eliminar las líneas 4091 y 4092, lo que espero permitirá que ddrescue continúe desde el último punto que registró.

Parece estar fallando muchísimo. Me pregunto si ejecutarlo desde el final hacia atrás (es decir, agregar el modificador -R) le permitiría capturar una gran cantidad de datos más rápidamente. (No hay nada de malo en intentar hacer esto).

Respuesta2

Perdón por leer la pregunta tan tarde.

Sería fácil restaurar algo válido para la línea 4092 que falta:

0xC5651400 <remaining-size> ?

Dónde:

  • 0xC5651400es el comienzo del nuevo fragmento de bloques, que se obtiene sumando la posición inicial del fragmento anterior en la línea 4091 0xC5651200y el tamaño de ese fragmento de bloques 0x00000200.
  • ?lo que significa que los bloques que comienzan en 0xC5651400no se han probado aún y, por lo tanto, se debe intentar clonarlos.
  • <remaining size>: vea abajo.

Cómo calcular el valor de <remaining size>:

  • si hay una línea 4093 en su archivo de registro: la diferencia entre el desplazamiento inicial en las líneas 4093 y el desplazamiento inicial calculado mencionado en la línea 4092 (es decir 0xC5651400), en hexadecimal
  • o, si no hay una línea 4093: la diferencia entre el tamaño de su dev/sdb3partición y el desplazamiento inicial en la línea 4092 (es decir 0xC5651400).

El tamaño de su dev/sdb3partición se puede conocer mediante comandos de terminal como fdisk -lo iniciando un proceso de clonación en un archivo de imagen diferente y, sin un archivo de registro, un archivo de registro diferente. ddrescue debería mostrar un mensaje como "A punto de copiar N bytes". Es posible que tengas que dividirlo por tamaño de sector (por ejemplo, 512) y convertirlo a hexadecimal.

información relacionada