특정 지점에서 재개되도록 ddrescue 로그 파일을 편집하는 방법은 무엇입니까?

특정 지점에서 재개되도록 ddrescue 로그 파일을 편집하는 방법은 무엇입니까?

GNU ddrescue로그 파일을 사용하여 500GB 디스크를 이미지화하려고 합니다 . 420GB에 도달한 다음 ctrl+c. 잠시 후 명령을 다시 실행했는데 로그 파일이 있음에도 불구하고 다시 시작되었습니다.

이전 로그 파일을 에서 덮어썼습니다 ddrescue.

내가 말했듯이, 지금까지 내 이미지 파일은 500GB 디스크 중 420GB입니다. 로그 파일을 편집하거나 ddrescue약 420GB에서 다시 시작하도록 하려면 어떻게 해야 합니까? ddrescue420GB에 도달하는 데 며칠이 걸렸습니다 . 이 프로세스를 다시 시작하고 싶지 않습니다.

로그 파일은 다음과 같습니다.

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

sudo fdisk -l이미지화하려는 디스크에 대한 내용은 다음과 같습니다 .

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

답변1

로그 파일의 16 진수 0x0C770000숫자는 약 200MiB를 읽었음을 나타냅니다. 이는 ddrescue다시 시작된 귀하의 진술을 확인시켜줍니다.

수정하려면 먼저 이미지의 대략적인 크기를 16진수로 구하세요.

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

4096( 만약 실제 크기에서 뺐습니다 . 불필요할 수도 있지만 해롭지는 않습니다.)

0C770000그런 다음 로그의 모든 항목을 결과 숫자로 바꾸십시오 (3번의 교체 필요). 0x건드리지 말아야 할 접두어가 있으니 주의하세요 . 이를 수행하려면 다음을 수행하십시오 sed.

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

참고: 왜 두 번째 시도가 계속되지 않고 다시 시작되었는지 모르겠습니다. 로그 파일은 이제 (거의) 중단된 패스 이후의 파일과 같습니다(읽기 오류가 없는 경우), 따라서 이 동작은 동일한(아직 알려지지 않은) 이유로 다시 나타날 수 있습니다.

재시작 ddrescue:

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

관련 정보