didu(1)

DIDU(1) User Commands DIDU(1)

NAME

didu - corrupted DIsk DUmper program

SYNOPSIS

didu [OPTION...] [infile [outfile]]

DESCRIPTION

didu -- corrupted DIsk DUmper utility

DIskDUmper (didu) is simple dd(1) replacement, much lighter and more standard by options set. The main feature introduced in didu is that bad sectors are not skipped while dumping, but filled with certain byte pattern.

The primary goal of didu is creating and patching back continuous areas of disk devices and files. As now, didu just can select a certain area of input file and paste it into certain area of output file (one can use the whole file as well). To speed up dumping process, didu uses adaptive I/O block sizing. That means dumping always starts with maximal I/O block size, dropping it to the actual read() result when an error or end-of-file occurs. In case of error, the I/O block size then decreased to minimal one. If bad block can not be read from input, the corresponding output block is filled with fill byte to keep overall output image size actual.

-f, --fill=BYTE
Fill bad areas with BYTE (default is 0)
-r, --raw
Input file is raw device (so has no SEEK_END)
-v, --verbose
Produce verbose output
-b, --begin=ADDRESS
Begin reading from ADDRESS of input file
-e, --end=ADDRESS
End reading at ADDRESS of input file
-s, --seek=ADDRESS
Seek for ADDRESS in output file to start writing
-m, --min=SIZE
Set minimal I/O block SIZE
-M, --max=SIZE
Set maximal I/O block SIZE
-a, --append=FILE
Append output to FILE
-i, --input=FILE
Use FILE for input
-o, --output=FILE
Redirect output to FILE, truncate old one if exists
-p, --patch=FILE
Patch output FILE without truncation (default)
-?, --help
Give this help list
--usage
Give a short usage message
-V, --version
Print program version

Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options.

ADDRESS and SIZE may be either a <number> (bytes), <numberK> (kilobytes) or <numberM> (megabytes).

EXAMPLES

Suppose we have a disk with badblocks attached to /dev/sdc and want to resurrect filesystems on it. It's better to make an image first:

$ didu -v /dev/sdc -o sdc.image > didu.sdc.log
This creates exact copy of /dev/sdc with all unreadable data filled with zeros (the default). Information about bad block locations is stored to didu.sdc.log file.

Now we can use sdc.image as, for example, qemu(1) disk image to reconstruct it safely. It's recommended to use original image read-only, creating another one in copy-on-write mode (it wouldn't grow so large), and syncing data back to original image when the work is done.

When we finished reconstructing, we can paste sdc.image back into fresh undamaged device (/dev/sdd), either by dd(1) or didu(1):

$ didu sdc.image -o /dev/sdd

CAVEATS

Patch mode (the -p option) sets output seek position to current input begin position (for equalizing location of dumping area in both files). Similarly, append mode (the -a option) sets output seek position to end of file. Be sure you're using -b option before -p, and -s option after -p or -a. This behaviour is slightly unclear.

HISTORY

First version of didu was written at the end of the previous century to resurrect important data from one of those bloody IBM DeathStar hard drives.

AUTHOR

George V. Kouryachy (a.k.a Fr. Br. George) <george@altlinux.org>.

REPORTING BUGS

Report bugs to https://bugzilla.altlinux.org/enter_bug.cgi?product=Sisyphus&component=didu.

SEE ALSO

dd(1)vim(1) (in vim -b mode)

April 2009 didu 1.01