ddrescue Changelog

What's new in ddrescue 1.22

Jun 9, 2017
  • Option '-X, --exit-on-error' replaced by '-X, --max-read-errors'.
  • Added new option '--max-slow-reads'.
  • Added new option '--delay-slow'.
  • Added new option '--reset-slow'.
  • Added new option '--log-events'.
  • Added new option '--mapfile-interval'.
  • Added new option '--pause-on-error'.
  • Option '--pause' has been renamed to '--pause-on-pass'.
  • Option '--max-errors' has been renamed to '--max-bad-areas'.
  • Renamed 'errsize' to 'bad_size' and 'errors' to 'bad_areas'
  • Rescuebook: Show read_errors, error_rate and slow_reads.
  • Added 'current_pass' field to mapfile.
  • Added two new passes (3 and 4) to the copying phase.
  • main.cc (parse_cpass): Accept ranges of passes.
  • Option '-K, --skip-size' now accepts sizes up to 1 EiB.
  • Initial skip size now defaults to (infile_size / 100_000).
  • rescuebook.cc (copy_non_tried): Don't reduce min_read_rate, enable it only for passes 1 and 2.
  • rescuebook.cc (trim_errors): Don't trim bad edges.
  • main_common.cc (getnum): Accept 's' after other multiplier.
  • '--ask', '-vv' now show size along with model and serial number.
  • non_posix.cc: Add 'device_id' for Cygwin. (Patch written by Christian Franke ).
  • rescuebook.cc (do_rescue): Show full sizes in domain warning.
  • Added new option '-A, --annotate-mapfile' to ddrescuelog.

New in ddrescue 1.22 Pre 3 (Jul 11, 2016)

  • Added new options '--exit-on-slow', '--mapfile-interval'.

New in ddrescue 1.22 Pre 1 (May 13, 2016)

  • Added 'current_pass' field to mapfile.
  • Added two new passes (3 and 4) to the copying phase.
  • main.cc (parse_cpass): Accept ranges of passes.
  • rescuebook.cc (copy_non_tried): Don't reduce min_read_rate, enable it only for passes 1 and 2.
  • rescuebook.cc (trim_errors): Don't trim bad edges.
  • main_common.cc (getnum): Accept 's' after other multiplier.

New in ddrescue 1.21 (May 7, 2016)

  • mapbook.cc (Mapbook): Fix iobuf alignment. (Reported by Heikki Tauriainen).
  • Removed short option names '-1' and '-2'.
  • Allow only regular files for '--log-rates' and '--log-reads'.
  • Option '-D, --odirect' now works also in fill mode.
  • rescuebook.cc (copy_block): Return 1 on unaligned read error. Set e_code on any error if verify_on_error.
  • Option '-X, --exit-on-error' has been extended to all phases.
  • Assigned short name '-Z' to option '--max-read-rate'.
  • mapbook.cc (update_mapfile): 'fsync' the mapfile every 5 minutes.
  • Rescuebook: Show full range of sizes from non-tried to finished.
  • rescuebook.cc (show_status): Show percent rescued.
  • configure: Avoid warning on some shells when testing for g++.
  • Makefile.in: Detect the existence of install-info.

New in ddrescue 1.21 RC 2 (Feb 23, 2016)

  • A bug in the alignment of the I/O buffer has been (hopefully) fixed.(Thanks to Heikki Tauriainen).
  • Ddrescue now exits with status 1 in case of unaligned read in direct mode (because of a wrong sector size, for example).
  • Short option names '-1' and '-2' have been removed to avoid mistakes in the command line.
  • Only regular files are now allowed as arguments of options '--log-rates' and '--log-reads'.
  • Option '-X, --exit-on-error' has been extended to all phases.
  • Option '-D, --odirect' now works also in fill mode.
  • Option '-J, --verify-on-error' now marks blocks as failed on any error, and exits with status 1 if a read error happens before a good sector is found.
  • The short name '-Z' has been assigned to option '--max-read-rate'.
  • Ddrescue now shows all sizes in rescue mode; non-tried, non-trimmed, non-scraped, bad-sector and finished.
  • Ddrescue now shows the percentage of the domain rescued in rescue mode.
  • The mapfile is now "fsync'ed" every 5 minutes because some systems seem to never write the mapfile to disc.

New in ddrescue 1.21 Pre 3 (Jan 4, 2016)

  • mapbook.cc (Mapbook): Fix iobuf alignment.

New in ddrescue 1.20 (Nov 18, 2015)

  • "logfile" has been renamed to "mapfile" everywhere, even in long option names. ("--domain-logfile" is now "--domain-mapfile", etc).
  • The short name of option "--synchronous" has been changed to "-y".
  • The long name of option "-d" has been changed to "--idirect".
  • The new option "-D, --odirect" has been added. This introduces a subtle backward incompatibility because "-D" was the short name of option "--synchronous".
  • The new option "-J, --verify-on-error" has been added. It verifies, after each read error, that the input device is still returning consistent data.
  • The new option "--max-read-rate" has been added.
  • "direct disc access" now can copy arbitrary domains by reading whole sectors and writing only the requested part.
  • Accounting change; only bad_sector blocks are now included in "errsize".
  • The estimated remaining rescue time is now shown on the screen.
  • Times are now shown in days, hours, minutes and seconds, instead of as a fraction of the appropriate unit.
  • Fill mode has been extended to write location data into each sector.
  • An emergency save of the mapfile has been added. It can be activated in case of ddrescue having trouble writing the mapfile.
  • Device name is now shown with "--ask" or "-vv" on Haiku.
  • Read-only mapfiles, like domain mapfiles or input mapfiles for ddrescuelog, can now be read from standard input if a hyphen '-' is used as mapfile name.
  • Ddrescuelog can now show the status of more than one mapfile.
  • "ddrescuelog --create-mapfile -" now writes the mapfile to standard output.
  • The new chapter "Optical media" has been added to the manual.
  • The configure option "--enable-linux" has been renamed to "--enable-non-posix".
  • The targets "install-compress", "install-strip-compress", "install-info-compress" and "install-man-compress" have been added to the Makefile.

New in ddrescue 1.21 Pre 2 (Nov 18, 2015)

  • Ddrescue now shows all sizes in rescue mode; non-tried, non-trimmed, non-scraped, bad-sector and finished.
  • The short name '-Z' has been assigned to option '--max-read-rate'.
  • The mapfile is now "fsync'ed" every 5 minutes because some systems seem to never write the mapfile to disc.

New in ddrescue 1.20 RC 3 (Aug 6, 2015)

  • 'logfile' has been renamed to 'mapfile'.
  • Files 'logbook.*' renamed to 'mapbook.*'.
  • File 'logfile.cc' renamed to 'mapfile.cc'.
  • mapfile.cc (read_mapfile): Read read-only mapfiles from stdin.
  • ddrescuelog.cc (create_mapfile): '-' writes mapfile to stdout.

New in ddrescue 1.20 RC 2 (Jul 13, 2015)

  • 'logfile' has been renamed to 'blockfile'.
  • Files 'logbook.*' renamed to 'blockbook.*'.
  • File 'logfile.cc' renamed to 'blockfile.cc'.

New in ddrescue 1.20 RC 1 (Jun 23, 2015)

  • rescuebook.cc (copy_block): Copy arbitrary blocks with '--idirect'.
  • logbook.cc: Added emergency save of the logfile.
  • ddrescue.texi: Documented maximum size of the rescue domain.

New in ddrescue 1.19 (Oct 6, 2014)

  • Fixed a race condition at start of run with '--timeout=0'.
  • Added new option '-P, --data-preview'.
  • Added new option '-u, --unidirectional'.
  • Added new option '-X, --exit-on-error'.
  • Added new option '--ask' to ask for user confirmation.
  • Added new option '--cpass' to select passes during copying phase.
  • Added new option '--pause' to insert a pause between passes.
  • Removed option '-l, --logfile-size'.
  • Skip on the first error during the copying phase.
  • rescuebook.cc: Trimming done in one pass, may be run in reverse.
  • The splitting phase has been replaced by a scraping phase.
  • Changed long name of option '-n' to '--no-scrape'.
  • rescuebook.cc: Alternate direction of passes during retrying phase.
  • Show ATA model and serial number with '--ask' or '-vv' on Linux.
  • configure: Added new option '--enable-linux'.
  • New files linux.h linux.cc.
  • License changed to GPL version 2 or later.

New in ddrescue 1.18.1 (Jun 10, 2014)

  • ddrescue.texinfo: Renamed to ddrescue.texi.

New in ddrescue 1.18 (Jun 9, 2014)

  • ddrescuelog.cc (do_logic_ops): Fixed 'or' and 'xor'.
  • Added new option '-H, --test-mode' to simulate read errors.
  • Added new option '-L, --loose-domain' to ddrescue and ddrescuelog.
  • Added new option '-N, --no-trim' to disable trimming of damaged areas.
  • Added new option '-O, --reopen-on-error'.
  • Added new options '-1, --log-rates', and '-2, --log-reads'.
  • Extended '-K, --skip-size' with maximum and disable values.
  • Changed long name of option '-r' to '--retry-passes'.
  • Changed short name of option '--generate-mode' to '-G'.
  • Default value of option '-l, --logfile-size' increased to 10000.
  • If interrupted, ddrescue terminates by raising the signal received.
  • rescuebook.cc (copy_non_tried): Do not mark skipped blocks as non-trimmed. Try them in additional passes (before trimming).
  • rescuebook.cc: Limit the copying phase to 3 passes.
  • rescuebook.cc: Alternate direction of passes during copying phase.
  • rescuebook.cc: Smallest blocks are trimmed first.
  • rescuebook.cc (split_errors): Read largest first if logfile full.
  • Improved speed when using option '-m, --domain-logfile'.
  • io.cc (show_status): Show the current total run time.
  • rescuebook.cc: Show pass number and direction during copying.
  • rescuebook.cc (show_status): Show block pos instead of current_pos.
  • main.cc: Show "an unknown number of bytes" for unknown isize.
  • Added option '-B, --binary-prefixes' to ddrescuelog.
  • Added new option '-C, --complete-logfile' to ddrescuelog.
  • Added new option '-P, --compare-as-domain' to ddrescuelog.
  • Improved speed of logic operations in ddrescuelog.
  • rescuebook.cc (Rescuebook::do_rescue): Show warning when domain is smaller than logfile.
  • ddrescuelog.cc (do_show_status): Show logfile and domain extents when domain is smaller than logfile.
  • block.h: Class Block now forces the invariant by itself.
  • Code reorganization. New class 'Logfile'.
  • Added status message to rescue logfile.
  • Many improvements to documentation.
  • ddrescue.texinfo: Renamed to ddrescue.texi.

New in ddrescue 1.18 RC 2 (May 27, 2014)

  • rescuebook.cc (Rescuebook::do_rescue): Show warning when domain is smaller than logfile.
  • ddrescuelog.cc (do_show_status): Show logfile and domain extents when domain is smaller than logfile.

New in ddrescue 1.18 RC 1 (May 7, 2014)

  • Improved speed when using option '-m, --domain-logfile'.
  • Improved speed of logic operations in ddrescuelog.
  • Added timestamps to rescue, rates and reads logfiles.
  • Added status message to rescue logfile.
  • Use tab as field separator in reads logfile to reduce its size.
  • rescuebook.cc (split_errors): Read largest first if logfile full.
  • rescuebook.cc (show_status): Show block pos instead of current_pos.

New in ddrescue 1.18 Pre 10 (Apr 1, 2014)

  • ddrescuelog.cc (do_logic_ops): Fixed 'or' and 'xor'.

New in ddrescue 1.18 Pre 8 (Mar 14, 2014)

  • If interrupted, ddrescue terminates by raising the signal received.
  • rescuebook.cc: Alternate direction of passes during copying phase.
  • rescuebook.cc: Smallest blocks are trimmed first.
  • block.h: Class Block now forces the invariant by itself.
  • main.cc: Show "an unknown number of bytes" for unknown isize.
  • Write version and command line to rates and reads logfiles.
  • Many improvements to documentation.

New in ddrescue 1.18 Pre 7 (Feb 3, 2014)

  • rescuebook.cc (copy_non_tried): Do not mark skipped blocks as non-trimmed. Try them in additional passes (before trimming).
  • ddrescue.texinfo: Renamed to ddrescue.texi.

New in ddrescue 1.18 Pre 6 (Feb 3, 2014)

  • rescuebook.cc: Restored behavior of skipping as in 1.18-pre1.

New in ddrescue 1.18 Pre 5 (Sep 17, 2013)

  • Added new option '-L, --loose-domain' to ddrescue and ddrescuelog.
  • Added new option '-N, --no-trim' to disable trimming of damaged areas.
  • Restored default value of option '-a, --min-read-rate' to -1.
  • Added option '-B, --binary-prefixes' to ddrescuelog.
  • Added new option '-C, --complete-logfile' to ddrescuelog.
  • Code reorganization. New class 'Logfile'.

New in ddrescue 1.18 Pre 4 (Aug 30, 2013)

  • Changed long name of option '-r' to '--retry-passes'.
  • Changed default value of option '-a, --min-read-rate' to 0 (auto).
  • Limit the effect of option '-O, --reopen-on-error' to the copying phase, but reopen the file also on slow reads.

New in ddrescue 1.18 Pre 3 (Aug 21, 2013)

  • Added new option '-O, --reopen-on-error'.

New in ddrescue 1.18 Pre 2 (Aug 21, 2013)

  • rescuebook.cc: 'skip_size' is now reset after one good read.
  • io.cc (show_status): Show the current total run time.
  • Format of logging files has been made more machine-readable.

New in ddrescue 1.18 Pre 1 (Aug 8, 2013)

  • Added new option '-1, --log-rates'.
  • Added new option '-2, --log-reads'.
  • Changed short name of option '--generate-mode' to '-G'.

New in ddrescue 1.17 (Jul 13, 2013)

  • Added new option '-l, --logfile-size'.
  • Added new option '-w, --ignore-write-errors'.
  • Option '--fill' has been renamed to '--fill-mode'.
  • Option '--generate-logfile' has been renamed to '--generate-mode'.
  • Added option '--sector-size' as a synonym of '--block-size'.
  • Added option '--retries' as a synonym of '--max-retries'.
  • Added option '--size' as a synonym of '--max-size'.
  • rescuebook.cc: Trimming is now done from both edges of each non-trimmed block. Largest blocks are trimmed first.
  • rescuebook.cc: Largest blocks are now split first until logfile reaches '--logfile-size' entries.
  • logbook.cc (extend_sblock_vector, truncate_vector): Terminate if truncation would discard finished blocks.
  • rescuebook.cc: Mark failed blocks with 1 sector as bad-sector.
  • logbook.cc (extend_sblock_vector): Remove last block of logfile if it starts at isize and is not marked as finished.
  • io.cc (show_status,update_rates): Detect a jump back in time and adjust status.
  • ddrescue.h (slow_read): Return false for the first 10 seconds.
  • io.cc (show_status) Leave cursor after message so that ^C does not overwrite it.
  • main.cc: Do not require '--force' for generate mode.
  • ddrescue.h (Logbook::logfile_exists): Do not return false if logfile exists but is empty.
  • Added new chapter 'Using ddrescue safely' to the manual.
  • Documented that 'direct disc access' only reads whole sectors.
  • configure: Options now accept a separate argument.
  • Makefile.in: Added new target 'install-bin'.

New in ddrescue 1.17 RC 4 (Jun 11, 2013)

  • The new option "-l, --logfile-size" has been added.
  • The new option "-w, --ignore-write-errors", which makes fill mode ignore
  • write errors, has been added.
  • The option "--fill" has been renamed to "--fill-mode".
  • The option '--generate-logfile' has been renamed to '--generate-mode'.
  • The option "--sector-size" has been added as a synonym of "--block-size".
  • The option "--retries" has been added as a synonym of "--max-retries".
  • The option "--size" has been added as a synonym of "--max-size".
  • Trimming is now done from both edges of each non-trimmed block. Largest
  • blocks are trimmed first.
  • Largest blocks are now split first until logfile reaches
  • "--logfile-size" entries.
  • Ddrescue now terminates with an error if an unexpected EOF would discard
  • any successfully read data, just as it does when the input file
  • disappears from /dev.
  • During the copying phase, failed blocks containing one sector are marked
  • as bad-sector instead of as non-trimmed. This avoids reading a sector
  • twice when a cluster size of 1 is used.
  • Ddrescue now removes the last block from the logfile if it starts at the
  • end of the input file and is not marked as finished. This automatically
  • adjusts the logfile to shrinking input devices, like CD-ROMs written in
  • Track-At-Once mode.
  • A bug has been fixed that prevented status to update after the system
  • clock had been put back.
  • Ddrescuelog no more says that the logfile does not exist when it exists
  • but is empty.
  • Slow reads are now ignored during the first 10 seconds.
  • Control-C no more overwrites status message.
  • Generate mode no more requires the "--force" option when outfile is not
  • a regular file.
  • "configure" now accepts options with a separate argument.
  • The new chapter "Using ddrescue safely" has been added to the manual.
  • The manual now explains that only whole sectors can be read when "direct
  • disc access" is used.
  • The target "install-bin" has been added to the Makefile.

New in ddrescue 1.17 RC 2 (Mar 21, 2013)

  • ddrescue.h (Logbook::logfile_exists): Do not return false if logfile exists but is empty.
  • Documented that 'direct disc access' only reads whole sectors.

New in ddrescue 1.17 RC 1 (Mar 21, 2013)

  • Added new option '-l, --logfile-size'.
  • rescuebook.cc: Largest blocks are now split first until logfile reaches '--logfile-size' entries.
  • Added option '--retries' as a synonym of '--max-retries'.
  • Added option '--size' as a synonym of '--max-size'.

New in ddrescue 1.16 (Jun 19, 2012)

  • Added new option '-K, --skip-size'.
  • Added new option '-T, --timeout'.
  • Changed short name of option '--try-again' to '-A'.
  • Maximum skip size is now limited to 1% of infile size or 1 GiB (whichever is smaller), rounded to the next multiple of sector size.
  • Set current_pos to end of block when reading backwards.
  • The '-E, --max-error-rate' option now checks the rate of actually failed reads, not the growth of error size.
  • The option '-v, --verbose' now increases verbosity if repeated.
  • Changed quote characters in messages as advised by GNU Standards.
  • configure: 'datadir' renamed to 'datarootdir'.
  • New files rational.h, rational.cc.

New in ddrescue 1.16 RC 3 (Mar 14, 2012)

  • Added new option '-K, --skip-size'.
  • configure: 'datadir' renamed to 'datarootdir'.

New in ddrescue 1.16 RC 2 (Feb 23, 2012)

  • The current position is now set to the end of the block when reading backwards, allowing perfect resumability also in reverse mode.
  • 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 ddrescue 1.15 (Jan 3, 2012)

  • The new option "-a, --min-read-rate" has been added.
  • The new option "-I, --verify-input-size" has been added.
  • The new option "-x, --extend-outfile" has been added.
  • Ddrescue now verifies that infile, outfile and logfile are all different. Non-tried blocks are now read aligned to cluster-size sectors.
  • The "split or skip" algorithm of the split pass has been improved.
  • A spurious warning about "-D" being ignored in fill mode has been removed.
  • Ddrescuelog, a tool for manipulation, display, conversion, comparison and testing of ddrescue logfiles, has been added.

New in ddrescue 1.15 RC 1 (Nov 24, 2011)

  • Added new option `-I, --verify-input-size'.
  • Added new option `-x, --extend-outfile'.
  • main.cc: Verify that infile, outfile and logfile are all different.
  • Non-tried blocks are now read aligned to cluster-size sectors.
  • rescuebook.cc: Improved skip algorithm for the split pass.
  • ddrescuelog.cc: Set default block size to 512 same as ddrescue.

New in ddrescue 1.15 Pre 1 (Jan 31, 2011)

  • Added `ddrescuelog', a program for logfile manipulation.
  • drescue.cc: Renamed to io.cc.

New in ddrescue 1.14 (Jan 13, 2011)

  • Added new option `-R, --reverse'.
  • Added new option `-E, --max-error-rate'.
  • Extended syntax `--max-errors=+N' to specify new errors.
  • Changed short name of option `--retrim' to `-M'.
  • Removed spurious warning about `preallocation not available'.
  • Code reorganization. New class `Genbook'.

New in ddrescue 1.14 RC1 (Dec 4, 2010)

  • Added new option "-E, --max-error-rate".

New in ddrescue 1.14 Pre2 (Nov 29, 2010)

  • Added new option `-R, --reverse'.

New in ddrescue 1.14 Pre1 (Nov 25, 2010)

  • Extended syntax `--max-errors=+N' to specify new errors.
  • Changed short name of option `--retrim' to `-M'.
  • Removed spurious warning about `preallocation not available'.
  • Code reorganization. New class `Genbook'.

New in ddrescue 1.13 (Nov 25, 2010)

  • Non-regular output files are no more overwritten by default.
  • Added new option `--force'.
  • Added new option `--preallocate'.
  • main.cc (write_logfile_header): Write command line to logfile.
  • ddrescue.texinfo: Added info about logfile and recoverable formats.
  • ddrescue.texinfo: Added a couple more warnings to the tutorial.
  • testsuite: `test1' renamed to `test.txt'
  • Revert to use `long' instead of `time_t' for time variables. Ddrescue only needs counting seconds and `time_t' causes warnings on some systems.

New in ddrescue 1.13 RC1 (Jul 1, 2010)

  • Non-regular output files are no more overwritten by default.
  • Added new option "--force".
  • Added new option "--preallocate".
  • ddrescue.texinfo: Added a couple more warnings to the tutorial.
  • Revert to use "long" instead of "time_t" for time variables. Ddrescue only needs counting seconds and "time_t" causes warnings on some systems.

New in ddrescue 1.12 (Apr 8, 2010)

  • main.cc: Outfile is now created with mode 0666 if umask allows it.
  • main.cc: New constant "o_binary".
  • Makefile.in: Added quotes to directory names.
  • Makefile.in: Added "--name" option to help2man invocation.
  • testsuite/check.sh: Use "test1" instead of "COPYING" for testing.
  • Use "time_t" instead of "long" for time variables.

New in ddrescue 1.12 RC3 (Mar 18, 2010)

  • Use "time_t" instead of "long" for time variables.