## 17 Invoking ddrescuelog ¶

The format for running ddrescuelog is:

    ddrescuelog [options] mapfile

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.

ddrescuelog supports the following options: See Syntax of command-line arguments.

`-h`
`--help`

  Print an informative help message describing the options and exit.

`-V`
`--version`

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

`-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 table above, 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 structure). 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.

`-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 structure). 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.

`-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.

Exit status: 0 for a normal exit, 1 for environmental problems (file not found, invalid command-line options, I/O errors, etc), 2 to indicate a corrupt or invalid input file, 3 for an internal consistency error (e.g., bug) which caused ddrescuelog to panic.