Tool Documentation:

dd_rescue Usage Example

Start at position 100 of the input file (-s 100 /var/log/messages) and write, beginning at position 0 of the destination file (-S 0 /tmp/ddrescue-out):

root@kali:~# dd_rescue -s 100 /var/log/messages -S 0 /tmp/ddrescue-out
dd_rescue: (info): Using softbs=65536, hardbs=4096
dd_rescue: (info) expect to copy 1766kB from /var/log/messages
dd_rescue: (info): ipos:      1024.1k, opos:      1024.0k, xferd:      1024.0k
                   errs:      0, errxfer:         0.0k, succxfer:      1024.0k
             +curr.rate:  1122807kB/s, avg.rate:  1018906kB/s, avg.load:  0.0%
             >.......................-.................<  57%  ETA:  0:00:00
dd_rescue: (info): read /var/log/messages (1767.0k): EOF
dd_rescue: (info): Summary for /var/log/messages -> /tmp/ddrescue-out:
dd_rescue: (info): ipos:      1767.0k, opos:      1767.0k, xferd:      1767.0k
                   errs:      0, errxfer:         0.0k, succxfer:      1767.0k
             +curr.rate:   352945kB/s, avg.rate:   568151kB/s, avg.load:  0.0%
             >.......................-................-< 100%  ETA:  0:00:00

Packages and Binaries:

ddrescue

Data recovery and protection tool
When your disk has crashed and you try to copy it over to another one, standard Unix tools like cp, cat, and dd will abort on every I/O error, dd_rescue does not. It optimizes copying by using large blocks as long as no errors occur and falls back to smaller blocks. It supports reverse direction copying (to approach a bad spot from the top), sparse copying, preallocating space, splice zerocopy, and bypassing the kernel pagecache with O_DIRECT. dd_rescue provides safe deletion of data by overwriting files (or better partitions/disks) multiple times with fast random numbers. With the ddr_hash plugin, it supports calculating a hash value (such as a sha256sum) or an HMAC during copying.

Installed size: 411 KB
How to install: sudo apt install ddrescue

Dependencies:
  • libc6
  • liblzo2-2
  • libssl3t64
dd_rescue

Data recovery and protection tool

root@kali:~# dd_rescue -h

dd_rescue Version 1.99.13, [email protected], GNU GPL v2/v3
 (DD_RESCUE_1_99_13)
 (compiled May 21 2025 11:21:52 by gcc (Debian 14.2.0-19) 14.2.0)
 (features: O_DIRECT dl/libfallocate fallocate splice fitrim xattr rdrnd sse4.2)
dd_rescue is free software. It's protected by the terms of GNU GPL v2 or v3
 (at your option).
dd_rescue copies data from one file (or device or pipe) to others.
USAGE: dd_rescue [options] infile outfile
Options: -s ipos    start position in  input file (default=0),
         -S opos    start position in output file (def=ipos),
         -b softbs  block size for copy operation (def=131072, 1048576 for -d),
         -B hardbs  fallback block size in case of errs (def=4096, 512 for -d),
         -e maxerr  exit after maxerr errors (def=0=infinite),
         -m maxxfer maximum amount of data to be transferred (def=0=inf),
         -M         avoid extending outfile,
         -x         count opos from the end of outfile (eXtend),
         -y syncsz  frequency of fsync calls in bytes (def=512*softbs),
         -l logfile name of a file to log errors and summary to (def=""),
         -o bbfile  name of a file to log bad blocks numbers (def=""),
         -r         reverse direction copy (def=forward),
         -R         repeatedly write same block (def if infile is /dev/zero),
         -t         truncate output file at start (def=no),
         -T         truncate output file at last pos (def=no),
         -u         undo writes by deleting outfile and issuing fstrim
         -d/D       use O_DIRECT for input/output (def=no),
         -k         use efficient in-kernel zerocopy splice,
         -P         use fallocate to preallocate target space,
         -L plug1[=par1[:par2]][,plug2[,..]]    load plugins,
         -w         abort on Write errors (def=no),
         -W         read target block and avoid Writes if identical (def=no),
         -a         detect zero-filled blocks and write spArsely (def=no),
         -A         Always write blocks, zeroed if err (def=no),
         -i         interactive: ask before overwriting data (def=no),
         -f         force: skip some sanity checks (def=no),
         -p         preserve: preserve ownership, perms, times, attrs (def=no),
         -C limit   rateControl: avoid xfer data faster than limit B/s
         -Y oname   Secondary output file (multiple possible),
         -F off[-off]r/rep[,off[-off]w/rep[,...]]  fault injection (hardbs off) r/w
         -q         quiet operation,
         -v         verbose operation,
         -c 0/1     switch off/on colors (def=auto),
         -V         display version and exit,
         -h         display this help and exit.
Instead of infile, -z/Z SEED or -z/Z SEEDFILE may be specified, taking the PRNG
 from libc or frandom (RC4 based) as input. SEED = 0 means a time based seed;
 Using /dev/urandom as SEEDFILE gives good pseudo random numbers.
Likewise, -3 SEED/SEEDFILE will overwrite ofile 3 times (r,ir,0, BSI M7.15).
 With -4 SEED/SEEDFILE you get an additional random pass (r,ir,r2,0).
 With -2 SEED/SEEDFILE you only get one random pass (r,0).

Sizes may be given in units b(=512), k(=1024), M(=1024^2) or G(1024^3) bytes
This program is useful to rescue data in case of I/O errors, because
 it does not normally abort or truncate the output.
It may also help data protection by securely overwriting data.
There are plugins for compression, hashing and encryption.
Have a look a the man page for more details and long options.



Updated on: 2025-Dec-09