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.