dc3dd 6.12.3
DCCI 
Andrew Medico
2008-12-03


New Features:


Error Recovery:
dc3dd 6.12 includes a new dynamic error recovery mode. dc3dd now reads large
blocks (32KB) by default, which results in much higher transfer rates.
When an error is encountered, dc3dd no longer drops the entire block but instead
goes back to the beginning of the block and reads one sector at a time to recover
all the valid data on the drive.

* The mode is automatically enabled when the "conv=noerror,sync" command line
  option is used. In order to make recovery effective, OS read caching must
  be disabled by:

  Linux / Unix / Cygwin (Windows):
  Add the "iflag=direct" command line option, or "-DDEFAULT_IFLAG_DIRECT" compile option.

  Mac OS X:
  Use /dev/rdisk* instead of /dev/disk*
 
* "conv=sync,noerror" must also be present in command line.

Example Command Line:
# dc3dd if=/dev/sda of=sda.img conv=sync,noerror iflag=direct bs=262144 hash=md5,sha1 log=sda_log.txt



Default Block Size:
* The new default block size is 32KB (32,768 bytes).

* The default block size may be overridden by the "bs=X" command line option
  or the "-DDEFAULT_BLOCKSIZE=X" compile option.



Sector Input/Output:
* Errors messages now report absolute sector addresses, based on the device's
  reported sector size.

* The "count=X", "skip=X", and "seek=X" options all take sector counts.



Built-in Join:
dc3dd can now automatically join split files, for verification or input/output.

Split output to CD-size images:
# dc3dd if=/dev/sda of=sda.cd_size.img split=650M splitformat=000

# Verify split output against source device:
# dc3dd if=/dev/sda vfjoin=sda.cd_size.img.000

# Read in split files and re-output to DVD-size images:
# dc3dd ifjoin=sda.cd_size.img.000 of=sda.dvd_size.img split=4700M splitformat=000



Building dc3dd:

dc3dd is distributed as source code and must be compiled before use.
The default configuration can be built and installed to /usr/local/bin
with the following commands:

$ tar zxvf dc3dd-6.12.3.tar.gz
$ cd dc3dd-6.12.3
$ ./configure
$ make
$ sudo make install


Note: dependencies autoconf-1.10.1 and gperf may need to be installed

Custom Configuration:

dc3dd can be customized at compile-time with various options.
The available options are as follows:

(Unless otherwise noted, compile-time options can be overridden
by their command-line equivalents)

-DDEFAULT_BLOCKSIZE=bytes
equivalent to bs=BYTES command-line option

-DDEFAULT_HASH_MD5
-DDEFAULT_HASH_SHA1
-DDEFAULT_HASH_SHA256
-DDEFAULT_HASH_SHA512
equivalent to hash={md5,sha1,sha256,sha512}

-DDEFAULT_HASHCONV_AFTER
equivalent to hashconv=after

-DDEFAULT_HASHCONV_BEFORE
equivalent to hashconv=before

-DDEFAULT_SIZEPROBE
equvalent to sizeprobe=on
Cannot be overridden via command-line

-DDEFAULT_PROGRESS
equivalent to progress=on
Cannot be overridden via command-line

-DDEFAULT_PROGRESSCOUNT=blocks
equivalent to progresscount=BLOCKS

-DDEFAULT_IFLAG_DIRECT
equivalent to iflag=direct
Cannot be overridden via command-line

These options are enabled by including them in the CFLAGS argument to configure.
For example, to enable MD5 hashing and progress display:

$ ./configure CFLAGS="-O2 -DDEFAULT_HASH_MD5 -DDEFAULT_PROGRESS -DDEFAULT_PROGRESSCOUNT=1000"


Static Compilation:
The program can be statically linked by adding "-static" to the CFLAGS
compile options:

$ ./configure CFLAGS="-O2 -static"



Portability Notes:

Mac OS X:
* iflag=direct is not available. Instead, use /dev/rdisk* (vs. /dev/disk*)

Windows:
* dc3dd can be compiled using Cygwin, but bad sectors can put the program into
  an infinite loop due to bugs in Cygwin.

Performance Notes:

* When using the progress display (progress=on / DEFAULT_PROGRESS),
  it is important to set the progresscount to a sufficiently large value.
  Setting a value that is too small will cause excessively frequent updates
  and limit throughput. The best value will depend on the block size used and
  the transfer rate of the drives/interfaces.

Please send all correspondence to: dc3dd@dc3.mil

