Projects / dd_rescue


dd_rescue copies data from one file or block device to another. It is intended for error recovery, so by default, it doesn't abort on errors and doesn't truncate the output file. It uses large block sizes to quicken the copying, but falls back to small blocks upon encountering errors. It produces reports that allow you to keep track of bad blocks. dd_rescue features a number of optimizations, such as sparse block detection, preallocation, and Linux zerocopy (splice). It supports data protection by (multi-pass) overwriting of files or partitions with good and fast random numbers.

Operating Systems

Recent releases

  •  27 May 2014 12:30

    Release Notes: ddr_hash was enhanced. A bug where sha512/sha384 could have overflown a buffer was fixed. sha1 support has been added. Most importantly, there are now options to conveniently check and store checksums in xattrs and md5sum/sha256sum/... style files. A ddr_null plugin was added.

    •  23 May 2014 11:00

      Release Notes: The MD5 plugin has been renamed to hash, reflecting that other cryptographic hashes such as sha1, sha256, sha224, sha512, sha384 are now supported as well. (The commandline syntax stays backwards-compatible.)

      •  20 May 2014 12:45

        Release Notes: The focus of 1.43 is a well-working lzo plugin (, short: ddr_lzo). ddr_lzo allows the user to de/compress data during dd_rescue processing using the fast lzo algorithms. The result is compatible with lzop. ddr_lzo supports holes (sparse files), multipart files, and appending to lzo files, and allows (partial) decompression in the face of corrupt lzo data, so it fits dd_rescue's purpose and feature set nicely. A number of little fixes and doc improvements have been done, as well as some speedup for the zero-block detection (option -a/--sparse) using ARMv8 (aka ARM64 aka AArch64) assembly.

        •  03 Mar 2014 22:53

          Release Notes: This version includes a plugin interface (that allows analysis or transformation of data prior to being written) an MD5 plugin, the use of posix_fadvise(), and the output of only short usage info on incorrect input parameters.

          •  25 Feb 2014 19:58

            Release Notes: Refactoring allows for better runtime and build time feature detection, resulting in support for building against Android (NDK) and in fast AVX2 sparse block detection. This version also brings a new option -u/--rmvtrim that removes a written (typically zero-filled) file again after completion and issuing an fstrim operation.

            Recent comments

            21 May 2014 13:00 garloff

            Hmm, seems it was out of your own need -- just like when I started my project (Oct 1999).
            Anything I should look at in particular to make dd_rescue more useful?

            07 Jul 2013 01:27 Bisqwit

            Nice! I once wrote basically the same project :-)


            Project Spotlight


            A Fluent OpenStack client API for Java.


            Project Spotlight

            TurnKey TWiki Appliance

            A TWiki appliance that is easy to use and lightweight.