dd_rescue 1.12 review

by rbytes.net on

dd_rescue project does copy data from one file or block device to another. Purpose of dd_rescue: * Imagine, one of your partiti

License: GPL (GNU General Public License)
File size: 17K
Developer: Kurt Garloff
0 stars award from rbytes.net

dd_rescue project does copy data from one file or block device to another.

Purpose of dd_rescue:

* Imagine, one of your partitions is crashed, and as there are some hard errors, you don't want to write to this hard disk any more. Just getting all the data off it and retiring it seems to be suitable. However, you can't access the files, as the file system is damaged.
* Now, you want to copy the whole partition into a file. You burn it on CD-Rom, just to never lose it again. You can setup a loop device, and repair (fsck) it and hopefully are able to mount it.
* Copying this partition with normal Un*x tools like cat or dd will fail, as those tools abort on error. dd_rescue instead will try to read and if it fails, it will go on with the next sectors. The output file naturally will have holes in it, of course. You can write a log file, to see, where all these errors are located.
* The data rate drops very low, when errors are encountered. If you interrupt the process of copying, you don't lose anything. You can just continue at any position later. The output file will just be filled in further and not truncated as with other Un*x tools.
* If you have one spot of bad sectors within the partition, it might be a good idea, to approach this spot from both sides. Reverse direction copy is your friend.
* The two block sizes are a performance optimization. Large block sizes result in superior performance, but in case of errors, you want to try to salvage every single sector. So hardbs is best be set to the hardware sector size (most often 512 bytes) and softbs to a large value, such as the default 16k.

The source code does use the 64bit functions provided by glibc for file positioning. However, your kernel might not support it, so you might be unable to copy partitions larger then 2GB into a file.

This program has been written using Linux and only tested on a couple of Linux systems. It should be possible to port it easily to other Un*x platforms, but I have not tried.Currently, the escape sequence for moving the cursor up is hard coded in the sources.

It's fine for most terminal emulations (including vt100 and linux), but it should use the terminal description database instead. Due to the way the program works (input and output are always written to the designated position, i.e. a seek() is done before the I/O operation is actually performed), char devices can not be read from or written to.

Therefore you can't redirect output to stdout. This limitation has been lifted in version 1.10; though with non-seekable in- and our output, you can't recover from errors on that channel.

What's New in This Release:
The options -b and -y have been added.
-b logs the numbers of bad blocks in an ASCII file, suitable for the mke2fs -l option (but beware to match hard block size with mke2fs).
The -y option sets the frequency of fsync() on the output file;
-y 0 results in the maximum speed.

dd_rescue 1.12 keywords