I backed up a failing harddrive with
ddrescue. The command I used was
# ddrescue -vv -d -J /dev/sda /mnt/rescue/winxp.img winxp.map
The program completed with around 60 errors. I wanted to retry only the failed blocks. I found this section in the manpage:
-m file --domain-mapfile=file Restrict the rescue domain to the blocks marked as finished in the mapfile file. This is useful for merging partially recovered images of backups, or if the destination drive fails during the rescue. Use '-' as file to read the domain mapfile from standard input. Specialized tools like ddrutility or partclone can produce a domain mapfile listing all the used blocks in a partition, making the rescue more efficient. -M --retrim Mark all failed blocks inside the rescue domain as non-trimmed before beginning the rescue. The effect is similar to '--retry-passes=1', but the bad sectors are tried in a different order, making perhaps possible to rescue some of them.
The next command I issued was
# ddrescue -vv -d -M -m winxp.map /dev/sda /mnt/rescue/winxp.img winxp.2.map
I thought this would only retry the previously failed blocks. However, it seemed to start at the whole process again and trying to rescue the entire disk.
Is there a way to only retry the failed blocks and, on success, save them in the previous image?