Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I have to recover my 1TB USB HD. I'm using ddrescue to accomplish this. Is there a way that I can resume ddrescue once I start it?

I'm using the command:

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image
share|improve this question
add comment

4 Answers

up vote 3 down vote accepted

ddrescue can be resumed, but it requires a log file to be able to do so. The log file will record the progress that ddrescue has made so far, and restarting ddrescue will read the log file and start where it left off.

The log file would be the third parameter:

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image ~/sdd1.log

If you have already started a ddrescue run without a log file and cancel it, the next time ddrescue runs, it will start at the beginning since it has no record of what has already been recovered.

Note: ddrescue and dd_rescue are different programs.

share|improve this answer
add comment

As others have said, you should always specify a logfile as the third parameter, which will allow resuming. Since you didn't do that, that's not going to help you here. If you know approximately what point the process got to, you can use the --input-position and --output-position parameters to start from that point (make sure to set both those parameters to the same value, otherwise the output will be corrupted).

share|improve this answer
add comment

Since you did not specify a log file as third parameter, resuming cannot be done automatically . You could create a logfile by hand if you know the already rescued sectors, the syntax is easy. Just start another dummy rescue to another file while specifying a log and let it read different areas. Then edit the log to represent the already rescued areas in your first file. Now re-run your previous command but give the name of the log file as the third parameter. ddrescue will then resume on the first untried sector.

share|improve this answer
add comment

Even if you forgot to specify a logfile, there may be hope:

Generate-logfile Mode

So you didn't read the tutorial and started ddrescue without a logfile. Now, two days later, your computer crashed and you can't know how much data ddrescue managed to save. And even worse, you can't resume the rescue; you have to restart it from the very beginning.

Or maybe you started copying a drive with dd conv=noerror,sync and are now in the same situation described above. In this case, note that you can't use a copy made by dd unless it was invoked with the sync conversion argument.

Don't despair (yet). Ddrescue can in some cases generate an approximate logfile, from the input file and the (partial) copy, that is almost as good as an exact logfile. It makes this by simply assuming that sectors containng all zeros were not rescued.

However, if the destination of the copy was a drive or a partition, (or an existing regular file and truncation was not requested), most probably you will need to restart ddrescue from the very beginning. (This time with a logfile, of course). The reason is that old data may be present in the drive that have not been overwritten yet, and may be thus non-tried but non-zero.

For example, if you first tried one of these commands:

ddrescue infile outfile

or

dd if=infile of=outfile conv=noerror,sync

you can generate an approximate logfile with this command:

ddrescue --generate-logfile infile outfile logfile
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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