Scroll to navigation

DDRESCUE(1) User Commands DDRESCUE(1)


ddrescue - data recovery tool


ddrescue [options] infile outfile [mapfile]


GNU ddrescue - Data recovery tool. Copies data from one file or block device to another, trying to rescue the good parts first in case of read errors.

Always use a mapfile unless you know you won't need it. Without a mapfile, ddrescue can't resume a rescue, only reinitiate it. NOTE: In versions of ddrescue prior to 1.20 the mapfile was called 'logfile'. The format is the same; only the name has changed.

If you reboot, check the device names before restarting ddrescue. Don't use options '-F' or '-G' without reading the manual first.


-h, --help
display this help and exit
-V, --version
output version information and exit
-a, --min-read-rate=<bytes>
minimum read rate of good areas in bytes/s
-A, --try-again
mark non-trimmed, non-scraped as non-tried
-b, --sector-size=<bytes>
sector size of input device [default 512]
-B, --binary-prefixes
show binary multipliers in numbers [SI]
-c, --cluster-size=<sectors>
sectors to copy at a time [128]
-C, --complete-only
don't read new data beyond mapfile limits
-d, --idirect
use direct disc access for input file
-D, --odirect
use direct disc access for output file
-e, --max-bad-areas=[+]<n>
maximum number of [new] bad areas allowed
-E, --max-error-rate=<bytes>
maximum allowed rate of read errors per second
-f, --force
overwrite output device or partition
-F, --fill-mode=<types>
fill blocks of given types with data (?*/-+l)
-G, --generate-mode
generate approximate mapfile from partial copy
-H, --test-mode=<file>
set map of good/bad blocks from given mapfile
-i, --input-position=<bytes>
starting position of domain in input file [0]
-I, --verify-input-size
verify input file size with size in mapfile
-J, --verify-on-error
reread latest good sector after every error
-K, --skip-size=[<i>][,<max>]
initial,maximum size to skip on read error
-L, --loose-domain
accept an incomplete domain mapfile
-m, --domain-mapfile=<file>
restrict domain to finished blocks in <file>
-M, --retrim
mark all failed blocks as non-trimmed
-n, --no-scrape
skip the scraping phase
-N, --no-trim
skip the trimming phase
-o, --output-position=<bytes>
starting position in output file [ipos]
-O, --reopen-on-error
reopen input file after every read error
-p, --preallocate
preallocate space on disc for output file
-P, --data-preview[=<lines>]
show some lines of the latest data read [3]
-q, --quiet
suppress all messages
-r, --retry-passes=<n>
exit after <n> retry passes (-1=infinity) [0]
-R, --reverse
reverse the direction of all passes
-s, --size=<bytes>
maximum size of input data to be copied
-S, --sparse
use sparse writes for output file
-t, --truncate
truncate output file to zero size
-T, --timeout=<interval>
maximum time since last successful read
-u, --unidirectional
run all passes in the same direction
-v, --verbose
be verbose (a 2nd -v gives more)
-w, --ignore-write-errors
make fill mode ignore write errors
-x, --extend-outfile=<bytes>
extend outfile size to be at least this long
-X, --max-read-errors=<n>
maximum number of read errors allowed
-y, --synchronous
use synchronous writes for output file
-Z, --max-read-rate=<bytes>
maximum read rate in bytes/s
ask for confirmation before starting the copy
select what copying pass(es) to run
initial delay before checking slow reads [30]
log significant events in <file>
log rates and error sizes in <file>
log all read operations in <file>
save/sync mapfile at given interval [auto]
maximum number of slow reads allowed
time to wait after each read error [0]
time to wait between passes [0]
reset slow reads if rate rises above min
allow infile and outfile to be the same file

Numbers may be in decimal, hexadecimal or octal, and may be followed by a multiplier: s = sectors, k = 1000, Ki = 1024, M = 10^6, Mi = 2^20, etc... Time intervals have the format 1[.5][smhd] or 1/2[smhd].

Exit status: 0 for a normal exit, 1 for environmental problems (file not found, invalid flags, I/O errors, etc), 2 to indicate a corrupt or invalid input file, 3 for an internal consistency error (eg, bug) which caused ddrescue to panic.


Report bugs to
Ddrescue home page:
General help using GNU software:


Copyright © 2018 Antonio Diaz Diaz. License GPLv2+: GNU GPL version 2 or later <>
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.


The full documentation for ddrescue is maintained as a Texinfo manual. If the info and ddrescue programs are properly installed at your site, the command
info ddrescue

should give you access to the complete manual.

February 2018 ddrescue 1.23