1

I have a external HDD that

  • produces random read failures (and it would after that show errors for all subsequent read access until I switch it off/on again)
  • S.M.A.R.T information shows that the number of corrupted sectors is increasing (and I should replace the HDD with a new one)

Now my problem is that I want to generate one good RAW image .img file from this HDD and since my HDD is generating random "read sector failures" I want to find a program that is able to generate partial RAW disk images (that I can concatenate later to one complete good image).

I've tried so far:

  1. Acronis True Image 2017 (commercial version)

    • This allows generating images (also split into e.g. 100 GB packages)
    • But it won't allow me to stop/continue after a read failure (and a powercycle of the HDD)
    • I can just retry (doesn't help) or ignore every "sector read failure" afterwards
    • Next time it would start from sector 0 again (so I never get more then the first 30-40% of the disk data)
  2. HDD Raw Copy Tool

    • It advertises "low-level" copying, but the results were the same as above

Just from looking at command line tools like Linux's dd or some clones for Windows it's probably doable, but I would prefer something with a GUI on Windows which gives me some sort of visual control/overview of what I'm doing.

Alternatively I'm looking for a tool that does allow to "continue" after a failed disk-imaging at the position of failure (like with a download in my browser after I lost contact with the server).

1

After a long search and some trial and error e.g. with dd I ended up booting Linux for USB memory stick and using ddrescue command line tool.

For my case I was paricualry interested in an example from the manuals:

Example 5: While rescuing a partition in /dev/sda1 to the file hdimage, /dev/sda1 stops responding and begins returning read errors, causing ddrescue to mark the rest of the partition as non-scraped.

ddrescue -f -n /dev/sda1 hdimage mapfile     <-- /dev/sda1 fails here
  (restart /dev/sda or reboot computer)
ddrescue -f -n -A -i<pos> /dev/sda1 hdimage mapfile
  (if /dev/sda1 fails again, restart /dev/sda or reboot computer and
   then repeat the above command as many times as needed until it
   succeeds. <pos> is the position of the last block marked as
   non-scraped in the mapfile)
ddrescue -d -f -r3 /dev/sda1 hdimage mapfile

I've just replaced the - for files - unnecessary option -f (force overwrite) with -v (verbose) option.

My mapfile after serveral repeated second steps (and about 6 hours for 1TB later) looked like this:

# Rescue Logfile. Created by GNU ddrescue version 1.19
# Command line: ddrescue -v -n -A -i0xCCF9C10000 /dev/sda2 hdimage mapfile
# Start time:   ...
# Current time: ...
# Finished
# current_pos  current_status
0xE8D8BF0000     +
#      pos        size  status
0x00000000  0x59FAA45000  +
0x59FAA45000  0x0001B000  ?
0x59FAA60000  0x02B6A000  +
0x59FD5CA000  0x00016000  ?
0x59FD5E0000  0x5D600000  +
0x5A5ABE0000  0x00020000  ?
0x5A5AC00000  0x0CDB2000  +
0x5A679B2000  0x0001E000  ?
0x5A679D0000  0x2EDA9B000  +
0x5D5546B000  0x00015000  ?
0x5D55480000  0x3B5AB1000  +
0x610AF31000  0x6BE3F000  ?
0x6176D70000  0x8761E90000  +

And after the last call to retry and fill the gaps I ended up with just one none-recoverable sector and the following mapfile:

# Rescue Logfile. Created by GNU ddrescue version 1.19
# Command line: ddrescue -d -v -r3 /dev/sda2 hdimage mapfile
# Start time:   ...
# Current time: ...
# Finished
# current_pos  current_status
0x59FD5CA400     +
#      pos        size  status
0x00000000  0x59FD5CA400  +
0x59FD5CA400  0x00000200  -
0x59FD5CA600  0x8EDB635A00  +

References

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.