¿Cómo editar el archivo de registro ddrescue para reanudarlo en un lugar determinado?

¿Cómo editar el archivo de registro ddrescue para reanudarlo en un lugar determinado?

Estoy intentando crear una imagen de un disco de 500 GB usando GNU ddrescuey usando el archivo de registro. Llegué a 420 GB y luego lo detuve con ctrl+c. Ejecuté el comando nuevamente después de un tiempo y comenzó de nuevo, a pesar de que había un archivo de registro.

El antiguo archivo de registro ha sido sobrescrito por ddrescue.

Como dije, mi archivo de imagen hasta ahora tiene 420 GB en un disco de 500 GB. ¿Cómo edito el archivo de registro o le digo ddrescueque se reanude desde aproximadamente 420 GB? Me tomó DÍAS de funcionamiento ddrescuellegar a 420 GB. No quiero reiniciar este proceso nuevamente.

Aquí está el archivo de registro:

# Mapfile. Created by GNU ddrescue version 1.21
# Command line: ddrescue /dev/sdd /media/myname/New Volume4/backup.dmg /media/myname/New Volume4/logfile.log
# Start time:   2016-05-17 13:08:39
# Current time: 2016-05-17 13:08:48
# Copying non-tried blocks... Pass 1 (forwards)
# current_pos  current_status
0x0C770000     ?
#      pos        size  status
0x00000000  0x0C770000  +
0x0C770000  0x7464496000  ?

Esto es lo que sudo fdisk -ldice para el disco que quiero crear una imagen:

Disk /dev/sdd: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 33553920 bytes
Disk identifier: 0xeea5da13

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1              63   976768064   488384001    7  HPFS/NTFS/exFAT

Respuesta1

El 0x0C770000número hexadecimal en su archivo de registro indica que se leyeron aproximadamente 200 MiB. Esto confirma su afirmación que ddrescueempezó de nuevo.

Para modificar, primero obtenga el tamaño casi de su imagen en hexadecimal:

printf "%x\n" $(($(wc -c < "/media/myname/New Volume4/backup.dmg")-4096))

(Lo resté 4096del tamaño real por si acaso. Probablemente sea innecesario; aunque no hará daño).

Luego reemplace cada 0C770000en su registro con el número resultante (se necesitan tres reemplazos). Tenga en cuenta que hay 0xun prefijo que no debe tocar. Para hacer esto con sed:

sed -i 's/0C770000/the_resulted_number_here/' "/media/myname/New Volume4/logfile.log"

Nota: No sé por qué el segundo intento empezó de nuevo en lugar de continuar. El archivo de registro ahora es (casi) lo que era después de su pase interrumpido (si no hubo errores de lectura), por lo que este comportamiento puede reaparecer por el mismo motivo (aún desconocido).

Reanudar ddrescue:

ddrescue /dev/sdd "/media/myname/New Volume4/backup.dmg" "/media/myname/New Volume4/logfile.log"

información relacionada