ddrescue ログ ファイルを編集して特定の場所から再開するにはどうすればよいでしょうか?

ddrescue ログ ファイルを編集して特定の場所から再開するにはどうすればよいでしょうか?

と ログ ファイルを使用して 500 GB のディスクをイメージ化しようとしていますGNU ddrescue。 420 GB に到達した時点で で停止しましたctrl+c。しばらくしてからコマンドを再度実行すると、ログ ファイルがあるにもかかわらず、最初からやり直しになりました。

古いログファイルは によって上書きされましたddrescue

前にも言ったように、私のイメージ ファイルは、これまでのところ 500 GB のディスクのうち 420 GB です。ログ ファイルを編集するか、ddrescue420 ​​GB あたりから再開するように指示するにはどうすればよいでしょうか。420 GB に到達するまでに何日もかかりましたddrescue。このプロセスをもう一度やり直したくありません。

ログファイルは次のとおりです:

# 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数は、約 200 MiB が読み取られたことを示しています。これは、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"

注: 2 回目の試行が続行されずに最初からやり直された理由はわかりません。ログ ファイルは、中断されたパスの後の (ほぼ) 状態になっています (読み取りエラーがなかった場合) であるため、この動作は同じ (まだ不明な) 理由で再び発生する可能性があります。

再起動ddrescue

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

関連情報