GNU ddrescue Changelog

What's new in GNU ddrescue 1.22

Feb 9, 2017
  • The option '-X, --exit-on-error' has been replaced by '-X, --max-read-errors'. This introduces a backward incompatibility with versions 1.19 to 1.21 in that option '-X' now requires an argument. The long form '--exit-on-error' is still accepted, but will be removed in a future version of ddrescue.
  • The new option '--max-slow-reads' has been added. It makes ddrescue exit with status 1 if too many slow reads are encountered during the copying phase.
  • The new option '--delay-slow' has been added. It sets the initial delay before ddrescue starts checking for slow reads.
  • The new option '--reset-slow' has been added. It resets the slow reads counter every time the read rate reaches or surpasses '--min-read-rate'.
  • The new option '--log-events' has been added. It logs all significant events in a file, indicating the time, the percentage rescued, and a message describing the event.
  • The new option '--mapfile-interval' has been added. It changes the interval at which ddrescue saves and fsyncs the mapfile.
  • The new option '--pause-on-error' has been added. It makes (or simulates) a pause after each read error.
  • The option '--pause' has been renamed to '--pause-on-pass'.
  • The option '--max-errors' has been renamed to '--max-bad-areas'.Ddrescue now shows the number of read errors, the error rate and (if a --min-read-rate is specified) the number of slow reads.
  • The 'current_pass' field has been added to the mapfile. This allows the copying phase to resume instead of restart from pass 1. It also allows the retrying phase to resume in the same direction it was interrupted.
  • Two new passes have been added to the copying phase. Sometimes there is a significant difference in read speed and likelihood of data recovery between blocks skipped due to slow areas, and blocks skipped due to read failures. Two passes have been inserted after pass 2 that read the blocks skipped due to slow areas (if any) before the final sweeping pass (which now is pass 5).
  • The '--cpass' option now accepts ranges of passes; '--cpass=1-4'.
  • The option '-K, --skip-size' now accepts sizes up to 1 EiB.The initial skip size now defaults to (infile_size / 100_000) with a minimum value of 64 KiB.
  • The minimum read rate of good non-tried areas is no longer reduced after each pass, and now only affects passes 1 and 2.
  • During the trimming phase, if any edge of a non-trimmed block is already adjacent to a bad sector, it is considered as already trimmed and is not trimmed again.
  • The 's' multiplier may now be appended to any of the other multipliers. For example, 'ks' = kilosectors (1000 * sector_size), or 'Kis' = kibisectors (1024 * sector_size).
  • Options '--ask' and '-vv' now always show file size, even if model and serial number are also shown.
  • Device model and serial number are now shown with '--ask' or '-vv' on Cygwin. (Patch written by Christian Franke).
  • The tried size (non-trimmed + non-scraped + bad-sector sizes) is now shown in the initial status.
  • The new option '-A, --annotate-mapfile' has been added to ddrescuelog. It adds comments to a mapfile containing the positions and sizes of the blocks in human-readable form.

New in GNU ddrescue 1.19 (Oct 7, 2014)

  • A race condition at start of run with "--timeout=0" has been fixed.The new option "-P, --data-preview", which makes ddrescue show a few lines of the latest data read, has been added.
  • The new option "-u, --unidirectional", which runs all passes in the same direction (forwards or backwards), has been added.
  • The new option "-X, --exit-on-error", which makes ddrescue exit after the first read error is encountered during the copying phase, has been added.
  • The new option "--ask", which asks for confirmation before starting the copy, has been added.
  • The new option "--cpass", which selects what passes to run during the copying phase, has been added.
  • The new option "--pause", which inserts a pause between passes, has been added.
  • The option "-l, --logfile-size" is no more needed and has been removed.
  • Ddrescue now skips on the first error during the copying phase.
  • Trimming is now done in one pass and may be run in reverse.The splitting phase has been replaced by a "scraping" phase that scrapes together the data not recovered by the copying or trimming phases. Scraping reads each non-scraped block forwards, one sector at a time.
  • The long name of option "-n" has been changed to "--no-scrape".During the retrying phase the direction is now reversed after each pass. Use "--unidirectional" to override.
  • Model and serial number of ATA devices are shown with "--ask" or "-vv" on GNU/Linux.
  • The configure script now accepts the option "--enable-linux" to enable the compilation of linux-specific code.
  • The license has been changed to GPL version 2 or later.

New in GNU ddrescue 1.18 Pre7 (Feb 3, 2014)

  • Blocks skipped during the copying phase are no longer marked as non-trimmed.
  • They are tried in additional passes (before trimming).
  • This speeds the rescue in case of large errors by avoiding the creation of large non-trimmed areas.
  • "ddrescue.texinfo" has been renamed "ddrescue.texi".

New in GNU ddrescue 1.17 / 1.18 Pre4 (Aug 30, 2013)

  • The long name of the option "-r" has been changed to "--retry-passes" to make it clear that ddrescue tries each sector only once per retry pass.
  • The default value of option "-a, --min-read-rate" has been changed to 0 (auto).
  • The effect of option '-O, --reopen-on-error' is now limited to the copying phase, but it also reopens the file on slow reads.

New in GNU ddrescue 1.18 Pre3 (Aug 21, 2013)

  • The new option "-O, --reopen-on-error" has been added.

New in GNU ddrescue 1.18 Pre2 (Aug 16, 2013)

  • The format of the files produced by the options "--log-rates" and "--log-reads" has been modified to make them usable by plotting utilities like gnuplot.
  • Skip size is now reset (instead of reduced) after good data is found.
  • This should make ddrescue regain speed faster after leaving a bad or slow area.
  • Current total runtime is now shown on the screen.

New in GNU ddrescue 1.18 Pre1 (Aug 8, 2013)

  • The new options "-1, --log-rates" and "-2, --log-reads" have been added.
  • The short name of option "--generate-mode" has been changed to "-G".

New in GNU ddrescue 1.17 RC4 (Jun 10, 2013)

  • The option "--fill" has been renamed to "--fill-mode".
  • The option "--generate-logfile" has been renamed to "--generate-mode".
  • During the copying phase, failed blocks containing one sector are marked as bad-sector instead of as non-trimmed.
  • This avoids trying a sector twice when a cluster size of 1 is used.
  • "configure" now accepts options with a separate argument.

New in GNU ddrescue 1.17 RC3 (May 3, 2013)

  • This version adds the new option "-w, --ignore-write-errors", which makes fill mode ignore write errors.
  • This is useful to avoid ddrescue exiting because of new errors developing while wiping the good sectors of a failing drive.

New in GNU ddrescue 1.17 RC2 (Mar 21, 2013)

  • Ddrescuelog no longer says that the logfile does not exist when it exists but is empty.
  • The manual now explains that only whole sectors can be read when "direct disc access" is used.

New in GNU ddrescue 1.17 RC1 (Mar 9, 2013)

  • The option "-l, --logfile-size" has been added.
  • Trimming is now done from both edges of each non-trimmed block.
  • The largest blocks are trimmed first.
  • The largest blocks are now split first until logfile reaches "--logfile-size" entries.

New in GNU ddrescue 1.17 Pre1 (Nov 24, 2012)

  • The option "--sector-size" has been added as a synonym of "--block-size".
  • Ddrescue now terminates with an error if an unexpected EOF would discard any successfully read data, and automatically adjusts the logfile to shrinking input devices, like CD-ROMs written in TAO mode.
  • A bug has been fixed which prevented status updating after the system clock had been put back.
  • Control-C no longer overwrites status messages.
  • Generate mode no longer requires the "--force" option.
  • The new chapter "Using ddrescue safely" has been added to the manual.

New in GNU ddrescue 1.16 RC4 (Jun 6, 2012)

  • The new option "-O, --timeout", which sets the maximum time allowed since the last successful read, has been added.
  • Maximum skip size is now limited to 1% of infile size or 1 GiB (whichever is smaller). The option "-v, --verbose" now increases verbosity if repeated.
  • Initial skip size is now shown.
  • Verbosity level 2 and above shows two more lines of initial status.

New in GNU ddrescue 1.16 RC1 (Jan 12, 2012)

  • The "-E, --max-error-rate" option now checks the rate of actually failed reads, not the growth of error size, and shows the error rate in the error message.
  • Quote characters in messages have been changed as advised by GNU Coding Standards.

New in GNU ddrescue 1.15 Pre3 (Oct 25, 2011)

  • The "-a, --min-read-rate" option now uses additional passes, dividing rate by ten on each pass.
  • The new options "-a, --change-types", "-c, --create-logfile", "-d, --delete-if-done", "-D, --done-status", "-m, --domain-logfile", "-n, --invert-logfile", "-p, --compare-logfile", "-t, --show-status", "-x, --xor-logfile", "-y, --and-logfile", and "-z, --or-logfile" have been added to ddrescuelog.

New in GNU ddrescue 1.15 Pre2 (Oct 9, 2011)

  • The new option "-a, --min-read-rate" has been added.
  • A spurious warning about option "-D" being ignored in fill mode has been removed.

New in GNU ddrescue 1.14 Pre1 (Nov 26, 2010)

  • The syntax of the "--max-errors" option has been extended to specify new errors (--max-errors=+N).
  • The short name of the "--retrim" option has been changed to "-M".
  • A spurious warning about "preallocation not available" has been fixed.
  • The code implementing logfile generation has been moved to the new class "Genbook" in preparation for the addition of the reverse mode.

New in GNU ddrescue 1.13 RC2 (Jul 21, 2010)

  • Detection of posix_fallocate (for the --preallocate option) has been fixed.
  • The command line is now written to a log file for user reference.
  • Some additions have been made to the manual.

New in GNU ddrescue 1.11 RC1 (May 4, 2009)

  • logbook.cc (update_logfile): Ask user in case of write error.
  • rescuebook.cc (copy_and_update): Verify after every read error that the input file does still exist.
  • ddrescue.texinfo: Improved description of "-d", "-D" and "-S".
  • testsuite/check.sh: Verify that files are open in binary mode.

New in GNU ddrescue 1.10 (Feb 23, 2009)

  • The option "--try-again" has been added.
  • The size skipped when bad sectors are found has been made independent of "cluster-size".
  • Rescue speed has been improved for large log files.
  • An overflow reading from devices of undefined size has been fixed.
  • "make install-info" should now work on Debian and Mac OS X.

New in GNU ddrescue 1.10 RC3 (Feb 10, 2009)

  • Rescue speed has been improved for large log files.
  • An overflow reading from devices of undefined size has been fixed.

New in GNU ddrescue 1.10 RC2 (Jan 29, 2009)

  • The option "--try-again" has been added.

New in GNU ddrescue 1.10 RC1 (Jan 5, 2009)

  • The size skipped when bad sectors are found has been made independent of "cluster-size".
  • "make install-info" should now work on Debian and Mac OS X.

New in GNU ddrescue 1.9 (Nov 18, 2008)

  • The new option "--domain-logfile" has been added.
  • Verbosity control of user messages has been simplified.
  • This release improves portability by using the LLONG_MAX macro instead of LONG_LONG_MAX.
  • This release is also available in lzip format.

New in GNU ddrescue 1.9 RC2 (Nov 13, 2008)

  • This release improves portability by using the LLONG_MAX macro instead of LONG_LONG_MAX.

New in GNU ddrescue 1.9 RC1 (Sep 30, 2008)

  • Verbosity control of user messages has been simplified.

New in GNU ddrescue 1.9 PRE 1 (Sep 10, 2008)

  • The new option "--domain-logfile" has been added.
  • This release is also available in lzip format.
  • To download the lzip version, just replace ".bz2" with ".lz" in the tar.bz2 package name.