ddrescuelog

Tool for ddrescue logfiles. Manipulate ddrescue logfiles, show their contents, convert them to/from other formats, compare them, and test rescue status.

Syntax
      ddrescuelog [options] [mapfile]

Options:

   mapfile   A regular file placed in an existing directory.
            Use a hyphen '-' as mapfile to read the mapfile from standard input (also in the options
            taking a mapfile argument) or to write the mapfile created by --create-mapfile to standard output. 

   -a old_types,new_types
   --change-types=old_types,new_types
       Change the status of every block in the rescue domain from one type in old_types to the corresponding type
       in new_types, much like the command 'tr' does, and write the resulting mapfile to standard output.
       old_types and new_types are strings of block status characters as defined in the chapter Mapfile structure
       (see Mapfile structure). Blocks whose status is not in old_types are left unchanged.
       If new_types is shorter than old_types the last type of new_types is repeated as many times as necessary.

   -A
   --annotate-mapfile
       Add comments containing the human-readable positions and sizes of the blocks in mapfile which are included
       in the rescue domain, and write the resulting mapfile to standard output.

   -b bytes
   --block-size=bytes
   --sector-size=bytes
       Block size used by ddrescuelog.
       Depending on the requested operation it may be the sector size of the input device, the block size of the
       rescued file system, etc. Defaults to 512. The position of each option -b in the command line is significant;
       it changes the sector size for the following options until a new option -b appears in the command line.
       See double-b.

   -B
   --binary-prefixes
       Show units with binary prefixes (powers of 1024).
       SI prefixes (powers of 1000) are used by default. (See Invoking ddrescue).

   -c[type1type2]
   --create-mapfile[=type1type2]
       Create a mapfile from a list of sectors read from standard input.
       The option --format determines the format of the input: either a list of sector numbers, or a bitmap.
       The sector numbers may be unordered. Only sectors included in the rescue domain are added to mapfile.
       If the mapfile is being created displaced from the input domain, the offset between -i and -o must be
       a multiple of the sector size. In this case, remember to specify -o because it defaults to the same value
       given to -i, producing a default offset of 0.

       type1 and type2 are block status characters as defined in the chapter Mapfile structure (see Mapfile structure).
       type1 sets the type for blocks included in the list, while type2 sets the type for the rest of mapfile.
       If not specified, type1 defaults to '+' and type2 defaults to '-'.

   -C[type]
   --complete-mapfile[=type]
       Complete a synthetic (user fabricated) mapfile by filling the gaps with blocks of type type, and write the
       completed mapfile to standard output. type is one of the block status characters defined in the chapter
       Mapfile structure (see Mapfile). If type is not specified, the gaps are filled with non-tried blocks.
       All gaps in mapfile are filled. Domain options are ignored.

   -d
   --delete-if-done
       Delete the given mapfile if all the blocks in the rescue domain have been successfully recovered.
       The exit status is 0 if mapfile could be deleted, 1 otherwise. If the mapfile is read from standard input,
       behave like --done-status. (There is nothing to delete).

   -D
   --done-status
       Test if all the blocks in the rescue domain have been successfully recovered.
       The exit status is 0 if all tested blocks are finished, 1 otherwise.

   -f
   --force
       Force overwrite of mapfile.

   -F name
   --format=name
       Select the input format for --create-mapfile, or the output format for --list-blocks.
       The valid names are 'list', 'bitmap', 'bitmap-be' (big endian), and 'bitmap-le' (little endian).
       Plain 'bitmap' is equivalent to 'bitmap-le'. The default format is 'list' (a list of block numbers).
       In a big endian bitmap the first block is represented by the most significant bit of the first byte.
       In a little endian bitmap the first block is represented by the least significant bit of the first byte.

   -h
   --help
       Print an informative help message describing the options and exit.

   -H C:H:S:track_order:bad_head
   --make-test=C:H:S:track_order:bad_head
       Create a domain mapfile simulating a failing head for the test mode of ddrescue.
       C:H:S means cylinders:heads:sectors. For discs with variable number of sectors per track, S is specified
       as 'sectors_first_track-sectors_last_track[,tracks_per_zone]'.
       track_order is one of 'F' (forward), or 'FF' (hybrid serpentine).
       bad_head is a number in the range 0 to heads - 1.

   -i bytes
   --input-position=bytes
       Starting position of the rescue domain, in bytes. Defaults to 0.
       It refers to a position in the original infile.

   -l types
   --list-blocks=types
       By default print on standard output the sector numbers of the blocks specified as any of types in mapfile
       and included in the rescue domain. The list format is one sector number per line in decimal, like the
       output of the program 'badblocks', so that it can be used as input for e2fsck or other similar filesystem
       repairing tool.

       If a bitmap --format is specified, write to standard output a bitmap of the endianness chosen, with ones for
       the sectors specified and zeros for sectors from other block types. The bits set to 1 in the bitmap should be
       equivalent to the list of blocks.

       types contains one or more of the block status characters defined in the chapter Mapfile structure (see Mapfile).
       If the output numbers or bits are being created displaced from their position in the input domain, the offset
       between -i and -o must be a multiple of the block size. In this case, remember to specify -o because it defaults
       to the same value given to -i, producing a default offset of 0.

       A sector is listed (or set to 1 in bitmap output) if selected, even partially. (The positions and sizes of the
       mapfile blocks are not required to be multiples of the sector size).

   -L
   --loose-domain
       Accept an incomplete synthetic (user fabricated) domain mapfile or compare-as-domain mapfile, and fill the gaps
       in the list of data blocks with non-tried blocks. The blocks in the mapfile may be unordered, may overlap other
       blocks of the same status, and don't need to be contiguous. This option allows making quick edits to a mapfile
       without all the size calculations involved in making all data blocks contiguous again.

   -m file
   --domain-mapfile=file
       Restrict the rescue domain to the blocks marked as finished in the mapfile file.

   -n
   --invert-mapfile
       Invert the types of the blocks in mapfile which are included in the rescue domain, and write the resulting
       mapfile to standard output. Finished blocks ('+') are changed to bad-sector ('-'), all other types are changed
       to finished. --invert-mapfile is equivalent to --change-types=?*/-+,++++-

   -o bytes
   --output-position=bytes
       Starting position of the image of the rescue domain in the original outfile, in bytes.
       It is used by the options --create-mapfile, --list-blocks, and --shift. Defaults to --input-position.

   -p file
   --compare-mapfile=file
       Compare the types of the blocks included in the rescue domain.
       The exit status is 0 if all the blocks tested are the same in both file and mapfile, 1 otherwise.

   -P file
   --compare-as-domain=file
       Compare only the blocks marked as finished in the rescue domain.
       The exit status is 0 if all the blocks tested are the same in both file and mapfile, 1 otherwise.
       Two files comparing equal with this option are equivalent when used as domain mapfiles.

   -q
   --quiet
       Quiet operation. Suppress all messages.

   -s bytes
   --size=bytes
       Maximum size of the rescue domain in bytes.
       It refers to a size in the original infile.
       -1 removes any previous size limit.

   -t
   --show-status
       Print a summary of the contents of each mapfile to the standard output.
       This option allows more than one mapfile. If the domain setting options are used, the summary
       can be restricted to one or several parts of mapfile.

   -v
   --verbose
       Verbose mode. Further -v's (up to 4) increase the verbosity level.

   -V
   --version
       Print the version number of ddrescue on the standard output and exit.
       This version number should be included in all bug reports.

   -x file
   --xor-mapfile=file
       Perform a logical XOR (exclusive OR) operation between the finished blocks in file and those in
       mapfile, and write the resulting mapfile to standard output. In other words, in the resulting
       mapfile a block is only shown as finished if it was finished in either of the two input mapfiles
       but not in both.

   -y file
   --and-mapfile=file
       Perform a logical AND operation between the finished blocks in file and those in mapfile,
       and write the resulting mapfile to standard output. In other words, in the resulting mapfile a
       block is only shown as finished if it was finished in both input mapfiles.

   -z file
   --or-mapfile=file
       Perform a logical OR operation between the finished blocks in file and those in mapfile,
       and write the resulting mapfile to standard output. In other words, in the resulting mapfile
       a block is shown as finished if it was finished in either of the two input mapfiles.

   --shift
       Shift the positions of all the blocks in mapfile by the offset (--output-position - --input-position),
       and write the resulting mapfile to standard output. Either --input-position or --output-position must
       be 0. Any blocks beyond the end of the rescue domain are removed before performing the shift.
       The remaining blocks are shifted even if they are outside the rescue domain.
       If the offset is positive, a non-tried block is inserted before the first block to fill the gap. 

   --  Terminates all options; any following arguments are treated as non-option arguments, even if they begin
       with a hyphen.

Ddrescuelog operations can be restricted to one or several parts of the mapfile if the domain setting options are used.

Exit Status

ddrescue written by Antonio Diaz Diaz, download from the GNU web site.

Examples

Delete the mapfile if the rescue is finished (all data have been recovered without errors left):

ddrescue -f /dev/sda /dev/sdb mapfile
ddrescuelog -d mapfile

Rescue two ext2 partitions in /dev/sda to /dev/sdb and repair the file systems using badblocks lists generated with ddrescuelog. File system block size is 4096. Note: you do need to partition /dev/sdb beforehand:

fdisk /dev/sdb                           # partition /dev/sdb
ddrescue -f /dev/sda1 /dev/sdb1 mapfile1
ddrescue -f /dev/sda2 /dev/sdb2 mapfile2
ddrescuelog -l- -b4096 mapfile1 > badblocks1
ddrescuelog -l- -b4096 mapfile2 > badblocks2
e2fsck -v -f -L badblocks1 /dev/sdb1
e2fsck -v -f -L badblocks2 /dev/sdb2

Rescue a whole disc with two ext2 partitions in /dev/sda to /dev/sdb and repair the file systems using badblocks lists generated with ddrescuelog. Disc sector size is 512 (first -b), file system block size is 4096 (second -b). Arguments to options -i and -s are the starting positions and sizes of the partitions being rescued. Note: you don't need to partition /dev/sdb beforehand, but if the partition table on /dev/sda is damaged, you'll need to recreate it somehow on /dev/sdb:

ddrescue -f /dev/sda /dev/sdb mapfile
fdisk /dev/sdb                                  # get partition sizes
ddrescuelog -l- -b512 -i63s -o0 -s767457s -b4096 mapfile > badblocks1
ddrescuelog -l- -b512 -i767520s -o0 -s96520s -b4096 mapfile > badblocks2
e2fsck -v -f -L badblocks1 /dev/sdb1
e2fsck -v -f -L badblocks2 /dev/sdb2

“I was brought up to believe that a person must be rescued when drowning, regardless of religion and nationality” ~ Irena Sendler

Related Linux commands

ddrescue - Data recovery tool, save data from a crashed partition.
GNU ddrescue Manual.
ddrescue for OS X - macosxhints.
dd - Data Duplicator - Convert and copy a file.


 
Copyright © 1999-2026 SS64.com
Some rights reserved