Como editar o arquivo de log do ddrescue para retomar em um determinado local?

Como editar o arquivo de log do ddrescue para retomar em um determinado local?

Estou tentando criar uma imagem de um disco de 500 GB usando GNU ddrescuee usando o arquivo de log. Cheguei a 420 GB e parei com ctrl+c. Executei o comando novamente depois de algum tempo e ele começou tudo de novo, apesar de haver um arquivo de log.

O arquivo de log antigo foi sobrescrito por ddrescue.

Como eu disse, meu arquivo de imagem até agora tem 420 GB de um disco de 500 GB. Como edito o arquivo de log ou peço ddrescuepara retomar cerca de 420 GB? Levei DIAS de corrida ddrescuepara chegar a 420 GB. Não quero reiniciar esse processo novamente.

Aqui está o arquivo de log:

# 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  ?

Isto é o que sudo fdisk -ldiz para o disco que desejo criar a imagem:

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

Responder1

O 0x0C770000número hexadecimal no seu arquivo de log indica que houve cerca de 200 MiB lidos. Isso confirma sua afirmação de que ddrescuerecomeçou.

Para modificar, primeiro obtenha o tamanho aproximado da sua imagem em hexadecimal:

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

(Eu subtraí 4096do tamanho real para garantir. Provavelmente é desnecessário; no entanto, não fará mal.)

Em seguida, substitua cada 0C770000em seu log pelo número resultante (são necessárias três substituições). Observe que existe 0xum prefixo que você não deve tocar. Para fazer isso com sed:

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

Nota: não sei por que a segunda tentativa recomeçou em vez de continuar. O arquivo de log agora é (quase) o que era após sua passagem interrompida (se não houvesse erros de leitura), então esse comportamento pode reaparecer pelo mesmo motivo (ainda desconhecido).

Reiniciar ddrescue:

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

informação relacionada