Manned.org

dar

DAR(1)                       General Commands Manual                      DAR(1)

NAME
       dar - creates, tests, lists, extracts, compares, merges, isolates,
       repairs dar archives

SYNOPSIS
       dar [-c | -t | -l | -x | -d | -+ | -C | -y] [[<URL>]<path>/]<basename>
       [<options>] [<user targets>]

       dar -h

       dar -V

DESCRIPTION
       dar is a full featured backup tool, aimed for local and remote disks
       (floppy, CD-R(W), DVD-R(W), zip, jazz, hard-disks, usb keys, etc.) cloud
       storage (by mean of ftp or sftp protocols) and also adapted to tapes.


       dar can store a backup in several files (called "slices" in the
       following) of a given size, eventually pausing or running a user
       command/script before starting the next slice. This can allow for
       example, the burning of the last generated slice on a DVD-R(W), Blue-ray
       Disk, or changing of usb key before continuing on the next one.  Like its
       grand-brother, the great "tar" command, dar may also use compression, at
       the difference that compression is used inside the archive to be able to
       have compressed slices of the defined size.

       But the most important feature of dar is its ability to make
       differential, incremental and decremental backups. In other words,
       backups that contain only new files or files that have changed from a
       backup of reference. Binary delta is available but not activated by
       default: in combination with differential and incremental backups, it
       leads not only to not save a file that has not changed (thing dar does
       without binary delta), but also to only save an rsync patch of any
       modified file, which lead to even smaller backups.

       Moreover with differential backup, dar also stores files that have been
       deleted since the backup of reference. Thus, when restoring, first a full
       backup, then additional differential backups, at each restoration you get
       the exact state of the filesystem at the time the differential backup was
       made.  dar is the first backup program I know that can also remove files
       during restoration! By the way, in this document, "archive" and "backup"
       are used interchangeably, the difference is the purpose you build them
       for.

       Unlike the tar command, dar has not to read a whole archive nor to stick
       together the different parts (the slices) to access its contents: dar
       archives contain a table of contents (aka "catalogue") located at the
       end, so dar can seek into the archive to read only the required data to
       restore files, thing which is much faster than what tar is used to do.
       The "catalogue" can be copied out of the archive (operation called
       isolation) to be used as reference for further backup and as backup of
       the internal catalogue in case of archive corruption.

       Dar can also use a sequential reading mode, in which dar acts like tar,
       just reading byte by byte the whole archive to know its contents and
       eventually extracting file at each step. In other words, the archive
       contents is located at both locations, a first time all along the archive
       used for tar-like behavior suitable for sequential access media (tapes)
       and a second time at the end for faster access, suitable for random
       access media (disks).  However note that tar archive and dar archive are
       not compatible. Note also that the sequential reading mode let you
       extract data from a partially written archive (those that failed to
       complete due to a lack of disk space for example) and since release 2.6.0
       such truncated archive can be repaired to become a normal archive (the
       "catalogue" is rebuilt from inlined information).

       Dar is able to save and restore to a cloud storage by mean of ftp or sftp
       network protocols. It can also leverage ssh protocol using dar_slave and
       dar_xform two auxiliary programs provided beside dar.

       Dar format is quite robust against corruption: Only the file where the
       corruption took place in the archive will not be possible to restore. To
       have the possibility to repair a corrupted archive dar can work with par2
       seamlessly just specifying "par2" on command-line (see /etc/darrc). Last
       a "relax" reading mode is available which let dar to either ignore some
       incoherence in archive structure, use internal redundant information to
       overcome data corruption or in last resort asking the user on what to do
       when some archive structure information is missing (-al option). This
       relax mode can be used with both sequential and direct access read modes.
       Note that you should rather use Parchive to protect your data rather than
       just relying on the "relax" mode, which has to be seen as a the last
       chance solution.

       dar takes care of POSIX Extended Attributes (EA in short) that are used
       in particular under Linux to carry File Access Control List (FACL) as
       well as security attributes for SELinux, and also under MacOS X EA they
       are used to store file forks. EA also have room for user to add any key /
       value pair to any file, this is known as user EA. These attributes are
       not specific to any particular filesystem, they exist the same way under
       ext3/4, HFS+ and any other filesystem.

       dar also takes care of Filesystem Specific Attributes (FSA in short)
       which are, as you can guess, specific to one or several filesystem(s).
       For example the Birth date of a file exists for HFS+ and NTFS but not for
       ext2/3/4 filesystem. The immutable attribute exists for ext2/3/4 but not
       for NTFS while the nodump files does not exists for NTFS but exists for
       HFS+, ext2/3/4 and many other Unix filesystems.

       Sparse files (files with holes that system reports using several hundred
       gigabytes while they effectively use a few kilobytes on disk) are also
       well managed by dar: they are detected, stored and restored to filesystem
       properly.

       Last, dar is also able to properly save and restore hard-links

WARNING
       This document is to be considered as a full reference of dar/libdar
       features. It is however not adapted to discover dar, for that purpose
       some tutorials are provided in dar documentation. Once you have
       apprehended the basic dar usages you are welcome to read further this
       document to see all other features you may find useful for your needs.

DOCUMENT STRUCTURE
       The rest of this document is organized that way:

              COMMANDS
                   The eight actions you can performs with dar

              GENERAL OPTIONS
                   A set of options common to all actions

              SAVING, ISOLATING, MERGING AND REPAIRING SPECIFIC OPTIONS
                   A set of options that are specific to the operation of
                   backup, catalogue isolation and archive merging

              RESTORATION SPECIFIC OPTIONS
                   A set of options that are specific to the restoration
                   operation

              TESTING AND DIFFERENCE SPECIFIC OPTIONS
                   A set of options that are specific to the operation of
                   archive testing and archive comparison with a filesystem

              LISTING OPTIONS
                   A set of options that are specific to archive listing
                   operation

              EXPLICIT OPTIONAL ARGUMENTS
                   Some system do not allow optional arguments to options, this
                   chapter explain how to overcome this restriction

              USAGE MADE OF STDIN/STDOUT/STDERR BY DAR
                   What message type you get on stdout or stderr, how input are
                   fetched from the terminal

              EXIT CODES
                   List of values dar returns at end of execution. This chapter
                   should be read if you intend to create scripts relying on dar

              SIGNALS
                   details the signal and their action on a running dar process

              FILES
                   List configuration files that dar checks for

              CONDITIONAL SYNTAX
                   Over command line, command and options can be passed to dar
                   thanks to a plain file (known as DCF file). This plain file
                   can also contain a specific syntax that will let you pass an
                   option to dar only under certain situation/condition. This
                   chapter describes this simple syntax and the different
                   available conditions.

              USER TARGETS
                   User can add their own conditions known as user targets. This
                   chapter describes what they are and how to use them

              ENVIRONMENT
                   Dar may rely on environment variables to look for DCF files
                   and DUC files, SFTP private and public key and so on.


COMMANDS AND OPTIONS
       COMMANDS:

       Only eight commands define what action will be done by dar: Archive
       creation, archive extraction, archive listing, archive testing, archive
       comparison with filesystem, catalogue isolation, archive merging and
       archive repairing. These commands are described here below.

       Once defined, a large set of options can be used to modify the way the
       command is performed. These options are described just after the commands
       chapter.

       Important note: Not all systems actually support long options (Solaris,
       FreeBSD, ...). For example --create will not be available on these
       systems, and you will have to use -c instead. In the same way, not all
       systems do support optional arguments (FreeBSD without GNU getopt for
       example), you then need to explicitly give the argument, for example in
       place of "-z" you will need to give "-z 9", see "EXPLICIT OPTIONAL
       ARGUMENTS" paragraph near the end of this document for details on that
       point.

       A slice is just a simple file which name is composed of a "basename"
       followed by a dot, then a number, again a dot and the extension (dar) to
       form the filename of that slice. On the command line you will never have
       to give the full file name of a slice, just the basename. The number
       between the dots is the slice number, which starts from 1 and may be
       arbitrary large (as large as your system can support the corresponding
       filename). For example "my_first_archive.42.dar" is the 42th slice of the
       archive which basename is "my_first_archive".

       -c, --create [[<URL>]<path>/]<basename>
                           creates a backup with the name based on <basename>.
                           All the slices will be created in the directory
                           <path> if specified, details about the <URL> syntax
                           is explained below at Remote repository syntax
                           paragraph.  Without <path> nor <URL> the current
                           directory is used. If the destination filesystem is
                           too small to contain all the slices of the backup,
                           the -p option (pausing before starting new slices)
                           might be of interest. Else, in the case the
                           filesystem is full, dar will suspend the operation,
                           asking for the user to make free space, then continue
                           its operation. To make free space, the only thing you
                           cannot do is to touch the slice being written. If the
                           filename is "-" *and* no slicing is asked for (no -s
                           option) the archive is produced on the standard
                           output allowing the user to send the resulting
                           archive through a pipe (or into a tape device
                           directly or using the dar_split command).

       -x, --extract [[<URL>]<path>/]<basename>
                           extracts files from the given backup. Slices are
                           expected to be in the current directory or in the
                           directory given by <path> (see also Remote repository
                           syntax below). It is also possible to use symbolic
                           links to gather slices that are not in the same
                           directory. Path may also point to a removable device
                           (floppy, CD, USB key, etc.), in this case, to be able
                           to mount/unmount the device, you must not launch dar
                           from that directory. In other words, the current
                           directory must not on the removable media you plan to
                           unmount (see tutorial for details). The basename may
                           be set to "-", in direct access mode (the default
                           historical mode), you will then need dar_slave to
                           work with dar (see -i and -o options, as well as
                           dar_slave man page). However in sequential read mode
                           (--sequential-read is used on command-line), dar will
                           read the archive from standard input (see also -i
                           option), this can eventually be used in combination
                           with dar_split.

       -l, --list [[<URL>]<path>/]<basename>
                           lists the contents of the given backup (see also
                           Remote repository syntax below) dar will only require
                           the last slice of the archive in direct access mode.
                           If however sequential mode is used, dar will read the
                           overall archive, from the first slice to the last
                           one. "-" can be used as basename, the behavior is the
                           same as with -x option (read just above).

       -t, --test [[<URL>]<path>/]<basename>
                           checks the backup integrity. Even without
                           compression, dar is able to detect at least one error
                           per file in the archive, thanks to a variable length
                           CRC recorded per file data, file EA and file FSA in
                           the catalogue. Archive structure (slice header,
                           archive header, catalogue) is also protected by CRC
                           to be able to detect any kind of archive corruption.
                           Same remark here, "-" may be used as basename (see -x
                           option above for details).

       -d, --diff [[<URL>]<path>/]<basename>
                           compares saved files in the backup with those on the
                           filesystem. <basename> may also be "-" (see -x option
                           above for details). Note that the target for this
                           operation is to be seen as a step further than
                           archive testing, where in addition to archive
                           coherence, the archive contents is verified to be the
                           same as what is found on the filesystem. But if new
                           files are present on the filesystem, dar ignores
                           them. If you want to check for changes since a
                           archive has been made, better use dry-run
                           differential backup.

       -C, --isolate [[<URL>]<path>/]<basename>
                           isolate a catalogue from its archive (that's to say
                           make a copy of the internal catalogue to its own
                           archive container). The argument is the basename of
                           the file to create which will contain the catalogue's
                           copy. The -A option is mandatory here to give the
                           name of the archive to copy the catalogue from, this
                           archive is not modified at all. Slicing is available
                           (-s -S -p -b etc.). If the filename is "-" *and* no
                           slice is asked (no -s option) the isolated catalogue
                           is produced on the standard output, allowing the user
                           to send the resulting archive through a pipe. Note
                           that there is quite no difference in concept between
                           an isolated catalogue and an archive. Thus you can do
                           all operations on an isolated catalogue, in
                           particular take it in place of the original backup as
                           reference for a differential archive, archive
                           testing, archive comparison. Note however that for
                           comparison (-d option) as data is not present in the
                           isolated catalogue, dar relies on embedded CRC rather
                           than comparing data byte by byte  (what is done with
                           a plain archive), and no comparison can be performed
                           concerning EA or FSA even if each of them have their
                           own CRC in the catalogue because different ordering
                           as provided by the OS of the items composing EA and
                           FSA may lead the CRC to be different while the EA or
                           FSA are exactly the same, so CRC here is used only to
                           detect archive corruption. Since release 2.4.0 you
                           can use an isolated catalogue to rescue a corrupted
                           internal catalogue of the archive it has been based
                           on (see -A option).

       -+, --merge [[<URL>]<path>/]<basename>
                           create a subset archive from one or two existing
                           archives (the resulting archive name is the argument
                           to this command). The dar file selection mechanism
                           (see GENERAL OPTIONS) let the user decide which files
                           will be present in the resulting archive and which
                           one will be ignored. This option thus let the user
                           merge two archives in a single one (with a filtering
                           mechanism that accepts all files), as well as this
                           option let the user create a smaller archive which
                           data is taken from one or two archives of reference.
                           Note that at no time the contents of the archives of
                           reference is extracted to real files and directories:
                           this is an archive to archive transfer, thus you may
                           lack support for Extended Attribute while you will be
                           able to fully manipulate files with their Extended
                           Attributes from one archive to the resulting one. If
                           the basename is "-" *and* no slice is asked (no -s
                           option), the archive is produced on standard output
                           allowing the user to send the resulting archive
                           through a pipe. The first mandatory archive of
                           reference is provided thanks to the -A option, while
                           the second "auxiliary" (and optional) archive of
                           reference is provided thanks to the -@ option. When a
                           tie contention occurs (same file names from both
                           archive have to be merged), the overwriting policy
                           (-/ option) is used to define the one to keep in the
                           resulting archive. By default, archive data selected
                           for merging is uncompressed, and re-compressed. Thus
                           the merging operation can be used to change
                           compression algorithm of given archive as well as
                           change its encryption. But, for better performance it
                           is also possible thanks to the -ak option (see below
                           the -ak option for usage restrictions) to merge files
                           keeping them compressed, thus no decompression/re-
                           compression is performed at all, which make the
                           operation faster. Last it is not possible to merge
                           two isolated catalogues.

       -y, --add-missing-catalogue [[<URL>]<path>/]<basename>
                           create a "repaired" archive based on the archive
                           given with -A option. The repairing only concerns the
                           case where an archive has been interrupted and dar
                           could not cleanly end the archive creation process
                           (lack of disk space, power outage, and so on). This
                           operation consists in reading the tape marks in
                           sequential reading mode to gather the content of the
                           archive and once its end is reached, to recreate the
                           missing table of content (aka catalogue) located at
                           the end of the archive. Note that the damaged archive
                           is not modified but a repaired copy is built beside
                           it. Why not just appending the catalogue to the
                           archive? Because first it was simpler to implement
                           allowing to reuse routines of the merging operation,
                           second by precaution for dar to not mess an existing
                           archive due to a bug and last, it would not be
                           compatible with archive signing and gpg encryption
                           under certain conditions (several recipients or the
                           archive is signed and you are not the one who signed
                           it).

              During the repairing operation, the repaired archive may have a
              different slicing (-s and -S options), a different encryption (-K
              and associated options, including gpg encryption and signing), a
              different repository slices permissions and ownership (--slice-
              mode option), user comment (--user-comment), generated hash
              (--hash) and min digits in slice number (--min-digits), but
              compression cannot be changed and tape marks cannot be removed
              (you can do it once repair has completed using the merging
              operation). Last, file filtering is not allowed during archive
              repairing.

       -h, --help          displays help usage.

       -V, --version       displays version information.

       Remote repository syntax for [<URL>]<path>

              for all commands described above as well as some options detailed
              below (-A and -@ options), the <path> optional argument can be a
              Unix path like /var/tmp when the archive is located on the host
              dar runs on. But it can also make use of <URL> to define the
              remote host the archive is to be read or written to. "<URL><path>"
              follows the usual syntax:

                     proto://[login[:password]@]hostname[:port]/path

              proto
                 is either ftp or sftp

              login
                 is optional, if not provided it defaults to anonymous.  If the
                 login string comports an @ it need to be escaped by \\ (a pair
                 of backshashes) to avoid libdar considering it the hostname
                 starting part. Example: login is me@here.com host is
                 www.example.org gives:
                 sftp://me\\@here.com@www.example.org/some/file. You may also
                 need to escape the same way any other special characters like
                 for example colon (:) slash (/) if they are part of the login
                 string.

              password
                 if login is provided, the associated password may be given
                 after a colon (:) but this exposes the secret password to other
                 users of the current system having access the table of process
                 (using top, ps, /proc or other ways). If the login is given
                 without password, the password will be asked interactively by
                 dar at run time, which is much more secure. Alternatives are
                 either to rely on ˜/.netrc for FTP transfers (for that you need
                 to use the --alter=file-authentication option described below),
                 or for SFTP transfers you can rely on public key authentication
                 (you also have to use --alter=file-authentication in that case
                 to avoid a password being asked interactively).

              hostname
                 is the name or IP address of the host to connect to. For sftp
                 the server's public key is checked against the
                 ˜/.ssh/known_hosts file (or the file pointed to by then
                 environment variable DAR_SFTP_KNOWNHOST_FILE, see more details
                 about that variable at the bottom of this man page), the host
                 must be known and the public key received from the network must
                 match the one in that file, else dar aborts. If thus you want
                 to operate with a new sftp server, first use ssh of sftp
                 commands to do the usual fingerprint verifications which
                 updates the known_hosts file accordingly, then run dar/libdar
                 toward this sftp server.

              port
                 if not provided, dar will use the default/standard port in
                 regard to the protocol specified in the "proto" field

              path
                 a unix path where resides the archive to read from the remote
                 repository or where to write the archive to in that remote
                 repository. The given path is absolute, in regard to the remote
                 root filesystem available for the given account though the
                 requested protocol. See also --network-retry-delay option
                 below.

       GENERAL OPTIONS:

       -v, --verbose       For backward compatibility, this is an alias to "-vt
                           -vm" (both options set).

       -vs, --verbose=skipped
                           Display files skipped because of file filtering
                           exclusion specified by the user

       -vt, --verbose=treated
                           Display treated files because of file filtering
                           inclusion specified by the user or no file filtering
                           specified at all. For each file a message is
                           displayed *before* the file is treated. This option
                           is not available for archive isolation and is useless
                           for archive listing as it is always set, unless -q is
                           used.

       -vd, --verbose=dir  Display the directory under process. The messages
                           shows *before* entering a directory. You can have a
                           less verbose output than -vt while are still able to
                           follow what's dar is doing. Note that -vt and -vd are
                           mutually exclusive.

       -vm, --verbose=messages
                           Display detailed messages about what dar is currently
                           performing but not related to currently treated or
                           skipped files and directories

       -vf, --verbose=finished
                           Issues a summary *after* each treated directory
                           containing the amount of data backed up in that
                           directory as well as the average compression ratio.
                           This option is only available for archive creation.

       -va, --verbose=all  is equivalent to -vm -vs -vt, see also -Q and -q
                           options below. Note: When using dar from a script
                           better use dar's exit status to know which way the
                           operation has ended (seen EXIT CODES at the end of
                           this document).

       -vmasks, --verbose=masks
                           Display raw information about the masks set by dar
                           and passed to libdar

       -avc, --alter=verbose-libcurl
                           activate verbose output from libcurl (remote
                           repositories context). This is to be considered as a
                           debug option relative to remote connection problems.

       -q, --quiet         Suppress the final statistics report. If no verbose
                           output is asked beside this option and -qcrypto (see
                           below), nothing is displayed if the operation
                           succeeds. When using dar from a script better use
                           dar's exit status to know which way the operation has
                           ended (seen EXIT CODES at the end of this document)

       -qcrypto, --quiet=crypto
                           Disable the warning that shows when reading a
                           ciphered backup about the impossibility to detect a
                           wrong key

       -b, --beep          makes the terminal ring when user action is required
                           (like for example the creation of a new slice using
                           the -p option)

       -B, --batch <filename>
                           In the file which name is given in argument to this
                           option, You can put any option or argument as used on
                           command line, that will be parsed as if they were in
                           place of the "-B <filename>" option. This way you can
                           overcome the command line size limitation. Commands
                           in the file may be disposed on several lines, and -B
                           option can also be used inside files, leading a file
                           to include other files. But an error occurs in case
                           of loop (a file that includes itself directly or not)
                           and DAR aborts immediately. Comments are allowed, and
                           must start by a hash `#' character on each line. Note
                           that for a line to be considered as a comment the
                           hash character must be the first character of the
                           line (space or tab can still precede the hash). See
                           Conditional Syntax below for a richer syntax in this
                           type of configuration files known as DCF file (Dar
                           Configuration File). See also the environment
                           variable DAR_DCF_PATH in the ENVIRONMENT section at
                           the end of this document.

                           Note that you can use quotes simple (´arg´) double
                           ("arg") and back-quotes (`arg`) inside such file, but
                           they need to be balanced (have an ending one). To use
                           such character without the meaning of a quote, for
                           example as an apostrophe, you need to escape it using
                           a back-slack ("That\'s an example"). Of course to add
                           a single back-slash as a normal character in the file
                           you will have to double it ("c:\\windows" for
                           example)

       -N, --noconf        Do not try to read neither ˜/.darrc nor /etc/darrc
                           configuration files. See files section below.

       -Q                  Do not display an initial warning on stderr when not
                           launched from a terminal (when launched from a
                           cronjob for example). This means that all questions
                           to the user will be answered by 'no', which most of
                           the time will abort the program. Please note that
                           this option cannot be used in a configuration file
                           (-B option). Since version 2.2.2, giving this option
                           also forces the non-interactive mode, even if dar is
                           launched from a terminal. This makes it possible for
                           dar to run in the background. When you do, it's
                           recommended to also redirect stdout and/or stderr to
                           files: dar -Q ... &> /dev/null &

       -n, --no-overwrite  do not allow overwriting

                           If an overwriting policy is specified (see -/ option)
                           -n option do only apply to slices overwriting, the
                           overwriting of files during restoration or merging is
                           handled by the overwriting policy. Without
                           overwriting policy, -n applies to restored files as
                           well as generated slices.

       -w, --no-warn       Do not warn before overwriting (applied for slice
                           overwriting and for overwriting decision make by the
                           overwriting policy). By default overwriting is
                           allowed but a warning is issued before proceeding.
                           This option may receive 'a' as argument (see just
                           below):

       -wa, --no-warn=all  This implies the -w option, and means that over
                           avoiding warning for file overwriting, DAR also
                           avoids signaling a file about to be removed when its
                           type is not the expected one. File are removed when
                           they have been recorded as deleted since the archive
                           of reference. At restoration of the differential
                           archive, if a file of the given name exists, it is
                           remove, but if the type does not match the file that
                           was present at the time of the archive of reference
                           (directory, plain file, fifo, socket, char or block
                           device, etc.), a warning is normally issued to
                           prevent the accidental removal of data that was not
                           saved in the backup of reference. (See also -k
                           option)

       -A, --ref [[<URL>]<path>]/<basename>
                           Depending on the context, it specifies the archive to
                           use as reference, which is mandatory for archive
                           isolation (-C option) and merging operation (-+
                           option). Else it specifies the rescue catalogue to
                           use when restoring (-x command), testing (-t command)
                           or comparing (-d command) an archive. All slices of
                           the reference backup are expected to be on the same
                           directory given by <path> or the current directory by
                           default. Usually only the last slice is required to
                           extract the catalogue of reference. If necessary the
                           use of symbolic links is also possible here to gather
                           slices that do not reside in the same directory. You
                           can also point <path> to a USB key, DVD-R(W) or any
                           other mounted directory, because dar will pause and
                           ask the user for required slices if they are not
                           present. The argument to -A may be of four types:

                                  - An existing archive basename, which will be
                                  taken as reference

                                  - a dash ("-") in direct access mode (default
                                  mode, when --sequential-read is not used) it
                                  may imply the use of -o and -i options, this
                                  allows the archive of reference to be read
                                  from a pair of pipes with dar_slave at the
                                  other ends. Dar_slave can be run through ssh
                                  on a remote host for example. Note that this
                                  type of argument ("-") is only available when
                                  -A is used for isolation (-C option) and
                                  merging (-+ options). In sequential mode
                                  (--sequential-read is used), the archive of
                                  reference is read from standard input or from
                                  the named pipe specified by -i option. -o
                                  option has no use in sequential mode. Note
                                  that merging operation (-+ option) cannot read
                                  archive of reference in sequential mode.

                                  - a plus sign ("+") which makes the reference
                                  be the current directory status. This argument
                                  is only available for archive creation (-c
                                  option). In other word, no file's data will be
                                  saved, just the current status of the inodes
                                  will be recorded in the catalogue. This
                                  feature is known as the "snapshot" backup. A
                                  snapshot backup can be used as reference later
                                  on to detect or save only the files that have
                                  changed since the snapshot was made.

                                  - a <date>, if -af option has been placed
                                  before -A on the command-line or in a included
                                  file (see -B option). For more about that
                                  feature see -af option below.

                           During backup operation (-c option) the archive of
                           reference, given thanks to the -A option, is used for
                           comparison with existing files on the filesystem. Dar
                           will then backup only files that have changed since
                           the archive of reference was done. If no -A option is
                           given, the backup operation is a full backup. With -A
                           option if the archive of reference is a full backup
                           some call it a differential backup, while if the
                           archive of reference is differential backup, some
                           call this type of backup an incremental backup. For
                           dar there is no difference in structure between
                           incremental and differential backup, both are usually
                           designed globally as "differential" backup in the
                           documentation.

                           During merging operation (-+ option), the contents of
                           the -A given archive will been taken eventually with
                           the contents of the -@ auxiliary archive if specified
                           (see below), to form a new archive from files of this
                           or these archives. Note that you can filter out files
                           from the operation and setup subset of the original
                           archive(s).

                           During Catalogue isolation (-C option), dar will
                           create the isolated catalogue from the one given with
                           -A option.

                           During testing, diff or extraction, (-t, -d or -x
                           options respectively), the table of contents (the
                           catalogue) will be read from the archive given with
                           -A instead of using the internal catalogue of the
                           archive. The archive given for rescue must has been
                           previously isolated from this same archive (else the
                           contents will not match and dar will refuse to
                           proceed to this operation). This acts as a backup
                           solution to the case of corruption inside an
                           archive's catalogue, while the best way is still to
                           use Parchive to protect your data against media
                           error.

       -af, --alter=fixed-date
                           Modify the -A option behavior, making it receiving a
                           <date> as argument in place of the
                           [<path>]/<basename> default argument. This feature is
                           available for archive creation (-c option) and
                           archive restoration from a dar_manager database (see
                           -aefd option). In any case it must be placed before
                           -A option to have an effect.

                           For archive creation, the <date> is used to define
                           which file to save: file which modification is newer
                           or equal to <date>, and which to consider unchanged:
                           those older than <date>.

                           For archive restoration from a dar_manager database,
                           the given date defines the latest state into which to
                           restore the data and EA. Without this option, the
                           most recent availabe state is restored.

                           the <date> is passed to -A option (which must follow
                           -af option) and is expected to be a date in the two
                           following possible formats:
                                  - a number of second since Jan 1st, 1970
                                  - a date with the following structure
                                  [[[year/]month/]day-]hour:minute[:second]

                           Here are some examples of date:
                                  "-af -A 91836383927108078"
                                  "-af -A 2005/11/19-19:38:48" Which is 38 past
                                  7 PM and 48 seconds, the 19th of November 2005
                                  "-af -A 20:20" Which is 20 minutes past 8 PM
                                  of the current day
                                  "-af -A 2-00:08" Which is 8 minutes past noon,
                                  the second day of the current month
                                  "-af -A 2/2-14:59" Which is 1 to 3 PM, the 2nd
                                  of February in the current year

                           Note that the provided date is relative to the system
                           timezone which is overridden if the TZ environment
                           variable is set (see tzselect(1) for more details)

       -@, --aux [[<URL>]<path>]/<basename>, --on-fly-isolate
       [<path>]/<basename>
                           specifies an auxiliary archive of reference (merging
                           context) or the name of the on-fly isolated catalogue
                           (creation context). This option is thus only
                           available with -+ option (merging) and -c option
                           (archive creation). Note that --aux and --on-fly-
                           isolate are really aliases to the same option, this
                           is the context of use (archive creation or merging)
                           which lead it to behave a way or another.

                           In a merging context, over -A option which is
                           mandatory, you may give a second archive of reference
                           thanks to the -@ option. This allows you to merge two
                           archives into a single one. See also -$ option
                           (encryption) -˜ option (command execution) and -%
                           (crypto block size) for other options concerning
                           auxiliary archive of reference. They are the
                           respective equivalent of -J, -F and -* options
                           relative to archive given thanks to -A option.

                           In a backup context -@ option let the user specify
                           the archive name for an on-fly isolation. With on-fly
                           isolation, you can also use -$ option (to define
                           encryption algorithm and passphrase), -˜ option (to
                           execute a command once the on-fly isolated catalogue
                           is completed) and -% option (crypto block size). On-
                           fly isolated catalogue is always bzip2 if possible
                           else gzip else lzo compressed (using compression
                           level 9) else not compressed, and it is also always a
                           single sliced archive. Due to command-line exiguity,
                           it is not possible to change compression algo nor
                           slice size for the on-fly isolation. If you need a
                           more complicated isolation, either look for a GUI
                           over libdar, or do a normal (= not an on-fly)
                           isolation operation (By the way it is possible to
                           isolate an already isolated catalogue, this is
                           equivalent to doing a copy, but you can change
                           encryption, compression or slicing, for example), you
                           can also use dar_xform on an isolated catalogue if
                           you only want to change slices size (this is faster
                           as no decompression/re-compression nor
                           encryption/decryption is necessary). Using the
                           merging operation on an isolated catalogue instead of
                           isolating the isolated catalogue, leads the resulting
                           archive to not be able to be used as a rescue for
                           internal catalogue of the original archive. --aux-ref
                           is a synonym to --aux.

       -R, --fs-root <path>
                           The path points to the directory tree containing all
                           the files that will be enrolled in the operation
                           (backup, restoration or comparison). By default the
                           current directory is used. All other paths used in -P
                           or -g options on the command line are and must be
                           relative to this path (or to current directory if -R
                           is not present). Note that -R is useless for testing
                           (-t option) isolation (-C option) and merging (-+
                           option). See also -ap option.

       -X, --exclude <mask>
                           The mask is a string with wildcards (like * and ? see
                           glob(7) for details) which is applied to filenames
                           which are not directories. If a given file matches
                           the mask, it is excluded from the operation. By
                           default (no -X on the command line), no file is
                           excluded from the operation. -X may be present
                           several times on the command line, in that case a
                           file will not be considered for the given operation
                           if it matches at least one -X mask. See also -ar and
                           -am options.

       -I, --include <mask>
                           The mask is applied to filenames which are not
                           directories (see glob(7) for details on wildcard
                           characters). If a given file matches the mask and
                           does not match any mask given with -X, the file is
                           selected for the operation. By default (no -I and no
                           -X on the command line), all files are included for
                           the operation. -I may be present several times on the
                           command line, in that case all files that match one
                           of the -I mask will be considered for the given
                           operation, if they do not also match one of the -X
                           mask. See also -ar and -am options.

       -P, --prune <path>  Do not consider file or directory sub-tree given by
                           the path. -P may be present several time on the
                           command line. The difference with -X is that the mask
                           is not applied only to the filename, but also
                           includes the path. Moreover it applies also to
                           directories (-X does not). By default (no -P on the
                           command-line), no sub-tree or file is excluded from
                           the operation, and the whole directory tree (as
                           indicated by -R option) is considered. Note that
                           <path> may contains wildcards like * or ? see glob(7)
                           or regex(7) man page for more information as well as
                           -ar option to use regex instread of glob expressions.

       -g, --go-into <path>
                           Files or directory to only take in account, as
                           opposed to -P. -g may be used several time on
                           command-line. Same thing here, the difference with -I
                           is that the mask is applied to the path+filename and
                           also concerns directories. By default all files under
                           the -R directory are considered. Else, if one or more
                           -g option is given, just those are selected (if they
                           do not match any -P option). All paths given this way
                           must be relative to the -R directory, which defaults
                           to current directory.  Warning, -g option cannot
                           receive wildcards, these would not be interpreted.

       -[, --include-from-file <listing_file>[:<eols>]
                           Files listed in the listing file are included for the
                           operation. No wildcard expression is interpreted in
                           the listing file. <eols> is expected to be a comma
                           separated list of End Of Line Sequences. If no <eols>
                           is specified, lines in the listing file must be
                           separated by either '\n' or '\r\n' sequence of
                           character, which is equivalent to provide
                           <listing_file>:'\n','\r\n'. You can provide as many
                           sequences as you want, but the longuest match will
                           always be preferred if two sequences share the same
                           beginning. If your filename contains a colon (:) you
                           must add an eols or the default one
                           (<filename_with_colon>:'\n','\r\n'). If your eols
                           must contain a comma (,) or a backslash (\) you
                           should escape them with a backslash: '\,' and '\\'.
                           Quotes around eols may be necessary to avoid the
                           shell interfering with them. Since release 2.8.0 the
                           limit on the line size has been removed, you can use
                           arbitrary long line if you need to. Note that this
                           option applies to any files and directories exactly
                           as -g does, with an important difference however: -g
                           option only uses relative paths to the root directory
                           (the directory given with the -R option), while -[
                           can use absolute paths as well, but only for
                           operations that have an fs_root argument (archive
                           creation, comparison, extraction, and so on, but not
                           for archive listing, testing and merging). Another
                           difference is when the argument is a directory -g
                           will include all the subdirectories under that
                           directory, while when the same entry is found in a
                           listing file given to -[ option, only that directory
                           will be included, no subdirectory or subfile would be
                           enrolled in the backup. With -[ you need to list the
                           exact set of files you want to backup. You can thus
                           generate a listing file with the 'find / -print >
                           somefile' command and give the 'somefile' generated
                           file as argument to -[ option. Note that however, dar
                           will never save files out of the -R given root
                           directory tree, even if some are listed in the
                           'somefile' file.

       -], --exclude-from-file <listing_file>[:eols]
                           Files listed in the listing file are excluded from
                           the operation. If a directory is listed in the file,
                           all its contents is excluded. This option is the
                           opposite of -[ and acts the same was as -P option
                           does (in particular it is compared to the whole
                           path+filename and applies to files and directories).
                           As for -[ option, -] listing file can contain
                           absolute paths, but wildcards are not expanded,
                           neither.

       File selection in brief:

       As seen above, -I -X -P, -g, -[ and -] options are used to select the
       files to operate on. -I and -X only use the name of files and do not
       apply to directories, while -P, -g -[ and -] use the filename *and* the
       path, they *do* apply to directories.

       since version 2.2.0 two modes of interpretation of these options exist.
       The normal original method and the ordered method:

              the normal method is the default and is the one that has been
              presented above:
                   A directory is elected for operation if no -P or -] option
                   excludes it. If at least one -g or -[ option is given on
                   command line, one -g or -[ option must cover it, else it is
                   not elected for operation. If a directory is not selected, no
                   recursion is done in it (the directory is pruned). For non
                   directories files, the same is true (P, -g, -[ and -] do
                   apply) and a second test must also be satisfied: no -X option
                   must exclude the filename, and if at least one -I option is
                   given, one must match the given filename (using or not
                   wildcards).

              the ordered method (when -am option is given on command-line):
                   The ordered method takes care of the order of presence
                   between -X and -I in one hand and of -P, -g, -[ and -] in the
                   other hand (note that it has also the same action concerning
                   EA selection when using -u and -U options, but that's no more
                   file selection). In the ordered method the last argument take
                   precedence over all the previous ones, let's take an example:

                   -X "*.mp?" -I "*.mp3" -I "toto*"
                        Here dar will include all files except file of name
                        "*.mp?" (those ending with "mpX" where X is any
                        character), but it will however include those ending
                        with ".mp3". It will also include files which name begin
                        by "toto" whatever they end with. This way, "toto.mp2"
                        will be saved (while it matches "*.mp?" it also begins
                        by "toto") as well as "toto.txt" as well as "joe.mp3"
                        (while it matches "*.mp?" it also ends by "mp3"). But
                        will not be saved "joe.mp2" (because it does not begin
                        by "toto", nor ends by "mp3", and match "*.mp?" mask).
                        As we see the last option (-I or -X) overcomes the
                        previous one. -P, -g, -[ and -] act together the same
                        but as seen above they do not only act on filename, but
                        on the whole path+filename. Note that (-g, -P, -[, -])
                        and (-X , -I) are independent concerning their relative
                        order. You can mix -X -I -g -P -] -[ in any order, what
                        will be important is the relative positions of -X
                        options compared to -I options, and the relative
                        positions of -g -[ -] and -P options between them.

              In logical terms, if <prev_mask> is the mask generated by all
              previous mask on the command line, -I <mask> generates the new
              following mask: <prev_mask> or <mask> . While -X <mask> generates
              the new following mask: <prev_mask> and not <mask>. This is
              recursive each time you add a -I or -X option. Things work the
              same with -P, -g, -[ and -] options.
       This ends the file selection explication let's continue with other
       options.

       -u, --exclude-ea <mask>
                           Do not consider the Extended Attributes (EA) that are
                           matched by the given mask. By default, no EA are
                           excluded, if the support for EA has been activated at
                           compilation time. This option can be used multiple
                           times.

       -U, --include-ea <mask>
                           Do only consider the EA that match the given mask. By
                           default, all EA are included if no -u or -U option is
                           present and if the support for EA has been activated
                           at compilation time. This option can be used multiple
                           times. See also the -am and -ae options, they also
                           apply to -U and -u options and read below the Note
                           concerning EA.

       Note concerning Extended Attributes (EA)

              Support for EA must be activated at compilation time (the
              configure script tries to do so if your system has all the
              required support for that). Thus you can get two binaries of dar
              (of the same version), one supporting EA and another which does
              not (dar -V to see whether EA support is activated). The archives
              they produce are the same and can be read by each other. The only
              difference is that the binary without EA support is not able to
              save or restore EAs, but is still able to test them and list their
              presence.

              In the following when we will speak about Extended Attribute (EA)
              or EA entry, we will only consider a particular Extended Attribute
              key and its value. By opposition, the set of all EA associated to
              a file will be designated by "EA set".

              Since version 2.3.x the name of EA entries include the namespace
              for dar be able to consider any type of EA (not only "system" and
              "user" as previously). Thus the two previous options -u and -U
              have changed and now take an argument which is a mask applied to
              EA entry names written in the following form namespace.name where
              "namespace" is for example "user". Note that the mask may or may
              not include the dot (.) and may match arbitrary part of the EA
              namespace+name, just remind that masks will be applied to the
              "namespace.name" global string.

              the -am flag here also enables the ordered method, for EA
              selection too. The ordered versus normal method have been
              explained above in the file selection note, with some examples
              using -X and -I. Here this is the same with -U and -u, (just
              replace -X by -u and -I by -U, the corresponding mask will apply
              to Extended Attribute selection in place of file selection).

              Another point, independently of the -am option the -ae option can
              be used at restoration time only. If set, when a file is about to
              be overwritten, all EA will be first erased before restoring those
              selected for restoration in the archive (according to the -U and
              -u options given). If not set, the EA of the existing file will be
              overwritten, those extra EA that are not in the archive or are not
              selected for restoration in regard to the -u and -U options will
              be preserved. If you have not used any -u/-U option at backup time
              and want to restore from a set of full/differential backups the EA
              exactly as they were, you have to use -ae for dar removes the EA
              before overwriting their set of EA as stored in the archive.
              Without -ae option dar will simply add EA to existing ones, thus
              get a different set of EA for a give file than those recorded at
              the time of the backup.

              Last point the -acase and -an options alters the case sensitivity
              of the  -U and -u masks that follow them on the command-
              line/included files as they do for -I, -X, -P, -g, -[ and -] as
              well. Very last point ;-), if -ac option is used during backup dar
              set back the atime after having read each file (see -aa/-ac
              options), this has as side effect to modify the ctime date of each
              file. But ctime change is used by dar to detect EA changes. In
              brief, the next time you backup a file that had to be read (thus
              which contents changed), its EA will be saved even if they had not
              changed. To avoid this side effect, don't use the -ac option if
              not necessary.
       This ends the Extended Attribute selection explication let's continue
       with other options.

       -4 --fsa-scope <family>[,<family>[, ...]
                           Reduce the scope of Filesystem Specific Attribute
                           (FSA) to be considered for the operation. FSA are
                           grouped by family. Current available families are:

                           extX this family takes care of Linux ext2/3/4 flag
                                attributes set by chattr(1) and read by
                                lsattr(1). Dar only considers flags that are
                                possible to set or clear by users (or privileged
                                user): append-only, compressed, no_dump (Yes,
                                dar can save files having the nodump flag set
                                and restore then afterward with that flag set!),
                                immutable, data-journaling, secure-deletion, no-
                                tail-merging, undeletable, noatime-update,
                                synchronous-directory, synchronous-update, top-
                                of-directory-hierarchy. Note that "extx" and
                                "ext" are aliases for this FSA family. In spite
                                of its name, this family of attributes is not
                                limited to ext2/3/4 filesystems.

                            HFS+
                                this family takes care of Mac OS X HFS+ birth
                                date of files, in addition of commonly found
                                dates like atime (last access time), ctime (last
                                meta data change) and mtime (last data change).

                           none "none" is not a FSA family but can be used alone
                                to ignore all FSA families.

                           By default no restriction is done and FSA of all
                           families are considered at restoration time, but if a
                           family has not been activated at compilation time a
                           warning is issued for each file that cannot have its
                           FSA restored completely (unless this family is
                           excluded from the scope thanks to the -4 option). At
                           backup time, if an FSA family has not been activated
                           at compilation time, no warning is issued and FSA of
                           that family are ignored. Still at backup time, you
                           can also ignore FSA that have compilation time
                           support by excluding them from the operation thanks
                           to this -4 option.

                           Example of use: --fsa-scope extX,HFS+

       -am, --alter=mask   set the ordered mode for mask. This affects the way
                           -I and -X options are interpreted, as well as -g, -P,
                           -[ and -] options, -Z and -Y options and -U and -u
                           options. It can take any place on the command-line
                           and can be placed only once. See the file selection
                           in brief paragraph above for a detailed explanation
                           of this option. It has also an incidence on the
                           --backup-hook-exclude and --backup-hook-include
                           options.

       -an, --alter=no-case
                           set the filters in case insensitive mode. This
                           concerns only masks specified after this option (see
                           also -acase option below). This changes the behavior
                           of -I, -X, -g, -P, -Z, -Y, -u and -U options.

                           Warning: case insensitivity requires interpreting
                           filenames which depends on the locale with which dar
                           is run (defined by the LANG environment variable).
                           For example if you create files with LANG set to
                           fr_FR.UTF-8 and use non plain ASCII characters in
                           filename, there is chances that these non ASCII
                           characters will be stored over several bytes in that
                           filename: so called "wide characters". If then you
                           run dar with LANG set to another value like
                           ru_RU.koi8r, there is much chances that these wide
                           characters do not correspond to the same letter or
                           worse, that they do not match any valid wide
                           character for that locale. A filename is always a
                           sequence of bytes and always saved as such, but using
                           --alter=no-case implies interpreting that sequence in
                           a way that depends on the given locale (as defined by
                           the LANG environment variable). As such, dar cannot
                           know if a given file has to be read with fr_FR.UTF-8
                           locale or with it_IT.iso88591 or ru_RU.koi8r and so
                           on, because this information is not stored in
                           filenames. In consequence, if different locales are
                           used on your system and you are doing a system wide
                           backup, using --alter=no-case option may lead dar to
                           detect invalid wide character, in that case it falls
                           back to a byte by byte case sensitivity comparison
                           (ASCII characters), which may not be what you would
                           expect at first sight: Most of the time, an upper
                           case wide character (stored on several bytes) does
                           not match the equivalent lower case wide character
                           (several bytes too), when case sensitivity comparison
                           is performed byte by byte.

       -acase, --alter=case
                           set back to case sensitive mode for filters. All
                           following masks are case sensitive, up to end of
                           parsing or up to the next -an option. This changes
                           the behavior of -I, -X, -g, -P, -Z, -Y, -u and -U
                           options.

       -ar, --alter=regex  set the filters to be interpreted as regular
                           expressions (man regex(7) ) instead of the default
                           glob expression (man glob(7) ) This modifies the -I,
                           -X, -g, -P, -Z, -Y, -u and -U options that follows up
                           to an eventual -ag option (see just below). Note that
                           for -P option, the given mask matches the relative
                           path part of the files path: Let's take an example,
                           assuming you have provided /usr/local to the -R
                           option, the mask "ˆfoo$" will replaced internally by
                           "ˆ/usr/local/foo$" while the mask "foo$" will be
                           replaced internally by "ˆ/usr/local/.*foo$".

       -ag, --alter=glob   This option returns to glob expressions mode (which
                           is the default) after an -ar option has been used,
                           this applies to any -I, -X, -g, -P, -Z, -Y, -u and -U
                           options that follow up to an eventual new -ar option
                           (see just above).

       -i, --input <path>  is available when reading from pipe (basename is "-"
                           for -x, -l, -t, -d or for -A when -c, -C or -+ is
                           used). When reading from pipe, standard input is
                           used, but with this option, the file <path> (usually
                           a named pipe) is used instead.  This option is to
                           receive output from dar_slave program (see
                           doc/usage_notes.html for examples of use). Note that
                           when --sequential-read is used, dar uses a single
                           pipe and does no more rely on dar_slave, -i option
                           can be used to tell dar which named pipe to read the
                           archive from, instead of the standard input.

       -o, --output <path> is available when reading from pipe (basename is "-"
                           for -x, -l, -t, -d or for -A when -c, -C or -+ is
                           used). When reading from pipe, standard output is
                           used to send request to dar_slave, but with this
                           option, the file <path> (usually a named pipe) is
                           used instead. When standard output is used, all
                           messages goes to standard error (not only interactive
                           messages). See doc/usage_notes.html for examples of
                           use. This option is not to be used in --sequential-
                           read mode.

       -O, --comparison-field[=<flag>]
                           When comparing with the archive of reference (-c -A)
                           during a differential backup, when extracting (-x) or
                           when comparing (-d) do only considers certain fields.
                           The available flags are:

                           ignore-owner   all fields are considered except
                                          ownership.
                                          This is useful when dar is used by a
                                          non-privileged user. It will not
                                          consider a file has changed just
                                          because of a uid or gid mismatch and
                                          at restoration dar will not even try
                                          to set the file ownership.

                           mtime          only inode type and last modification
                                          date is considered as well as inode
                                          specific attributes like file size for
                                          plain files. Ownership is ignored,
                                          permission is ignored. During
                                          comparison, difference on ownership or
                                          permission is ignored and at
                                          restoration time dar will not try to
                                          set the inode permission and
                                          ownership.

                           inode-type     Only the inode type is considered.
                                          Ownership, permission and dates are
                                          ignored. Inode specific attributes are
                                          still considered (like file size for
                                          plain files). Thus comparison will
                                          ignore differences for ownership,
                                          permission, and dates and at
                                          restoration dar will not try to set
                                          the ownership, permission and dates.

                           When no flag is provided to this option, -O option
                           acts as if the "ignore-owner" flag was set, which is
                           the behavior in older releases (< 2.3.0). Note also
                           that for backward compatibility, --ignore-owner
                           option still exists and since version 2.3.0 is just
                           an alias to the --comparison-field=ignore-owner
                           option. Of course if this option is not used, all
                           fields are used for comparison or restoration.

       -H[num], --hour[=num]
                           if -H is used, two dates are considered equal if they
                           differ from a integer number of hours, and that
                           number is less than or equal to [num]. If not
                           specified, num defaults to 1. This is used when
                           making a differential backup, to compare
                           last_modification date of inodes, at restoration or
                           merging time if overwriting policy is based on file's
                           data or EA being more recent and last, when comparing
                           an archive with a filesystem (-d option). This is to
                           workaround some filesystems (like Samba filesystem)
                           that seems to change the dates of files after having
                           gone from or to daylight saving time (winter/summer
                           time). Note that -H option has influence on the
                           overwriting policy (see -/ option) only if it is
                           found before on command-line or in an included file
                           (using -B option).

       -E, --execute <string>
                           the string is a user command-line to be launched
                           between slices. For reading an archive (thus using
                           -t, -d, -l or -x commands), the given string is
                           executed before the slice is read or even asked, for
                           writing an archive instead (thus using -c, -C or -+
                           commands), the given string is executed once the
                           slice has been completed. Some substitution macros
                           can be used in the string:

                           %%        will be replaced by %

                           %p        will be replaced by the slice path

                           %b        will be replaced by the slice basename

                           %n        will be replaced by the slice number (to be
                                     read or just written). For reading, dar
                                     often needs the last slice, but initially
                                     it does not know its number. If it cannot
                                     be found in the current directory, the user
                                     command-line is then called with %n equal
                                     to 0. This is a convenient way to inform
                                     the user command to provide the last slice.
                                     If after executing the string the requested
                                     slice is still not present, dar asks the
                                     user (as usually) with a message on the
                                     terminal. Once the last slice is found, the
                                     user command-line is called a second time,
                                     with %n equal to the value of the last
                                     slice number.

                           %N        is the slice number with the leading zero
                                     as defined by --min-digits option. If this
                                     option is not used, %N is equivalent to %n.

                           %e        will be replaced by the slice extension
                                     (always substituted by "dar")

                           %c        will be replaced by the context. Actually
                                     three possible values exist: "init",
                                     "operation" and "last_slice". When reading
                                     an archive for (testing, extraction, diff,
                                     listing, or while reading the archive of
                                     reference, see below the -F option), the
                                     "init" context takes place from the
                                     beginning up to the time the catalogue is
                                     retrieved. On a multiple slice archive this
                                     corresponds to the last slice request.
                                     After, that point comes the "operation"
                                     context.  While creating an archive, the
                                     context is always "operation" except when
                                     the last slice has been created, in which
                                     case the context is set to "last_slice".

                           %u        will be replaced by the full URL of path
                                     where the slice is stored

                           Several -E option can be given, given commands will
                           then be called in the order they appear on the
                           command line and -B included files. Note that having
                           '-E script1 -E script2' is totally equivalent to '-E
                           "script1 ; script2"'. In other words if script1
                           fails, script2 fill still be executed and dar will
                           only be notified of the exit status of the last -E
                           option. Exit status of previous -E given commands
                           will be ignored. If this does not match your need,
                           consider using a single -aduc option (see below).
                           More generally you can use any shell construction in
                           the argument to -E, including parenthesis, || and &&.
                           Such files given to -E option are known as DUC files
                           (Dar User Command). See also the environment variable
                           DAR_DUC_PATH in the ENVIRONMENT section at the end of
                           this document.

       -aduc, --alter=duc  As described above for -E option, several -E/-F/-˜
                           options (aka DUC commands) are combined using the
                           shell ";" operator, which ignores the exit status of
                           the first commands and only reports to dar the exit
                           status of the last command, leading all commands to
                           always being executed. --aduc option combines the
                           different DUC commands using the shell "&&" operator,
                           which execute the next command if and only if the
                           previous command succeeded. In other words, dar get
                           notified of an error in any given DUC command but due
                           to an error not all DUC commands may be executed.

       --aduc modifies the way the next DUC file is sticked to the previous
       command, in other words:

              dar --aduc -E script1 -E script2 ...
                   leads libdar to call a shell with the following line "script1
                   && script2"

              dar -E script1 -script2 --aduc -E script3 ...
                   leads libdar to call a shell with the following line "script1
                   ; script2 && script3". In other words if you want to avoid
                   the ";" use --aduc before any -E/-F/-˜ option.

       -F, --ref-execute <string>
                           same as -E but is applied between slices of the
                           reference archive (-A option). --execute-ref is a
                           synonym.

       -˜, --aux-execute <string>
                           same as -E and -F but is applied between slices of
                           the auxiliary archive (-@ option).

       -K, --key [[<algo>]:]<string>

       -K, --key gnupg:[<algo>]:keyid/email[,keyid/email[...]]
                           In the first syntax, encrypt/decrypt the archive
                           using the <algo> cipher with the <string> as pass
                           phrase. An encrypted archive can only be read if the
                           same pass phrase is given (symmetric encryption).
                           Available ciphers are "blowfish" (alias "bf"), "aes",
                           "twofish", "serpent" and "camellia" for strong
                           encryption and "scrambling" (alias "scram") for a
                           very weak encryption. By default if no <algo> or no
                           ':' is given, the aes256 cipher is assumed (default
                           was blowfish up to 2.5.x). If your password contains
                           a colon ':' you need to specify the cipher to use (or
                           at least use the initial ':' which is equivalent to
                           'aes:'). If the <string> is empty the pass phrase
                           will be asked at execution time. Thus, the smallest
                           argument that -K can receive is ':' which means
                           aes256 cipher with the pass phrase asked at execution
                           time.

                           Note that giving the passphrase as argument to -K (or
                           -J or '-$' see below) may let other users learn pass
                           phrase (thanks to the ps, or top program for
                           examples). It is thus wise to either use an empty
                           pass which will make dar ask the pass phrase when
                           needed, or use -K (or -J option) from a Dar Command
                           File (see -B option), assuming it has the
                           appropriated permission to avoid other users reading
                           it. For those paranoids that are really concerned
                           about security of their passwords, having a password
                           read from a DCF is not that secure, because while the
                           file gets parsed, dar makes use of "unsecured" memory
                           (memory than can be swapped to disk under heavy
                           memory load conditions). It is only when the
                           passphrase has been identified that locked memory
                           (aka secure memory) is used to store the parsed
                           passphrase. So, the most secure way to transmit a
                           passphrase to dar, then to libdar, then to libgcrypt,
                           is having dar asking passphrase at execution time,
                           dar then makes use of secured (locked) memory from
                           the beginning.

                           since archive format 9 (archive generated by release
                           2.5.0 and following) at reading time, it is not
                           necessary to provide the encryption algorithm used,
                           just the passphrase is required, dar will figure out
                           which encryption algorithm had been used at archive
                           creation time. You can either omit -K in which case
                           dar will ask for the passphrase at execution time, or
                           you can use -K <string> in a DCF file as explained
                           above (avoid using -K directly on command-line).

                           The second syntax starts with the word "gnupg"
                           followed by a colon ':' . In that situation, the same
                           set or symmetric encryption algorithms as described
                           above is available after the colon, but the
                           passphrase is not given by the user but randomly
                           chosen by libdar and encrypted using the public key
                           of the target users which email or keyid (keyid since
                           2.7.0) is given in a comma separated list. This
                           random key has the maximum length the cipher
                           algorithms supports, this to maximize security. Once
                           encrypted it is placed at the beginning (unless -at
                           option is used) and at the end of the generated
                           archive. At reading time, only the listed user(s)
                           will be able to read that archive thanks to their
                           respective private key. This feature implies that
                           each user (the archive creator as well as the target
                           users) have their GnuPG key-ring set properly. In
                           particular, the archive creator must have validated
                           the public keys of the target users, and the target
                           users must own the corresponding private key in their
                           key-ring. Example: using "--key
                           gnupg::bob@nowhere.org,joe@somewhere.com" will
                           generate an aes256 encrypted archive which passphrase
                           randomly chosen by libdar will be encrypted with the
                           public keys of bob@nowhere.org and joe@somewhere.com.
                           To use blowfish in place of aes256 one could use
                           "--key gnupg:bf:bob@nowhere.org,joe@somewhere.com".
                           More generally with GPG, note that users have the
                           duty to validate/certify that a given key-pair is
                           really owned by the physical person you expect it to
                           have: this must be done checking key fingerprint by
                           secure mean (face to face, phone call if you trust
                           this mean enough not to be intercepted and deep
                           faked, other already trusted communication mean...).
                           See also --sign option below.

                           Note that if you have set a passphrase on your
                           private key, dar will ask it dynamically, which
                           requires dar to be run from a terminal. No other way
                           has been provided to transmit a private key's
                           passphrase to libdar. In consequence if you want to
                           use dar/libdar in scripts and make use of public key
                           algorithm you should avoid setting a passphrase to
                           the private key you want to use. See also GNUPGHOME
                           in the ENVIRONMENT section at the end of this
                           document.

                           Obvious but important!  To read a gnupg encrypted
                           archive, you need your private key (not only the
                           passphrase to activate it, if set). Thus if you plan
                           to make backup of your system and encrypt the backup
                           using gnupg, you should have a copy of this private
                           key available out of the archive (usb key, floppy,
                           CD/DVD, ...) in order to be able to restore your
                           backup!

       -J, --ref-key [[<algo>]:]<string>
                           same meaning/use as -K option's first syntax, but the
                           given key is used to decrypt the archive of reference
                           (given with -A option). --key-ref is a synonym. Note
                           that for archives generated using dar release 2.5.0
                           and above this option is no more necessary, unless
                           you want to give the passphrase on command-line (not
                           recommended) or in DCF file (which file would be set
                           with restricted access permissions and/or ACL).

       -$, --aux-key [[<algo>]:]<string>
                           same as -J but for the auxiliary archive of reference
                           (given with -@ option). Here too, this option is no
                           more necessary to read archives generated by dar
                           release 2.5.0 and above.

       -#, --crypto-block <size>
                           to be able to randomly access data in an archive, it
                           is not encrypted globally but block by block. You can
                           define the encryption block size thanks to this
                           argument which default to 10240 bytes. Note that the
                           syntax used for -s option is also available here (k,
                           M, G, etc.). Note also that crypto-block is stored as
                           a 32 bits integer thus value larger than 4GB will
                           cause an error. Note last, that the block size given
                           here must be provided when reading this resulting
                           archive, using the -* option if the archive is the
                           archive of reference (given to -A option) using -%
                           options if the archive is the auxiliary archive of
                           reference (given to -@ option) or using this -#
                           option if it is the subject of the operation
                           (listing, comparing, testing that archive). If the
                           value is not the default and the given value is not
                           correct in regard to the value given at archive
                           creation time, the archive will not be possible to
                           decrypt, it is thus safer to keep the default value
                           (and not using at all the -#, -*, -% options).

       -*, --ref-crypto-block <size>
                           same as --crypto-block but to read the archive of
                           reference (-A option). --crypto-block-ref is a
                           synonym.

       -%, --aux-crypto-block <size>
                           same as --crypto-block but to read the auxiliary
                           archive of reference (-@ option).

       -e, --dry-run       Do not perform any action (backup, restoration or
                           merging), displays all messages as if it was for real
                           ("dry run" action). The --empty option is a synonym.

       -aSI, --alter=SI[-unit[s]]
                           when using k M G T E Z Y prefixes to define a size,
                           use the SI meaning: multiple of 10ˆ3 (a Mega is
                           1,000,000).

       -abinary, --alter=binary[-unit[s]]
                           when using k M G T E Z Y prefixes to define a size,
                           use the historical computer science meaning: multiple
                           of 2ˆ10  (a Mega is 1,048,576).

                           The --alter=SI and --alter=binary options can be used
                           several times on the command line. They affect all
                           prefixes which follow, even those found in files
                           included by the -B option, up to the next
                           --alter=binary or --alter=SI occurrence. Note that if
                           in a file included by the -B option, an
                           --alter=binary or --alter=SI is encountered, it
                           affects all the following prefixes, even those
                           outside the included files. For example, when running
                           with the parameters "-B some.dcf -s 1K", 1K may be
                           equal to 1000 or 1024, depending on --alter=binary or
                           --alter=SI being present in the some.dcf file. By
                           default (before any --alter=SI/binary option is
                           reached), binary interpretation of prefixes is done,
                           for compatibility with older versions.

       -ac, --alter=ctime  When reading a filesystem (during a backup or
                           comparison), restores the atime of all files to what
                           it was before the file was read. This makes it appear
                           as if it had not been read at all. However, because
                           there is no system call to let applications changing
                           the ctime (last inode change) of a file, setting back
                           the atime results in the ctime being changed (hence
                           the alter=ctime). Some recent unix system allow an
                           application to get 'furtive read mode' to the
                           filesystem (see below). On older systems, however,
                           for most users, having the atimes of the files
                           changed shouldn't be a problem, since they can be
                           changed by any other program (running by any user!)
                           as well (like the content-index program Beagle).
                           Ctimes on the other hand, are the only way for
                           security software to detect if files on your system
                           have been replaced (by so called root-kits mostly).
                           This means, that should you run dar with -ac,
                           security software which uses ctimes to check, will
                           mark every file on your system as compromised after
                           the backup. In short, this means this option should
                           only be used by people who know what they are doing.
                           It's the opinion of this writer that any software
                           susceptible to atime changes is flaky or even broken
                           (because of the afore mentioned reasons why atimes
                           can change). But, that doesn't take away that there
                           are programs who rely on atimes remaining the same,
                           like Leafnode NNTP caching software. Therefore this
                           option exists.

       -aa, --alter=atime  When specifying -aa (by opposition to -ac), the atime
                           of every read file and directory is updated, and the
                           ctime remains the same. In other words, Dar itself
                           does nothing with atimes and ctimes, it only let the
                           system do its job to update atimes when files are
                           accessed for reading. This is in accordance with what
                           atimes and ctimes were meant to represent. This is
                           Dar's default (since version 2.4.0), unless 'furtive
                           read mode' (see below) is supported by your system
                           and dar has been compiled with this support
                           activated.

       Furtive read mode is a mode in which neither atime nor ctime are modified
       while dar reads each file and directory. This provides also better
       performances as nothing has to be wrote back to disk. A known Unix kernel
       that supports this feature is Linux 2.6.8 and above (support must also be
       present in the standard C library of the system for dar to be able to
       activate this feature at compilation time).  When this feature is
       activated, it becomes the default behavior of dar for super user ; for
       other users the default is -aa. If however as root user, you do not want
       to use "furtive read mode" (while it has been activated at compilation
       time), you can specify either -aa or -ac option.

       -at, --alter=tape-marks
                           For archive creation and merging, the default
                           behavior (since release 2.4.0) is to add escape
                           sequences (aka tape marks) followed by inode
                           information all along the archive. If -at is given,
                           dar will not add this information to the archive,
                           resulting in a slightly smaller archive and faster
                           backup. When reading an archive, the default behavior
                           is to ignore these escape sequences and rather rely
                           on the catalogue located at the end of the archive.
                           If instead --sequential-read is given on command-line
                           (see below), dar will avoid using the catalogue at
                           the end of the archive and will rely on these escape
                           sequences to know the contents of the archive, which
                           will lead to a sequential reading of the archive,
                           operation suitable for tape media. Note that it is
                           not recommended to disable escape sequences (aka tape
                           marks) by using -at option except if you are more
                           concerned by the resulting size and execution speed
                           of your backup (in particular if you have a lot of
                           small files) than by the possibility to recover your
                           data in case of corrupted or partially written
                           archive.  Without escape sequences, dar cannot
                           sequential read an archive, which is the only way
                           beside using an isolated catalogue to use an archive
                           that has a corrupted catalogue or has no catalogue at
                           all, thing that happens if a system crash occurred
                           during the archive creation or due to lack of disk
                           space to complete the archive.

       -0, --sequential-read
                           Change dar's behavior when reading an archive. By
                           default, the traditional way is used, which relies on
                           the table of contents (aka "the catalogue") located
                           at the end of the archive. With the --sequential-read
                           option instead, dar will rely on escape sequences
                           that are inserted all along the archive with each
                           file's inode information. This will lead to a
                           sequential reading of the archive, operation suitable
                           for tape medium. However, this feature is only
                           available for archive format starting revision "08"
                           (i.e.: since release 2.4.0) and if -at option has no
                           been used during archive creation or merging. This
                           option is available for archive testing (-t),
                           comparison (-d), restoration (-x), listing (-l) and
                           to read the archive of reference (-A option) for
                           isolation (-C) and archive creation (-c). The
                           sequential reading of an archive is always much
                           slower than the usual reading method, so you should
                           not use this option unless you really need it.

       -9, --min-digits <num>[,<num ref>[,<num aux>]]
                           By default slice number contained in filename do not
                           have any padded zeros, which, when sorting a
                           directory contents alphabetically leads to read all
                           the slices starting by '1', then by '2'. for example,
                           slice 1, 10, 11, 12, 13, ... 2, 20, 21, 23, ... etc.
                           While dar is absolutely not perturbed by this display
                           problem, some user shall like to have the slices
                           sorted by order. For that reason, the --min-digits
                           option lets you ask dar to prepend enough zeros in
                           the slice number for it be as wide as the argument
                           passed to --min-digits. For example, if you provide 3
                           for that number, dar will store the slice number as
                           001, 002, 003, ... 999. Well, next slice will be
                           1000, thus it will break again the alphabetical
                           sorting order. You are thus advised to use a number
                           large enough to convert the number of slice you
                           expect to use. Before release 2.7.0, when reading an
                           archive, you were also requested to provide this same
                           argument else dar was unable finding the slice. Since
                           2.7.0 dar auto-detects the mi-digits value to use,
                           unless there is a mix of archive of the same basename
                           with different min-digits. In such conflicting
                           context, you must bypass the min-digits auto-
                           detection mechanism and specify which min-digits
                           value to retain in order to read the archive,
                           eventually followed by a comma and the number of
                           digits to use to read the archive of reference (given
                           to -A option), eventually followed by a comma and the
                           number of digits to use for the auxiliary archive of
                           reference (given to -@ option).

       --pipe-fd <num>     will read further arguments from the file-descriptor
                           <num>. The arguments read through this file-
                           descriptor must follow a TLV (Type/Length/Value) list
                           format. This option is not intended for human use,
                           but for other programs launching dar like
                           dar_manager. This feature has been added to overcome
                           the command line length limit.

       -al, --alter=lax    When reading an archive, dar will try to workaround
                           data corruption of slice header, archive header and
                           catalogue. This option is to be used as last resort
                           solution when facing media corruption. It is rather
                           and still strongly encourage to test archives before
                           relying on them as well as using Parchive to do
                           parity data of each slice to be able to recover data
                           corruption in a much more effective manner and with
                           much more chance of success. Dar also has the
                           possibility to backup a catalogue using an isolated
                           catalogue, but this does not face slice header
                           corruption or even saved file's data corruption (dar
                           will detect but will not correct such event).

       -G, --multi-thread { <num> | <crypto>,<compression> }
                           When libdar is compiled against libthreadar, it can
                           make use of several threads. If the argument is two
                           numbers separated by a comma the first defines the
                           number of worker threads to cipher/decipher, the
                           second the number of threads to compress/decompress.
                           If the argument is a single number (-G <n>) it is
                           equivalent to giving this number as the number of
                           compression threads and giving 2 for the ciphering
                           threads (-G 2,<n>). The use of multi-threading at
                           archive creation time leads to rely on per block
                           compression rather than the legacy streaming
                           compression and if the block-size is not specified
                           (see -z option for details) it defaults to 240 KiB.
                           Not providing any -G option, is equivalent to
                           providing -G 2,1 when libthreadar is available else
                           -G 1,1. Note that if an archive has been created with
                           streaming compression, the decompression cannot use
                           multi-threads, the deciphering can always use
                           multiple threads.

       -j, --network-retry-delay <seconds>
                           When a temporary network error occurs (lack of
                           connectivity, server unavailable, and so on), dar
                           does not give up, it waits some time then retries the
                           failed operation. This option is available to change
                           the default retry time which is 3 seconds. If set to
                           zero, libdar will not wait but rather ask the user
                           whether to retry or abort in case of network error.

       -afile-auth, --alter=file-authentication
                           With this option, When reading or writing an archive
                           to a remote (SFTP or FTP) repository when no password
                           is provided, instead of interactively asking for a
                           password dar will check the ˜/.netrc file for
                           credentials when relying on FTP protocol. If instead
                           SFTP protocol is used, this option leads dar to first
                           try to connect using public key authentication
                           instead of password authentication. If the key could
                           not be loaded, a passphrase for that key will be
                           asked interactively.

       -ab, --alter=blind-to-signatures
                           do not check whether an encrypted archive with public
                           key that has also been signed have correct
                           signatures.

       SAVING, ISOLATION, MERGING AND REPAIRING SPECIFIC OPTIONS (to use with
       -c, -C, -+ or -y)

       -z, --compression={ [algo] | level | algo:level | algo:level:block-size }
            add compression within slices. If -z is not specified, no
            compression is performed, but if -z is specified without algorithm
            gzip will be assumed.

            algo:
                 the following values are available "gzip", "bzip2", "lzo",
                 "xz", "zstd" or "lz4".

            level:
                 The compression level (an integer from 1 to 9 except for zstd
                 which ranges from 1 to 22) is optional, and is 9 by default. Be
                 careful when using xz algorithm better specify a compression
                 ratio less than or equal to 6 to avoid important memory
                 requirements. A ratio of 1 means less compression and faster
                 processing, while at the opposite a ratio of 9 gives the best
                 compression but longest processing time.

            block-size:
                 if set to zero (which is also the default value), you will get
                 the legacy (and performant) "streaming compression" mode that
                 was the only available up to release 2.7.0. Since then, the
                 "block compression" mode gives the ability to leverage multi-
                 threading (see -G option) by compressing per block and giving
                 different blocks to different threads. The larger the block is,
                 the better the compression ratio will be (it tends to be as
                 good as the one of the streaming compression mode, when block
                 size increases), but files smaller than a block size can only
                 be processed by a single thread. The memory requirement also
                 increases by the product of the block size times the number of
                 threads. Last, a too small block-size will cost more CPU cycles
                 (the multi-threading management overhead will become important
                 compared to the effective compression processing) and
                 independently, short blocks gives poor compression rates. It is
                 thus advised to use values at least greater than 50 ˜ 100 KiB
                 (you can use the k,M,G,... suffixes described for the -s
                 option). If the block-size is not specified and given -G option
                 leads to a number of compression threads greater or equal to 2,
                 a block-size of 240 KiB is used. If you want the legacy
                 streaming compression, do not use -G option (or use it
                 specifying only 1 compression thread) and do not set the
                 compression block size (or set it to zero).

            Valid usage of -z option is for example: -z, -z9, -zlzo, -zgzip,
            -zbzip2, -zlzo:6, -zbzip2:2, -zgzip:1, -zxz:6, -zlz4::10k -z::12000
            -zbzip2:8:10k and so on. Usage for long option is the same:
            --compression, --compression=9, --compression=lzo,
            --compression=gzip, --compression=bzip2, --compression=lzo:6,
            --compression=bzip2:2, --compression=gzip:1 --compression=xz:9 and
            so on.

            About lzo compression, the compression levels of dar and lzop
            program do not match. If you want to get the behavior of compression
            level 1 of lzop, use the lzop-1 algorithm in place of lzo with
            dar/libdar. If you want to get the behavior of lzop compression
            level 3, use the lzop-3 algorithm in place of the lzo algorithm.
            Lzop compression levels 2, 4, 5 and 6 are the same as level 3. last,
            there is no difference about compression level 7, 8 and 9 between
            dar and lzop. The lzop-1 and lzop-3 algorithms do not make use of
            any compression level (compression level is ignored with these
            algorithms).

       -s, --slice <number>
                           Size of the slices in bytes. If the number is
                           appended by k (or K), M, G, T, P, E, Z, Y, R or Q the
                           size is in kilobytes, megabytes, gigabytes,
                           terabytes, petabytes, exabytes, zettabytes,
                           yottabytes, ronnabytes or quettabytes respectively.
                           Example: "20M" means 20 megabytes, by default, it is
                           the same as giving 20971520 as argument (see also
                           -aSI and -abinary options). If -s is not present the
                           backup will be written to a single slice whatever the
                           size of the backup may be (assuming your operating
                           system can support arbitrarily large files).

       -S, --first-slice <number>
                           -S gives the size of the first slice which may be
                           chosen independently of the size of following slices
                           (either bigger or smaller). This option needs -s
                           option and by default of -S option, the size of the
                           first slice is the same as the one of the following
                           slices.

       -p [<integer>], --pause[=<integer>]
                           pauses before writing to a new slice (this requires
                           -s). By default there is no pause, all slices are
                           written in the same directory, up to the end of the
                           backup or until the filesystem is full. In this later
                           case, the user is informed of the lack of disk space
                           and dar stops for user action. As soon as some disk
                           space is available, the user can continue the backup.
                           The optional integer that this option can receive
                           tells dar to only pause every 'n' slice. Giving 3 for
                           'n' will make dar pause only after slices 3, 6, 9 and
                           so on. If this integer is not specified, the behavior
                           is as if '1' was given as argument which makes dar
                           pause after each slice.

       -D, --empty-dir     At backup time only, when excluding directories
                           either explicitly using -P or -] options, or
                           implicitly by giving a -g or -[ options (a directory
                           is excluded if it does not match mask given with -g
                           options or -[ options) dar does not store anything
                           about these. But with -D option, dar stores them as
                           empty directories. This can be useful, if excluding a
                           mount point (like /proc or /dev/pts). At restoration
                           time, dar will then recreate these directories (if
                           necessary). This option has no meaning with -C and is
                           ignored in that case. Independently of that, -D can
                           also be used at restoration time, but it activates a
                           slightly different feature (see RESTORATION SPECIFIC
                           OPTIONS below).

       -Z, --exclude-compression <mask>
                           Filenames covered by this mask are not compressed. It
                           is only useful in conjunction with -z option. By
                           default, all files are compressed (if compression is
                           used). This option can be used several times, in that
                           case a file that matches one of the -Z mask will not
                           be compressed. Argument given to -Z must not be
                           include any path, just the filename
                           (eventually/probably using wildcards). This option
                           used while merging or repairing allow one to change
                           the compression of files.

       -Y, --include-compression <mask>
                           Filenames covered by this mask (and not covered masks
                           given to -Z option(s)) are the only to be compressed.
                           It is only available with -z option. By default all
                           files are compressed. This option can be used several
                           times, in that case all files that match one of the
                           -Y will be compressed, if they do not also match on
                           of the -Z masks. The ordered method here applies too
                           when activated (with -am option), it works exactly
                           the same as -I and -X options, but apply to file
                           compression, not file selection. In other word, it
                           matches only on the file name, not on the path of
                           files. This option used while merging or repairing
                           allow one to change the compression of files.

       -m, --mincompr <number>
                           files which size is below this value will not be
                           compressed. If -m is not specified it is equivalent
                           to giving -m 100 as argument. If you want to compress
                           all files whatever their size is you thus need to
                           type -m 0 on the command line. The size unit is the
                           byte (octet) and the same number extensions as those
                           used with -s or -S are available here, if you want to
                           specify the size in kilobyte, megabyte, gigabyte etc.

       -1, --sparse-file-min-size <number>
                           Define the minimum length of zeroed bytes to replace
                           by "holes". By default, this feature is activated
                           with a value of 15 bytes. To completely disable it,
                           set the size to zero. Disabling this feature will
                           bring some noticeable speed improvement but will
                           probably make the archive slightly bigger (depending
                           on the nature of the data). Sparse files are files
                           that contain so called holes. On a filesystem, the
                           portion of zeroed bytes is not stored on disk, thus
                           an arbitrary large file with huge portion of zeros
                           may only require a few bytes of disk storage. While
                           dar cannot detect how is allocated a given file
                           because it makes a filesystem abstraction (it does
                           not know the implementation of any particular
                           filesystem, where from its portability), when it
                           finds a sequence of zeroed bytes larger than the
                           given threshold it can assume that it is in presence
                           of a hole. Doing so, it does not store the given
                           zeroed bytes into the archive, but place a tag beside
                           the saved data to record the size of the hole and
                           thus where to place the next non zeroed bytes. This
                           makes dar archive disk space requirement much smaller
                           when a sparse files is met. At restoration time, dar
                           will restore holes writing normal data and seeking
                           over the hole to write down the normal data after
                           each hole. If the underlying file system supports
                           sparse files, this will restore the holes. Note that
                           there is no difference for applications whether a
                           file is sparse or not, thus dar may well transform
                           normal files into sparse files and vice-versa, only
                           the disk requirement will change. Last point, if dar
                           can reduce disk requirement for archive with holes as
                           small as 15 bytes (smaller value works but the
                           overhead cost more than what is required to store the
                           zeroed bytes normally), it may not be the same at
                           restoration, because filesystem allocation unit is
                           usually several kilobytes (a page), however restored
                           file will never be larger than it could be without
                           holes. The only drawback of this feature is the
                           additional CPU cycle it requires.

       -ak, --alter=keep-compressed
                           During merging and repairing operation, keep files
                           compressed, this has several restrictions : -z, -Z,
                           -Y, -m are ignored, if two archives have to be
                           merged, both must use the same compression algorithm
                           or one of them must not use compression at all (this
                           last restriction will probably disappear in a next
                           version). The advantage of this option is a greater
                           speed of execution (compression is usually CPU
                           intensive).

       -ah, --alter=holes-recheck
                           For merging and repairing, the sparse file detection
                           mechanism is disabled by default. However if you want
                           to activate it (assuming you have an old archive you
                           want to convert the current archive format taking
                           care of sparse files), you need to use -ah option to
                           reactivate the sparse file detection mechanism. Then
                           for merging and repairing --sparse-file-min-size can
                           be used as described above for archive creation. In
                           addition, you can have files stored as sparse file in
                           the archive of reference be stored as normal files in
                           the merged archive using -ah and passing to --sparse-
                           file-min-size an value larger than all file sizes,
                           for example as of today in year 2018, passing -ah
                           --sparse-file-min-size 1E (1E for one exabyte) should
                           be large enough.

       --nodump            do not save files which have the 'd' flag set (see
                           chattr(1) lsattr(1) ext2 commands). This option may
                           not be available if the system dar has been compiled
                           on did not provide support for ext2 flags. Note that
                           this option does nothing with -+ option (merging) as
                           no filesystem is used for that operation.

       -5, --exclude-by-ea[=<extended attribute name>]
                           exclude inodes from backup that have been set with
                           the EA given in argument. If not argument is given to
                           that option the default EA used to exclude files from
                           backup is "user.libdar_no_backup". To set this
                           attribute to a given file, use the following command:
                           "setfattr -n user.libdar_no_backup <filename>", to
                           remove it: "setfattr -x user.libdar_no_backup
                           <filename>". Last, to check the presence this EA:
                           "getfattr <filename>"

       -M, --mount-points={ I:<path to fs> | X:<path to fs> }
                           If the argument is of the I:<path to fs> form, the
                           filesystem to which this path points to is considered
                           for the backup operation, that's to say, other file
                           filtering mechanism will be applied and some or all
                           files of that filesystem will be saved for backup.
                           While with the X:<path to fs> form, no file in that
                           filesystem will even be considered for backup. both
                           X: and I: forms must be provided with an absolute
                           path. -M option can be used several times on the
                           command-line. If only I: forms are used, the
                           filesystem based filtering mechanism behaves as a
                           white list (only those listed paths are included). If
                           only X: form is used, the filesystem based filtering
                           mechanism behaves as a black list (everything is
                           considered except those listed paths). Last, while a
                           mix of I: and X: forms are used, filsystems that will
                           be considered for backup will be those given with an
                           I: form and not also given with an X: form. Note that
                           this is filesystem based filtering, not path based:
                           If for example a filesystem is mounted under /var
                           directory and you specify I:/var/log all /var
                           filesystem will be considered for backup. If you
                           rather want to only save what is in /var/log use the
                           -P/-g/-X/-I/-[/-] options that realise the file
                           filtering by name and path+name. You cannot exclude
                           the filesystem which contains the path given to -R
                           option. The use of -M option with argument erases any
                           previous configuration done with -M option without
                           argument (see below), and vice versa. By default (no
                           -M option specified), no filtering based on
                           filesystem is performed, in other worlds all files
                           are considered for other file filtering mechanism (in
                           particular -P/-g/-X/-I/-[/-] options) and eventually
                           backed up.

                           example of use:
                           -MI:/var -MX:/var/spool
                           --mount-points=I:/var --mount-point=X:/var/spool

       -M, --no-mount-points
                           This is the legacy form of the option described just
                           above, that existed before release 2.7.0. When -M
                           option is provided without argument, only files
                           located on the filesystem pointed to by the path
                           given to -R option will be considered for backup.
                           Subdirectory that are mounting points for other
                           filesystems will not be saved (or saved empty if -D
                           option is used). This option is useless and ignored
                           for merging operation. The use of -M without option
                           lead dar to ignore any previous -M I:<path> and -M
                           X:<path> options that could have been given on
                           command-line or -B included file so far.

       -, ,  --cache-directory-tagging
                           don't save contents of directories that use the Cache
                           Directory Tagging Standard. See
                           http://www.brynosaurus.com/cachedir/spec.html for
                           details. (this option is useless with -+ option)

       -/ , --overwriting-policy <policy>
                           This option let the user define when or how file
                           overwriting can occur at restoration or archive
                           merging time. It does no apply to slice overwriting
                           which are driven by the -n option, it does instead
                           apply to file during extraction and files inside
                           archives when merging two of them. When considering
                           overwriting, a file is said to be 'in place' while an
                           other is known as 'new' or 'to be added'. At
                           restoration time, the 'in place' is the one that is
                           present in filesystem while the 'to be added' is the
                           one from the archive. At merging time, the 'in place'
                           is the one of the '-A' archive of reference while the
                           'to be added' is the one from the auxiliary '-@'
                           archive or reference. This option does not apply to
                           archive repairing.

                           As soon as you use -/ option -n only applies only to
                           slice overwriting and the -r, -k and -ae options are
                           ignored (restoration specific options).

                           The given <policy> argument is composed of actions
                           and eventually of conditional expressions. Actions do
                           define how to solve overwriting conflict about file's
                           data on one side and file's Attributes (Extended and
                           Filesystem Specific) on the other side. An action is
                           thus a couple of action for Data and for EA+FSA.
                           Actions for Data are represented by uppercase
                           letters, while action for EA+FSA are defined by
                           lowercase letters. Both actions are independent of
                           each other:

                           P    means 'Preserve'. When merging two archives, the
                                data of the resulting archive will be taken from
                                the 'in place' file. While when extracting, the
                                data of the inode in filesystem will be
                                preserved (thus no overwriting will occur for
                                the data).

                           O    means 'Overwrite'. When merging two archives,
                                the data of the resulting archive will be taken
                                from the 'to be added' file. While when
                                extracting, the data of the inode in filesystem
                                will be overwritten by data from the archive.

                           S    means 'mark Saved and preserve'. When merging
                                two archives, the data of the resulting archive
                                will be marked as already saved in the archive
                                of reference (making thus a differential
                                archive, even if none of the original archive
                                were differential archives). All data will be
                                dropped in the resulting archive, but the last
                                modification date [aka mtime] (used to detect
                                change in file's data) will be taken from the
                                'in place' file. This action does not apply when
                                extracting files, it is thus considered equal to
                                "Preserve" (P) in that situation.

                           T    means 'mark Saved and overwrite'. When merging
                                two archives, the data of the resulting archive
                                will be marked as already saved (same as 'S'
                                action): all data will be dropped in the
                                resulting archive, however the last modification
                                date [aka mtime] (used to detect changes in a
                                file's data) will be taken from the 'to be
                                added' file. This action does not apply when
                                extracting files, it is thus considered equal to
                                "Overwrite" (O) in that situation.

                           R    means 'Remove'. When merging two archives, the
                                resulting archive will not contain any entry
                                corresponding to the file that were in conflict.
                                This also implies that no EA will be stored for
                                that particular entry as the entry will no more
                                exist in the resulting archive (as if it had
                                never yet existed). When extracting files, this
                                will lead to file's suppression.

                           p    means 'Preserve', same as 'P' (but lowercase
                                letter) preserve the whole EA set and FSA. When
                                merging two archives, the Attributes set of the
                                resulting file will be the ones of the 'in
                                place' file (whatever is the overwriting action
                                taken for its data). While when extracting files
                                to filesystem, the Attributes of the file in
                                filesystem will not be changed (whatever is the
                                overwriting action taken for its data, unless
                                the file is removed using the 'R' policy, which
                                would remove the inode and thus also any
                                Attributes it had).

                           o    means 'Overwrite', same as 'O' (but lowercase
                                letter) overwrite the whole EA set and FSA. When
                                merging two archives, the Attributes set of the
                                resulting file will be taken from the 'to be
                                added' file. While when extracting files, the
                                Attributes set of the file in the filesystem
                                will have its Attributes erased and replaced by
                                those of the file in the archive (still
                                independent of what overwriting action is taken
                                for file's data).

                           s    means 'mark Saved and preserve', same as 'S'
                                (but lowercase letter) for EA and FSA instead of
                                data. When merging two archives, the EA and FSA
                                of the resulting file are marked as already
                                saved in the archive of reference, thus they are
                                dropped but the date of last inode change [aka
                                ctime] (used to detect changes in file's EA and
                                FSA) will be taken from the 'in place' file.
                                This action does not apply when extracting
                                files, it is thus considered equivalent to
                                "Preserve" (p) in that situation.

                           t    means 'mark Saved and overwrite', same as 'T'
                                (but lowercase letter) for EA and FSA instead of
                                data. When merging two archives, the EA and FSA
                                of the resulting file are marked as already
                                saved in the archive of reference, thus they are
                                dropped but the date of last inode change [aka
                                ctime] (use to track changes in EA) will be
                                taken from the 'to be added' file. This action
                                does not apply when extracting files, it is thus
                                considered an equivalent to "Overwrite" (o) in
                                that situation.

                           m    means 'merge Attributes and preserve'. The
                                resulting file in the merged archive will have
                                Attribute entries from both the 'in place' and
                                the 'to be added' files. If both files share a
                                same Attribute entry (same FSA or for EA the
                                same key for a given association) the one of the
                                'in place' file is kept (where from the
                                'preserve' notion). When extracting a file, the
                                file in the filesystem will have its EA and FSA
                                set enriched by the ones of the file in the
                                archive that do not exist on filesystem, but its
                                already existing Attributes will stay untouched.

                           n    means 'merge Attributes and overwrite'. The
                                resulting file in the merged archive will have
                                Attribute entries from both the 'in place' and
                                the 'to be added' files. If both files share a
                                same Attribute entry (same FSA or for EA the
                                same key for a given association) the one of the
                                'to be added' file will be kept (where from the
                                'overwrite' notion). When extracting file, the
                                file in the filesystem will have its Attributes
                                set enriched by ones of the file in the archive
                                with some of them possibly been overwritten.

                           r    means 'remove', same as 'R' but for the
                                Attribute set (thus all EA and FSA entries) of a
                                given file ('r' is lowercase letter here). The
                                file of the resulting archive during merging
                                operation will not own any EA nor any FSA, even
                                if the 'in place' and/or the 'to be added' files
                                did have some. For file extraction, this means
                                that the file in the filesystem will loose all
                                its EA set. The FSA cannot be 'removed' from a
                                filesystem and may not always have a default
                                value, thus this action does not modify FSA at
                                all in case of archive extraction. But in case
                                of merging the FSA are removed as previously
                                described. As for all the previous tests, this
                                Attribute operation is independent of the
                                operation chosen for file's data (uppercase
                                letters).

                           d    means 'delete'. When a same EA or FSA entry is
                                found both in the 'in place' and 'to be added'
                                files, such entry will be absent in the
                                resulting archive. In other words, when merging,
                                the EA set and FSA will only contain EA and FSA
                                entries specific to the 'in place' and those
                                specific to the 'to be added' file. Entries in
                                common will not be present. When extracting a
                                file from an archive, the file on filesystem
                                will have its EA set enriched by entries of the
                                'to be added' file that are new to the 'in
                                place' file. The other EA entries (which are
                                thus present in both archive and filesystem)
                                will be removed from the set, which the other
                                FSA will stay untouched (FSA cannot be "removed"
                                from a filesystem, nor they always have a
                                default value).

                           *    is valid for both EA and data. It tells that the
                                action is not yet defined at this step of the
                                evaluation and that further evaluation is
                                required (see the 'chain' operator below).

                           A    means 'Ask for user decision'. This uppercase
                                letter concerns Data overwriting. An application
                                interaction let the user define the action for
                                each file in conflict. Note, that this action if
                                used alone may become very boring or painful.
                                The idea is to use it in conditional statements
                                (which are described below) to have dar ask for
                                only non obvious cases.

                           a    means 'Ask for user decision'. This lowercase
                                letter is the equivalent for EA and FSA of the
                                'A' action. It is intended to be used in the
                                same conditional statements described below.

                           An action is thus a couple of letters, the first
                           being uppercase (for file's data) the second being
                           lowercase (for file's EA and FSA). When -/ option is
                           not given, the action is equivalent to '-/ Pp',
                           making dar proceed to file, EA and FSA preservation.
                           Before release 2.4.0 (June 2011), only -n and -w
                           options were available to define the overwriting
                           policy and the default behavior was to warn and wait
                           for confirmation before overwriting, which behavior
                           can be set by the '-/ Oo' policy. It seems the
                           default behavior changed to '-/ Pp' at that time and
                           nobody complained or noticed the difference until
                           2023, so this default behavior will not be reverted,
                           as nobody complained for more than 12 years about
                           that. Here follows some examples of actions, all
                           these are done for any entry found in conflict during
                           archive merging or archive extraction, we will see
                           further how to define conditional actions.

                           -/ Rr
                                will lead dar to remove any file from filesystem
                                that ought to be restored(!). Note the action
                                for EA/FSA is useless, the EA and FSA will
                                always be erased as well as data using 'R'. Thus
                                '-/ Rp' would lead to the same result.

                           -/ Po
                                will keep data of the 'in place' file and EA and
                                FSA set from the 'to be added' file.

                           -/ Ss
                                Using this option when merging an archive with
                                itself (used both as archive of reference (-A
                                option) and auxiliary archive of reference (-@
                                option) ) will provide the same action as an
                                archive isolation of the archive of reference,
                                but using twice more memory (so keep using the
                                isolation operation as before! Here this is just
                                an illustration of the possibility)

                           As seem previously -u and -U options can be used to
                           filter which EA entry to consider and which to
                           ignore. The question here is to explain how this
                           filtering mechanism interacts with the different
                           policies we just presented above. For files that are
                           not in conflict (found only as 'in place' or as 'to
                           be added'), only the EA entries matching the EA
                           filter are kept. For files in conflict, the
                           overwriting policy is evaluated first, then the
                           filtering mechanism is applied *after* it. Thus for
                           example, using the following [ -/ "Po" -u "*test" ],
                           when merging two archives, only EA ending with "test"
                           will be retained, and when a conflict takes place,
                           this "*test" ending EA will be taken from the 'to be
                           added' file if it has some EA of that type, its other
                           EA entry will be ignored as well as any EA entry of
                           the 'in place' file even those ending by "test". At
                           restoration in using the same options, file without
                           conflict will get restored but only EA entry ending
                           with "test" will be restored, and for file with
                           conflict (already present in filesystem), EA set of
                           file in filesystem will be removed and replaced the
                           EA entries of the file in archive that ends by
                           "test", if some exist.

                           the situation is similar with FSA family scope and
                           overwriting policy. Only FSA of a family present in
                           the scope will be retained, the overwriting policy
                           acts first then the FSA scope is applied. Note
                           however that any FSA present on filesystem and
                           excluded from the FSA scope are not touched.

                           Well, now let's see how to bring some more fun using
                           conditional statements in all these actions. The
                           structure to use is the following:

                           {<condition>}[<action if condition is true>]
                                This syntax let you place an action (as the ones
                                we saw just above) inside the brackets '[' and
                                ']' (for example [Pp]) that will take effect
                                only if the evaluation of the <condition> is
                                true.  Stated that a such statement is a new
                                type of action, you may have guessed that you
                                may use it recursively:
                                {<condition1>}[{<condition2>}[<action>]).

                           Well so far it seems useless. But instead of the "if
                           <condition> then <action> else <action>" paradigm
                           common to programming languages, due to the command
                           line context it has been chosen to instead use and
                           implicit "OR" operator between actions.  Thus you can
                           "stack" conditional statements this way:
                           {<condition1>}[<action1>] {<condition2>}[<action2>]
                           <action3>. In this example, if <condition1> is true
                           then <action1> will be used, ELSE if <condition2> is
                           true then <action2> will be used ELSE <action3> will
                           be used.  This leads to the same possibilities as
                           what is available with programming languages, but
                           with a slightly more simple syntax. Seen this, the
                           recursion of conditional syntax is more interesting.
                           For readability, you are allowed to add any space or
                           tab in the overwriting policy, but the resulting
                           overwriting policy must be given as a single argument
                           to dar, thus the use of quotes (either simple ´arg´
                           or double "arg") is necessary.

                           The last operator we will see is the 'chain'
                           operator. Once an expression is evaluated, the
                           resulting couple of action may contain an '*'
                           (undefined action for EA or data). Further evaluation
                           must be done. The chain operator which is represented
                           by a semicolon ';' let one to separate several
                           independent expressions that will be evaluated in
                           turn up to the time the couple of action is fully
                           defined. Once an action (for EA or for Data) is
                           defined, it can be redefined by a subsequent
                           evaluation in the chain, however if the action is
                           defined it cannot be set back to undefined, thus '*'
                           will never overwrite a previously defined action. If
                           at the end of the policy the couple of action is not
                           fully defined, the 'preserve' action is used ('P' or
                           'p' depending on which of EA or Data is left
                           undefined). Here follow a example of syntax:

                           -/ "{<condition1>}[P*] O* ; {<condition2>[*p] *o} ;
                           Rr"
                                The first expression will evaluate to either P*
                                or O*. At this step, as the action is not
                                completely defined, the second part of the chain
                                is evaluated, It will end with either *p or *o.
                                In any case, we have after this second statement
                                of the chain a fully defined action for both
                                data and EA (either Pp, Po, Op or Oo). Thus the
                                evaluation stops here and the "Rr" policy will
                                never be evaluated.

                           We now have one last thing to see: the available
                           conditions (what to place between braces '{' and
                           '}'). Conditions are defined each by a letter,
                           eventually followed by an argument between
                           parenthesis. The usual logical operators are
                           available: negation (!), conjunction (&) disjunction
                           (|). These characters must be escaped or quoted to
                           not be interpreted by the shell when used on command-
                           line. In particular the '!' under most shell must be
                           quoted and escaped (-/ '{\!R}[..]..', The escape
                           character '\' is not necessary inside DCF files
                           (those given to -B option) as no shell is used to
                           interpret these files. To these usual operators has
                           been added a new one: the "inversion" operator, noted
                           '˜'. Like the negation, it is an unary operator but
                           unlike the negation, it inverses the roles of 'in
                           place' and 'to be added' for the evaluation, which is
                           slightly different from taking the negation of the
                           result of the evaluation. All these operators follow
                           the usual precedence: unary operators ('!' and '˜')
                           are evaluated first, then the conjunction '&' then
                           the disjunction '|'. To override this, you can use
                           parenthesis '(' and ')' inside the condition. Over
                           these logical operators, the conditions are based on
                           atomic operator that compare the 'in place' file to
                           the 'to be added' file. Here they follow:

                           I    true only if the 'in place' entry is an inode.
                                This condition does not have any consideration
                                toward the to be added object. Note that ˜I can
                                be used to check the nature of the 'to be added'
                                object. A 'detruit' entry, which record the fact
                                that a file has been removed since the archive
                                of reference, is not an inode for example, and
                                the only type of entry that is not an inode is a
                                'detruit'. Thus you can define an action on
                                'detruit' objects using the "!I" expression for
                                the 'in place' entry and "!˜I" for the 'to be
                                added' entry.

                           D    true only if the 'in place' entry is a
                                directory. To know whether the 'to be added' is
                                a directory or not, one would use the
                                "inversion" operator: ˜D

                           F    true only if the 'in place' entry is a plain
                                file (true also if this plain file is a 'hard
                                link', that's it if its inode is linked several
                                times to the directory tree)

                           H    true only if the 'in place' entry is an inode
                                linked several times to the directory tree (=
                                hard link) it may be a plain file, a Unix
                                socket, a pipe, char device, a block device for
                                example.

                           A    same as H but the current 'in place' entry is
                                the first link we meet pointing to that hard
                                linked inode.

                           R    true if the 'in place' entry is more recent than
                                or of same date as the 'to be added' entry. The
                                last modification date [aka mtime] is used for
                                this comparison. If the 'to be added' entry is
                                not an inode (and thus has no mtime), the 'in
                                place' is considered to be more recent than the
                                'to be added' entry. Same thing if the 'in
                                place' entry is not an inode (and has no mtime
                                available for comparison), it is here too
                                assumed to be more recent.

                           R(<date>)
                                true if the 'in place' entry is more recent than
                                or of the same date as the fixed <date> given in
                                argument. No consideration is done toward the
                                'to be added' element. The <date> format is the
                                same as the one used with -af option. If an
                                entry has no mtime (it is not an inode for
                                example) it is assumed an virtual mtime of zero.

                           B    true only if both 'in place' and 'to be added'
                                are plain file (hard linked or not) and if the
                                'in place' file's data is larger or equal to the
                                'to be added' file's data. If one or both entry
                                are not plain files (or hard link to plain file)
                                and thus the file size comparison is not
                                possible, the 'in place' entry is assumed to be
                                'bigger' than the 'to be added' entry.

                           S    true only if the 'in place' data is saved in the
                                archive (not marked as unchanged nor marked as
                                only inode metadata changed, since the archive
                                of reference). Note that while extracting files
                                from an archive, the 'in place' file is the one
                                in the filesystem, which always has its data
                                'saved' (from libdar point of view). The
                                'inversion' of this atomic operator ˜S may still
                                be interesting in the context of restoration.

                           Y    true only if the 'in place' data is saved but
                                dirty (plain file having its data changed at the
                                time it was read for backup). Note, that
                                restoring in sequential read mode, it is not
                                possible to known whether a file is dirty (it is
                                possible to know it once having read its data,
                                but sequential reading does not allows then to
                                skip forward to get the dirty state of the file
                                and skip backward to eventually restore that
                                file, depending on the overwriting policy
                                result).

                           X    true only if the 'in place' data is a sparse
                                file

                           T    true only if the 'in place' and 'to be added'
                                entries are of same type (plain file, Unix
                                socket, named pipe, block device, char device,
                                symlink, directory, 'detruit' (which stands for
                                file deleted since the archive of reference was
                                done), and so on). Note that the number of links
                                to inode (i.e. whether this is a hard links or
                                not) is not taken into account.

                           L    true only if the 'in place' entry has delta
                                signature associated with it.

                           P    true only if the 'in place' entry is a binary
                                patch.

                           E    true only if 'in place' and 'to be added' are of
                                the same type and have the same inode data
                                information: uid, gid, permission, modification
                                date are taken into account, atime and ctime are
                                ignored in this comparison. If both are plain
                                files, the file sizes must be the same for this
                                condition to succeed. For char and block
                                devices, both major and minor numbers must
                                match. Last, for symlink, the target (the file
                                path they point to) must be the same.

                           e    true if the 'in place' entry has EA (may they be
                                saved or just recorded as existing).

                           r    true if the 'in place' entry has more recent or
                                equal dated EA to the 'to be added' entry. If
                                'to be added' has no EA or is even not an inode,
                                true is returned. If 'in place' has no EA or is
                                even not an inode, true is returned unless 'to
                                be added' has some EA. The comparison is done on
                                ctime dates.

                           r(<date>)
                                true if the 'in place' entry has more recent or
                                equal dated EA to the fixed <date> given in
                                argument. No consideration is done toward the
                                'to be added' element. The <date> format is the
                                same as the one used with -af option. If an
                                entry has no date (ctime date) (when it is not
                                an inode for example) it is assumed an virtual
                                ctime of value zero.

                           m    true only if 'in place' has more or equal number
                                of EA entry in its set of EA than 'to be added'
                                has. If an entry has not EA or is not even an
                                inode, it is assumed it has zero entry. The
                                comparison is done on this number. Note that the
                                number of EA entry is not the size used to store
                                these entries. For example, the EA entry
                                "user.test" counts for 1, whatever is the length
                                of the value associated to it.

                           b    true if the 'in place' entry has bigger EA set
                                or equal size EA set than the 'to be added'
                                entry. If an entry has no EA or is even not an
                                inode, it is assumed that it has a zero byte
                                length EA set. The comparison is done on this
                                number in that case. Note that the comparison is
                                done on the bytes used to store the whole EA set
                                associated to a given file.

                           s    true if the 'in place' entry is an inode (or a
                                hard linked inode) and has its EA saved in the
                                archive of reference, not only marked present
                                but unchanged since last backup. This test does
                                not take the 'to be added' entry into account.

                           Well, you've seen that uppercase letter are kept when
                           comparison is based on the inode or data while
                           lowercase letter is used for atomics based on EA. Now
                           that we have completed our tour of this feature let's
                           see some examples:

                           -/ Pp
                                as seen previously this is what does -n option
                                for files when no overwriting policy is defined,
                                which avoids any overwriting for Data as well as
                                for EA.

                           -/ "{!T}[Pp] {R}[{r}[Pp]Po] {r}[Op] Oo"
                                Space and tabs are allowed to ease readability.
                                Here the policy stands for: If files in
                                conflicts are not of the same type then keep
                                Data and EA of the entry 'in place'. Else if 'in
                                place' has a more recent data then if 'in place'
                                has more recent EA then keep both its Data and
                                EA, else keep only its Data and overwrite its
                                EA. Else (if 'in place' has not the more recent
                                data), if it has the more recent EA then
                                overwrite the data but keep its EA, else
                                overwrite both its data and EA.  This policy
                                tends to preserve the most recent data or EA,
                                but it does not take into account the fact that
                                EA or Data is effectively saved into the archive
                                of just marked as unchanged since the archive of
                                reference.

                           -/ "{!T}[{˜D}[Oo] Pp]"
                                If entries are not of the same type, if the 'to
                                be added' entry is a directory then we keep it
                                and overwrite the 'in place' entry, else we keep
                                the 'in place' entry. If entry are of same type,
                                the policy does not provide any action, thus the
                                default action is used: "Pp". You can change
                                this default action easily using a chain
                                operator:

                           -/ "{!T}[{˜D}[Oo] Pp] ; Aa"
                                In this case instead, if entry are of the same
                                type, the user will be asked what to.

                           -/ "{!T|!I}[{R}[Pp] Oo] {I&˜I}[{S}[{˜S}[{R}[P*] O*]
                           P*] {˜S}[O*] {R}[P*] O* ; {s}[{˜s}[{r}[*p] *o] *p]
                           {˜s}[*o] ] {r}[*p] *o"
                                Well this may seems a bit too complex but just
                                see it as an illustration of what is possible to
                                do: If both 'in place' and 'to be added' are not
                                of the same type we keep data and EA of the most
                                recent file (last modification date). Else, both
                                are of the same type. If both are inode we
                                evaluate a two expressions chain (expressions
                                are separated by a semicolon ';') we will see in
                                detail further. Else if they are of same type
                                but are not inode we take the EA and data of the
                                most recent entry (this is the last 10 chars of
                                the string). Well, now let's see the case of
                                inode: The first expression in the chain sets
                                the action for data and keep the action for EA
                                undefined. While the seconds, is the exact
                                equivalent but instead it leaves the action for
                                data undefined '*' and set the action for EA.
                                These two expressions follow the same principle:
                                If both entries are saved (by opposition to be
                                marked as unchanged since the archive of
                                reference) in the archives, the most recent
                                EA/Data is kept, else, the one of the inode that
                                is saved is kept, but if none is saved in the
                                archive the most recent entry (mtime/ctime) is
                                kept.


       -ˆ, --slice-mode perm[:user[:group]]
                           defines the permission and ownership to use for
                           created slices. By default, dar creates slices with
                           read and write available for anyone letting the umask
                           variable disable some privileges according to user's
                           preferences. If you need some more restricted
                           permissions, you can provide the permission as an
                           octal value (thus beginning by a zero), like 0600 to
                           only grant read and write access to the user. Be
                           careful not to avoid dar writing to its own slices,
                           if for example you provide permission such as 0400.
                           Note also that the umask is always applied thus
                           specifying -ˆ 0777 will not grant word wide read-
                           write access unless your umask is 0000.

       -_, --retry-on-change count[:max-byte]
                           When a file has changed at the time it was read for
                           backup, you can ask dar to retry saving it again. By
                           default a file can be re-saved up to 3 times (this is
                           the 'count' field), you can set it to zero to disable
                           this feature. In option the overall maximum amount of
                           byte allowed to be wasted due to retry changing
                           file's backup can be given after a colon character
                           (:), this is the 'max-byte' field. By default (no
                           --retry-on-change option specified) a limit of 1
                           wasted byte is allowed which is the mininum.
                           Specifying zero for max-byte set no limit on the
                           amount of wasted bytes (same as if no 'max-byte' was
                           specified), each changing file is then saved up to
                           'count' times if necessary.

                           A file is considered as changed when the last
                           modification time has changed between the time the
                           file has been opened for backup and the time it has
                           been completely read. In some situation it is not
                           possible to replace the already saved data for a file
                           (writing archive to a pipe for example), in that
                           situation only, a second copy of the file is added
                           just after the first previous try which leads that
                           previous try to becomes inaccessible, however it
                           holds some place in the archive, where from the
                           designation of "wasted bytes". You can remove all
                           wasted bytes from an archive using the
                           merging/filtering feature: dar -+ new_arch -A
                           old_arch -ak.

                           Note: since release 2.5.0, in normal condition no
                           byte is wasted when a file changed at the time it was
                           read for backup, except when doing a backup to pipe
                           (using '-c -' option), except if the beginning of the
                           modified file is located in a previous slice and
                           except if slice hashing or strong encryption is used.

       -ad, --alter=decremental
                           This flag is to be used only when merging two
                           archives. Instead of the usual merging where each
                           files of both archives are added to the resulting
                           archive with eventually a tie using the overwriting
                           policy (see -/ option), here the merging builds an
                           archive which corresponds to the decremental backup
                           done based on two full backups. the -A backup is
                           expected to receive the older archive while the -@ is
                           expected to point to the more recent one. If this
                           option is used, the eventually overwriting policy is
                           ignored and replaced internally by -/
                           "{E&R&˜R&(A|!H)}[S*] P* ; {(e&˜e&r&˜r)|(!e&!˜e)}[*s]
                           *p". Additionally, files found in the newer archive
                           that do not existed in the older are replaced by a
                           'detruit' entry, which marks them to be remove at
                           restoration time. For more information about
                           decremental backups read the usage_notes.html file in
                           the documentation. Note that decremental backup is
                           not compatible with delta binary.

       -asecu, --alter=secu
                           This option disable the ctime check done by default
                           during an differential backup: If the ctime of an
                           plain file has changed since the archive of reference
                           was done while all other values stay unchanged (inode
                           type, ownership, permission, last modification date),
                           dar issues a "SECURITY WARNING", as this may be the
                           sign of the presence of a rootkit. You should use the
                           -asecu option to disable this type of warning
                           globally, if you are doing a differential backup of a
                           just restored data (a differential backup with the
                           archive used for restoration taken as reference).
                           Effectively in that situation, as it is not possible
                           to restore ctime, the restored data's ctime will have
                           changed while other parameters will be unchanged for
                           all restored files, leading dar to issue a warning
                           for all restored files. This security check is
                           disabled (implicitly) if dar is run with -ac option.
                           Last, if a file has only its EA changed since the
                           archive of reference was done (new EA, removed EA,
                           modified EA), the security warning will show (false
                           positive).

       -., --user-comment "<message>"
                           This option let the user add an arbitrary message
                           into the archive header. Warning! this message is
                           always stored in clear text, even if the archive is
                           encrypted. You can see the message inserted in an
                           archive displaying the archive summary (dar -l
                           <archive> -q). Some macro can be used inside the
                           <message>:

                           %c   is replaced by the command line used. Note that
                                for security, any option related to archive
                                encryption is removed (-K, -J, -$, -#, -*, -%).
                                The command included from a DCF file (see -B
                                option) are never added by this macro. As a
                                consequence, if you do not want to see --user-
                                comment stored in user comments you can add the
                                --user-comment definition in an included file
                                like ˜/.darrc for example.

                           %d   this is the current date and time

                           %u   this is the uid under which dar has been run

                           %g   this is the gid under which dar has been run

                           %h   the hostname on which the archive has been
                                created

                           %%   the % character.

       -3, --hash <algo>   With this option set, when creating, isolating,
                           merging or repairing an archive, beside each
                           generated slices an on-fly hash file of the slice is
                           created using the specified algorithm. Available
                           algorithm are "md5", "sha1", "sha512" and
                           "whirlpool". By default no hash file is generated.
                           The hash file generated is named based on the name of
                           the slice with the .md5, .sha1, .sha512 or .whirlpool
                           extension added to it at the end. These hash files
                           can be processes by md5sum, sha1sum, sha512sum and
                           rhash (for whirlpool algorithm) usual commands
                           (md5sum -c <hash file>) to verify that the slice has
                           not been corrupted. Note that the result is different
                           than generating the hash file using md5sum or sha1sum
                           once the slice is created, in particular if the media
                           is faulty: calling md5sum or sha1sum on the written
                           slice will make you compute the hash result on a
                           possibly already corrupted file, thus the corruption
                           will not be seen when testing the file against the
                           hash at a later time. Note also that the creation of
                           a hash file is not available when producing the
                           archive on a pipe ("dar -c -").

       -7, --sign email[,email[,...email]]
                           When creating, isolating, merging or repairing an
                           archive with public key encryption (read -K option)
                           it is also possible to sign it with one or more of
                           your private key(s). At the difference of the hash
                           feature above, only the randomly generated key used
                           to cipher the archive, key that is dropped at the
                           beginning and at the end of the archive, is signed.
                           If the archive is modified at some place, that part
                           will not be possible to decipher, but signature
                           verification will stay quick and valid, unless the
                           part that has been tempered is the key inside the
                           archive in which case signature check will report a
                           failure and archive will not be readable at all. If
                           the signature is valid and the archive could be
                           extracted without error, the whole archive could be
                           assumed to be signed by the gnupg key owners, but
                           read below the security note. See also GNUPGHOME in
                           the ENVIRONMENT section at the end of this document.

                           A summary information about the signature information
                           is displayed while listing an archive in summary mode
                           "dar -l <archive> -q". For any operation involving a
                           signed archive, a short message only shows if the
                           archive is signed an one or more signature check
                           failed, no message is displayed in case of successful
                           signature check. This warning may be disabled using
                           the --alter=blind-to-signatures command.

       -<, --backup-hook-include <mask>
                           The mask is applied to path+filename during backup
                           operation only. If a given file matches the mask, a
                           user command (see -= option below) will be run just
                           before proceeding to the backup of that file and a
                           second time right after it has completed. See also ->
                           option below. IMPORTANT: if using the short option,
                           you need to enclose it between quotes: '-<' for the
                           shell not to interpret the < as a redirection. This
                           option can be used several times on command-line.

       -> --backup-hook-exclude <mask>
                           The mask is applied to path+filename during backup
                           operation only. If a given file matches the mask,
                           even if it matches a mask given after -< option, no
                           user command will be executed before and after its
                           backup. The -< and -> options act like -g and -P
                           options (but for a different purpose), they can
                           receive wildcard expression and thus have their
                           comportment driven by the --alter=globe and
                           --alter=regex expressions seen above, as well as the
                           --alter=mask option. Last the --alter=case and
                           --alter=no-case modify also the way case sensitivity
                           is considered for these masks. By default, no -> or
                           -< option, no file get selected for backup hook.
                           IMPORTANT: if using the short option, you need to
                           enclose it between quotes: '->' for the shell not to
                           interpret the > as a redirection. This option can be
                           used several times on command-line.

       -=, --backup-hook-execute <string>
                           for files covered by the mask provided thanks to the
                           -< and -> options, the given string is executed just
                           before the backup of that file starts and right after
                           it has completed. Pay attention: when the action
                           applies to a directory, it does not apply to any file
                           and subdirectory located inside this directory.
                           Several macros can be used that are substituted at
                           run time:

                           %%        will be replaced by a literal %

                           %p        will be replaced by the full path under
                                     backup

                           %f        will be replaced by the filename (without
                                     the path)

                           %u        will be replaced by the UID of the file

                           %g        will be replaced by the GID of the file

                           %t        will be replaced by a letter corresponding
                                     to the type of inode: 'f' for plain file,
                                     'l' for symlink, 'd' for directory, 'c' for
                                     char devices, 'b' for block devices, 's'
                                     for sockets, 'p' for pipes, 'o' for doors.

                           %c        and most interesting, %c (c for context),
                                     will be replaced by "start" or by "end"
                                     when the command is executed before or
                                     after the backup respectively.

                           For example, this feature let one dump a database
                           just before its backup starts, and remove the dumped
                           file(s) once the backup of that part has completed.

                           Note: when a directory is selected for this feature,
                           the user command is run before starting to backup any
                           file located in that directory and subdirectories,
                           with the context "start" (see %c above). It is also
                           run, as expected, after all files in that directory
                           and subdirectories have been saved, with this time
                           the context "end". But, between these two executions,
                           even if a file do match the backup-hook masks (thus,
                           this file is located inside this directory), no
                           command will be executed for it! It is assumed that
                           when a directory has been asked for a backup-hook to
                           be executed, this hook (or user command) is preparing
                           all data located in that directory.

                           For performance reasons due to the creation of a
                           shell process to intepret the user command-line and
                           subsequently the execution of the user command itself
                           (and this once before and once after a file to
                           backup), it not advise to use this feature for a
                           large number of files under backup (or worth, all of
                           them). The purpose of this feature is to prepare the
                           backup of some particular structures that need
                           coherence between files in order to be saved
                           properly. If all data under backup is concerned by
                           such coherent structure, better act before and after
                           running the dar command itself (for example
                           stopping/suspending and restarting/resuming the
                           concerned service/process). If many of such
                           structures are under backup or are nested in each
                           others, saving them independently (eventually using
                           this backup-hook feature for some or all of them) and
                           merging the resulting dar backups afterward or
                           feeding a dar_manager database with them, are also
                           options to consider.

                           The environment variable DAR_DUC_PATH also applies to
                           these user commands (see -E above, or the ENVIRONMENT
                           paragraph below).

       -ai, --alter=ignore-unknown-inode-type
                           When dar meets an inode type it is not aware about
                           (some times ago, it was the case for Door inode on
                           Solaris for example, Door inodes are handled by dar
                           since release 2.4.0), it issues a warning about its
                           inability to handle such inode. This warning occurs
                           even if that entry is filtered out by mean of -X, -I,
                           -P, -g, -[ or -] options, as soon as some other entry
                           in that same directory has to be considered for
                           backup, leading dar to read that directory contents
                           and failing on that unknown inode type (filtering is
                           done based on the result of directory listing). This
                           option is to avoid dar issuing such warning in that
                           situation.

       -8, --delta sig     This option can be used for archive backup, isolation
                           and merging. Important: read also the best practice
                           paragraph below

                           Called during a backup operation it leads dar to
                           create delta signature for each file: If the file is
                           new or has changed, a signature is computed and
                           stored beside the file's data, which increases the
                           archive size. If the file is not new and has not
                           changed (differential backup context) if an delta
                           signature is found in the archive of reference (or
                           isolated catalogue), this signature is copied to the
                           resulting archive, but not the file's data. If the
                           reference archive does not hold delta signature, a
                           new delta signature is computed based on the current
                           data found on filesystem for that file and then
                           stored in the resulting archive.  But in any case,
                           without --delta sig the resulting archive will hold
                           no delta signature. Note that delta signature
                           transfer is not possible when the archive of
                           reference is read in sequential mode (still here for
                           backup operation), thus delta signature is disabled
                           when the archive of reference is read in sequential
                           mode.

                           For isolation and merging operations, the behavior is
                           slightly different: --delta sig option let dar
                           transfer existing delta signatures from the original
                           archive to the isolated/merged one but does not lead
                           dar to compute delta signatures for files that do not
                           have one, unless one of the --include-delta-sig or
                           --exclude-delta-sig option is specified; in that case
                           the delta signatures are transfered/dropped and if
                           not present calculated accordingly to these mask
                           options. However note that it is not possible to
                           calculate delta signature for unsaved files in the
                           archive of reference (because the archive of
                           reference does not hold their data) as well as for
                           fully saved files when merging is performed keeping
                           files compressed (see -ak option). Another
                           restriction while merging concernes sparse files, it
                           is not possible to calculate binary signature for
                           file stored as sparse files, but if sparse file
                           detection mechanism is activated at merging time,
                           delta signature can be calculated for sparse files
                           too even if it is missing in the reference archive.
                           In short: if you want recalculation of delta
                           signature while merging, do not keep file compressed
                           (do not use -ak option) and if you want to avoid
                           having sparse files excluded from the delta signature
                           recalcutation, activate sparse file detection (use
                           -ah option). Delta signature transfer is not possible
                           for on-fly isolation, you need to do normal archive
                           isolation to obtain an isolated catalogue with delta
                           signatures.

       -8, --delta sig:<function>:<multiplier>[:<divisor>[:<min>[:<max>]]]
                           this variant of '--delta sig' option let you specify
                           the block length used to build delta signatures.
                           Larger values reduce CPU load required to build delta
                           signature, but also lead to less accuracy when
                           computing delta binary, which means larger delta
                           patch and more data saved when a file has changed.
                           The block len is calculated following the formula:
                           block_len = function(filesize)*multiplier/divisor If
                           this calculated value is lower than "min", it is set
                           to min. If the calculated value is greater than "max"
                           it is set to max unless max is set to zero in which
                           case the value is kept as is. Of course "divisor"
                           cannot be null. The available functions are:

                           fixed
                                always returns 1, in other terms, the block size
                                is independent from the file size to build delta
                                signature for

                           linear
                                returns the filesize. here, you will most of the
                                time use 1 for multiplier and increase divisor
                                to at least 10 for it makes sense

                           log2 returns the upper rounded power of 2 closest to
                                the file size (base 2 logarithm).

                           root2
                                returns the approximated value of the square
                                root of the file size. Note that for better
                                performance and as accuracy is not important
                                here, this function is implemented as
                                exp2(log2(filesize)/2) where exp2 and log2 are
                                based on the integer left and right bit shift
                                operations.

                           root3
                                returns the approximated value of the cube root
                                of filesize, implemented as
                                exp2(log2(filesize)/3)

              All numerical fields can receive multiplier suffix (k, M, ...) for
              more details about these suffixes, see -s option description. If
              not specified, "max" defaults to zero (no maximum value defined).
              If not specified "min" defaults to RS_DEFAULT_BLOCK_LEN (see below
              for details on this symbol). If not specified "divisor" defaults
              to 1. Using "--delta sig" without additional fields is equivalent
              to using --delta sig:fixed:RS_DEFAULT_BLOCK_LEN up to dar/libdar
              version 2.7.10. Starting release 2.7.11, the default is equivalent
              to use --delta
              sig:root2:1:1:RS_DEFAULT_BLOCK_LEN:64*DEFAULT_BLOCK_LEN , which is
              _almost_ what is used by rsync command line tool (rsync use rather
              700 bytes as minimum block size), where "RS_DEFAULT_BLOCK_LEN" is
              taken from librsync and is today equal to 2048 bytes (which may
              well change in the future by the way if librsync maintainers
              decide to do so).


       -{, --include-delta-sig <mask>
                           By default when --delta sig is provided, delta
                           signatures are computed for all files enrolled in the
                           backup operation (see also --delta-sig-min-size
                           option). This option and --exclude-delta-sig allow
                           restricting the files for which delta signature have
                           to be calculated in that situation. The mask applies
                           to the whole path, the same way as -P/-g options do.

                           For merging or isolation operations, when --delta sig
                           is used no delta signature is computed only existing
                           ones are transferred as is without restriction. To
                           change that behavior and thus either drop or add
                           delta signature to files that did not have one in the
                           archive of reference, specify an combination of
                           --include-delta-sig or --exclude-delta-sig with
                           --delta sig.  This option as well as --exclude-delta-
                           sig can be used several times on command-line but are
                           useless/ignored without --delta sig. See also -am,
                           -ag and -ar options.

       -}, --exclude-delta-sig <mask>
                           Files matching the given mask will never have their
                           delta signatures calculated, may --delta sig option
                           be specified or not. See also --include-delta-sig
                           option above and --delta-sig-min-size below.

       -6, --delta-sig-min-size <number>
                           For archive merging, isolation and creation, when dar
                           has to (re-)calculate delta signatures, this option
                           modifies the minimum file size (in bytes) below which
                           dar never calculates delta signatures. This option
                           acts independently from --include-delta-sig and
                           --exclude-delta-sig , however it cannot re-activate
                           delta signature recalculation by itself while
                           merging/isolating an archive, it requires either
                           --exclude-delta-sig or --include-delta-sig option to
                           be active in that situation. For archive backup
                           instead, it does not require --exclude-delta-sig nor
                           --include-delta-sig to act, but only need --delta sig
                           option to be set. By default, this minimum size is 10
                           kio. The same option suffixes (k for kilo, M for
                           mega, G for giga, T, ...) as the ones available with
                           --slice option can be used here too. Using zero as
                           argument gives the same result as not specifying this
                           option at all (default size).

       -8, --delta no-patch
                           In the context of differential backup, this option
                           leads dar to never consider files for delta binary
                           even if delta signatures are present. By default
                           delta binary (rsync-like) operation is performed when
                           a file has changed since the archive of reference was
                           made *and* if a delta signature could be found in the
                           archive of reference for that file (or in the
                           isolated catalogue used as reference for the
                           incremental/differential backup). If no delta
                           signature could be found or if --delta no-patch is
                           used, the normal behavior is done, which consist of
                           saving that whole file in the archive. Note that if
                           the archive of reference is read in sequential mode,
                           the --delta no patch is required, dar will refuse to
                           execute the operation: sequential read and binary
                           delta are not compatible, because reading in
                           sequential mode an archive does not let skipping
                           backward to fetch the delta signature necessary to
                           setup a delta patch.

       Binary delta options usage and best practices:
              First it must be understood that binary delta has advantages (less
              storage requirement) and drawbacks: data corruption has a wider
              impact on the ability to restore a given file, restoration of
              incrementally backed up file may ask much more than one archive to
              be used. To limit the impact of the first drawback, dar binary
              delta is done per file, not globally on the total amount of saved
              data. You are also strongly encouraged to protect your backups
              with parity data using par2 (see dar_par.dcf file in the examples
              section of the documentation). Adding par2 data will increase
              storage requirement by a little, but usually much less than the
              amount gained using binary delta. Last drawback, binary delta
              relies on checksum (contained in the delta signature) and not on
              the real data to build the binary delta. There is chances that two
              different files provide the same checksum, even if the chances are
              very low, probability is not null. The consequence is that using
              binary delta the risk exists that the restored data do not match
              the original data and this will not be noticed by the librsync
              library on which libdar relies for that feature. Dar adds a second
              level of checksum, to detect data corruption inside the archive
              and to check that the file the delta patch is about to be applied
              is the expected base file, this reduces the risk of "collision"
              but does not remove it completely. After these warnings, let's now
              see the best practices about binary delta:

              Once a full backup has been done using --delta sig, any
              differential backup made based on this archive will use binary
              diff for file having a delta signature present in the full backup.
              If you always make differential (not incremental) backups based on
              such full backup you have nothing more specific to do in regard to
              binary delta, dar will handle it transparently. In particular you
              do not need to invoke --delta sig at subsequent backup, this saves
              space in differential archives as well as CPU cycles.

              However, When doing incremental (not differential) backups this
              time, if you want to have dar using binary delta at each
              subsequent incremental backup, delta signatures must be present in
              the successive incremental backups. This is done by using --delta
              sig option for each new incremental backup created.

              If you were used to use isolated catalogues before release 2.6.0
              you can add --delta sig option while isolating a catalogue from an
              archive containing delta signatures. Such isolated catalogue will
              be much larger than what it can be without this option but it can
              be used as reference for a new differential/incremental backup
              letting dar relying on binary delta. Isolated catalogue generated
              without --delta sig do not contain delta signature and cannot lead
              to binary delta operation when used as reference for an
              incremental or decremental backup.

              Another way of doing differential backup is to make a normal full
              backup without --delta sig option, and only add delta signatures
              at archive isolation time using --delta sig --include-delta-sig
              "*" options. Binary delta signature will then be calculated based
              on the saved files. Then, using the resulting isolated catalogue
              as reference dar will be able to proceed to binary delta for the
              differential backup. If this works pretty well for differential
              backup (or the first incremental backup) which is based on a full
              backup, for incremental backup this is less adapted as a file that
              has not changed since the archive of reference was made does not
              hold any data and calculating the delta signature is not possible.
              The first method explained two paragraphs above is better as the
              incremental backup fetches the already calculated delta signature
              from the reference to keep it in the resulting incremental backup,
              so even without data, binary delta is still possible.

              Isolated catalogue using the --delta sig option, can still be used
              as backup of the internal catalogue they have been isolated from.
              However, as they hold their own delta signatures, such isolated
              catalogue can only have access to its own ones, not to those of
              the archive of reference. In particular when testing an archive
              (-t option), using -A option to rescue the archive internal
              catalogue using an isolated catalogue containing delta signatures,
              dar will not be able to check that there is no corruption in the
              delta signatures fields of the archive under test. For that type
              of testing either use the internal catalogue of the archive or
              rescue it using an isolated catalogue built without --delta sig
              option.

       -az, --alter=zeroing-negative-dates
                           dar/libdar saves dates as a number of seconds since
                           the beginning of year 1970, the well known "Unix
                           time" (plus a positive fraction for sub-second time-
                           stamping). Some systems may return a negative number
                           as the Unix time of a given file (files having dates
                           before 1970), in that situation by default and since
                           release 2.5.12 dar pauses and asks the user whether
                           to assume the date as being zero. But with -az
                           option, dar/libdar automatically assumes such
                           negative dates to be zero and just issue a warning
                           about the problem met.

       -\, --ignored-as-symlink <absolute path>[:<absolute path>[:...]]
                           When dar reaches an inode which is part of this
                           provided colon-separated list, if this inode is not a
                           symlink this option has no effect, but if it is a
                           symlinks dar saves the file the symlink points to and
                           not the symlink itself as dar does by default. In
                           particular, if the pointed to inode is a directory
                           dar recurses in that directory. You can also pass
                           this list as argument to the DAR_IGNORED_AS_SYMLINK
                           environment instead of using --ignored-as-symlink
                           (which takes precedence over the environment
                           variable).

       -'\'', --modified-data-detection=any-inode-change, --modified-data-
       detection=mtime-and-size
                           Before release 2.6.0, during a
                           differential/incremental backup if any part of a
                           file's inode metadata changed (ownership, permission,
                           ...) even if the mtime (last modification time) and
                           file size stood the same, dar had no choice than
                           resaving the whole file for backup to record the
                           metadata changes. This lead to a waste of backup time
                           and space if in fact and for example only the
                           ownership had been modified. You can still keep this
                           historical behavior by invoking the --modified-data-
                           detection=any-inode-change option.  Since release
                           2.6.0 a new entry status ("inode-only") has been
                           added. Dar can now re-save only metadata when the
                           inode change does not concern the data. To know
                           whether the data has changed or not, by default (no
                           --modified-data-detection option given) dar looks at
                           mtime and at file's size only. Specifying --modified-
                           data-detection=mtime-and-size (which is the default
                           behavior) can be used to revert the action of
                           --modified-data-detection=any-inode-change for
                           example when playing with included files (DCF files):
                           the latest met takes precedence.

       -T, --kdf-param <integer>[:<hash algo>]
                           At the difference of the listing context (see below),
                           in the context of archive creation, merging,
                           isolation and repair, -T option let you define the
                           iteration count used to derive the archive key from
                           the passphrase you provided (archive encryption
                           context) and the hash algorithm used for that
                           derivation. -T has another older meaning when doing
                           archive listing, but due to the lack of free
                           character to create a new CLI option, there was no
                           other choice than recycling an existing option not
                           used in the context of archive
                           creation/merging/isolation. The consequence is that
                           the -T option must appear after the -+/-c/-C/-y
                           options for the operational context to be known at
                           the time the -T option is met and its --kdf-param
                           meaning to be taken into account. As --kdf-param is
                           an alias to -T, this long form of this option must
                           also be found after the use of either -c, -C or -+
                           option.

              Without --kdf-param the KDF fonction uses 200,000 iterations for
              md5, sha1 and sha512 (PBKDF2 from PKCS#5 v2) but only 10,000 for
              argon2. If libargon2 is present, this is the default hash
              algorithm, else sha1 is used with PBKDF2. Valid parameters are
              "sha1", "sha512", "md5" and "argon2" for the hash algorithms and a
              value greater than 1 for the iteration count. However it is advise
              to use a value equal or greater to the default values mentionned
              previously. The suffixes described for -s option are also
              available here (k, M, G, T, P, ...) however pay attention to the
              -aSI/-abinary mode which default to binary, in which case "-T 1k"
              is equivalent to "-T 1024". Example of use: --kdf-param 20k:argon2

       -anru, --alter=never-resave-uncompressed
                           At creation time or when re-compressing data at
                           merging time (thus when option -ak is not used), by
                           default dar tries to re-save file uncompressed if the
                           compression result takes more space than the
                           uncompressed original data. This has the drawback to
                           lead dar to skip back the archive about to be
                           created, the advantage is to not waste storage space.
                           This option let you disable this feature: dar will
                           then not skip back and will keep files compressed
                           even if their compressed data takes more space as
                           what they would take uncompressed.

       -arep, --alter=repair
                           For isolation operation only, this option make dar
                           able to isolate a catalog from a truncated backup.
                           This option transparently implies --sequential-read
                           and --alter=force-first-slice to be able to read the
                           content of the truncated archive. The isolated
                           catalog can then be used to read the archive in
                           direct mode for better efficienty (see -A option used
                           with -x/-l/-t commands) which avoids repairing which
                           saves time (and non-rewritable media) if the volume
                           of data is huge.

       RESTORATION SPECIFIC OPTIONS (to use with -x)

       -k[{ignored|only}], --deleted[={ignore|only}]
                           Without argument or with the "ignore" argument, this
                           option leads dar at restoration time to not delete
                           files that have been deleted since the backup of
                           reference (file overwriting can still occur). By
                           default, files that have been destroyed since the
                           backup of reference are deleted during restoration,
                           but a warning is issued before proceeding, except if
                           -w is used. If -n is used, no file will be deleted
                           (nor overwritten), thus -k is useless when using -n.
                           If -/ option is used, this option without argument is
                           ignored! With the "only" argument, this option only
                           consider files marked as to be removed in the archive
                           to restore, no file are restored but some file are
                           removed. When -konly (or --deleted=only) is used, the
                           -/ option is ignored (at the opposition of the
                           "--deleted=ignore" option which is ignored when the
                           -/ is used). Of course "--deleted=ignore" and
                           "--deleted=only" are mutually exclusive, because if
                           both of them were available at the same time dar
                           would do nothing at all.

       -r, --recent        only restore files that are absent or more recent
                           than those present in filesystem. If -/ option is
                           used, this option is ignored!

       -f, --flat          do not restore directory structure. All files will be
                           restored in the directory given to -R, if two files
                           of the same name have to be restored, the usual
                           scheme for warning (-w option) and overwriting (-n
                           option) is used. No rename scheme is planned
                           actually. When this option is set, dar does not
                           remove files that have been stored as deleted since
                           last backup. (-f implicitly implies -k).

       -ae, --alter=erase_ea
                           [DEPRECATED use -/ instead] Drop all existing EA of
                           files present in filesystem that will have to be
                           restored. This way, the restored files will have the
                           exact set of EA they had at the time of the backup.
                           If this option is not given, a file to restore will
                           have its EA overwritten by those present in the
                           backup and if some extra EAs are present they will
                           remain untouched. See the Note concerning Extended
                           Attributes (EA) above for a detailed explanation
                           about this behavior. If -/ option is used, this
                           option is ignored!

       -D, --empty-dir     At restoration time, if -D is not specified (default)
                           any file and directory is restored in regard to the
                           filtering mechanism specified (see -I, -X, -P, -g, -[
                           and -] options). But if -D option is provided the
                           restoration skips directory trees that do not contain
                           saved files. This avoid having a huge empty tree with
                           a few restored files especially when restoring a
                           differential archive in an empty place. Note: This
                           feature cannot work when --sequential-read is used,
                           as it is not possible to know whether a directory
                           contains or not some saved files at the time the
                           directory inode is read from the archive in
                           sequential reading mode.

       -2, --dirty-behavior { ignore | no-warn }
                           At restoration time, if a file in the archive is
                           flagged as "dirty" (meaning that it had changed at
                           the time it was saved), user is asked for
                           confirmation before restoring it. Specifying "ignore"
                           will skip those dirty files, while "no-warn" will
                           restore them without user confirmation. This feature
                           is incompatible with sequential reading mode, in this
                           mode dar cannot know whether a file is dirty before
                           having restored it. In consequences, in --sequential-
                           read, once a file has been restored, if it is found
                           to be dirty it will be removed unless dirty-behavior
                           is set to "no-warn".

       -/, --overwriting-policy <policy>
                           Overwriting policy can be used for archive
                           restoration to define when and how file overwriting
                           can occur. See above the description of this option.

       -A, --ref [[<URL>]<path>]/<basename>
                           The --ref option can be used with an isolated
                           catalogue to rescue an archive that has a corruption
                           in the catalogue part, see GENERAL OPTIONS above for
                           more details.

       -au, --alter=unix-sockets
                           Do not restore unix-sockets. By default saved unix
                           sockets are recreated at restoration time.

       -ap, --alter=place  Since version 2.7.1 libdar stores the filesystem root
                           path (given -R option) used when creating a backup,
                           this is the known as the 'in-place' path. At
                           restoration time by default, dar uses the provided -R
                           option or if not specified uses the current directory
                           as root directory for the restoration operation.
                           Using -ap option lead dar to read the in-place path
                           from the backup and restore the data using this path
                           instead. This option is thus exclusive with -R option
                           and may lead dar to report an error if the archive
                           has not stored any in-place path (older archive
                           format or backup resulting of the merging of two
                           backups having different in-place path).

       -affs, --alter=force-first-slice
                           This option first purpose was at restoration time
                           when using an isolated catalogue. In that context dar
                           still needs to read the archive format from the
                           backup to restore. In sequential read mode, this
                           information is always fetched from the beginning of
                           the archive, but in direct access mode it may be
                           fetched reading the end of the last slice (default
                           behavior) or reading at the beginning of the first
                           slice (when -affs is set). The objective is to avoid
                           fetching the last slice when using very large
                           backups. One can define a first slice (see -S option)
                           of for example 1 kB while other slices (-s option)
                           can be specified arbitrarily large. With the help of
                           an isolated catalogue based on this archive and the
                           first (small) slice, reading some data from this
                           large backup then only needs the few (big) slices
                           where the data is located, not more.

       -aefd, --alter=extract-from-database
                           In this mode of data restoration, the argument given
                           to -x option should point to a dar_manager database.
                           This is almost equivalent to use dar_manager's -r
                           option at the difference that there is only one
                           process and all dar options given on command line are
                           available to each backup/archive referred in the
                           database that will be used for this restoration.
                           Dar_manager was designed to restore few files then
                           has been extended to a directory tree, but passing
                           the fileset scope to restore between process is not
                           that efficient. With -aefd option better performance
                           is provided to restore the whole dataset referred
                           from a set of full, incremental and/or differential
                           backups referred in a dar_manager database. See also
                           "-af -A <date>" option to limit the restoration to
                           the status data had before a given date.

                           with -aefd restoration mode, it is possible to
                           restore in the state at a given date by mean of -af
                           and -A options. By default, the most recent state
                           available is restored for all entries. File filtering
                           mechanism can also be used to restore only certain
                           files and directories, instead of all that were
                           present at the latest or given date state.

       TESTING AND DIFFERENCE SPECIFIC OPTIONS (to use with -t or -d)

       -ado-not-compare-symlink-mtime, --alter=do-not-compare-symlink-mtime
                           With this option set, when comparing a symlink, no
                           message shows when symlink in archive and symlink on
                           filesystem do only differ by their mtime. See also -O
                           option.

       -ap, --alter=place  is also available as described just above for
                           restoration options.

       -az, --alter=zeroing-negative-dates
                           dar/libdar saves dates as a number of seconds since
                           the beginning of year 1970, the well known "Unix
                           time" (plus a positive fraction for sub-second time-
                           stamping). Some systems may return a negative number
                           as the Unix time of a given file (files having dates
                           before 1970), in that situation by default and since
                           release 2.5.12 dar pauses and asks the user whether
                           to assume the date as being zero. But with -az
                           option, dar/libdar automatically assumes such
                           negative dates to be zero and just issue a warning
                           about the problem met.

       No other specific option, but all general options are available except
       for example -w which is useless, as testing and comparing only read data.
       -A option is available as described in GENERAL OPTIONS to backup of
       internal catalogue of the archive (assuming you have a previously
       isolated catalogue available).

       Doing a difference in sequential read mode is possible but hard linked
       inodes can only be compared to the filesystem the first time they are
       met, next hard links to this same inode cannot obtain the corresponding
       data because skipping backward in sequential read mode is forbidden. In
       that situation, the hard links are reported as skipped, meaning that data
       comparison could not be performed.

       -affs, --alter=force-first-slice
                           this option also applies to testing and difference
                           operations (see details above).

       LISTING OPTIONS (to use with -l)

       -T, --list-format=<normal | tree | xml | slicing>
                           By default, listing provides a tar-like output (the
                           'normal' output). You can however get a tree-like
                           output, an XML structured output or an output
                           focusing on slice(s) where each file's data, EA and
                           FSA is located in. The option --tree-format is an
                           alias to --list-format=tree (backward compatibility).
                           Note that the files doc/dar-catalog-*.dtd define the
                           format of the XML output listing (This file is also
                           installed under $PREFIX/share/doc)

                           the -Tslicing option can also be used with isolated
                           catalogue generated with dar 2.5.0 or above, as
                           isolated catalogues now contain a copy of the slicing
                           layout of the archive of reference. However, if the
                           archive of reference has been re-sliced (using
                           dar_xform) after the isolated catalogue has been
                           built, the slicing information would not be correct.
                           For that corner case, you can use the -s and -S
                           options with -Tslicing to specify what are the new
                           slice sizes of the archive of reference. Last,
                           -Tslicing and --sequential-read options are not
                           compatible except for isolated catalogues.

       -as, --alter=saved  list only saved files

       -alist-ea, --alter=list-ea
                           list Extended Attributes name for each file that has
                           some.

       -ay, --alter=byte, --alter=bytes
                           by default files size is displayed to occupy the
                           shortest number of characters by using the largest
                           unit possible (KiB, MiB, GiB, and so on). With this
                           option instead, the size is displayed with maximum
                           precision using the exact number of bytes used for
                           each file.

       -I, -X, -P, -g, -[, -]
                           can be used to filter file to list base on their name
                           or path.

       -aheader            displays the header (when --sequential-read is used)
                           or the trailer of the archive and then stops. This
                           archive header/trailer is always in clear text even
                           when the archive is ciphered. This option is here to
                           let you access to these fields without providing the
                           encryption key.

       -afdd, --alter=fully-detailed-dates
                           show the sub-second fraction value of dates,
                           according to the time precision that was available in
                           the system where the backup was created.

       From the general options it seems only -vm and -b stay useful here. Note
       that -vm displays an archive summary first, where a detailed of
       information about the archive can be obtained. If you want to display
       only this summary use -q with -l option.

       displayed fields

                 [Data]    possible values are [     ] or [Saved] or [InRef] or
                           [DIRTY] or [Inode] or [Delta]. [     ] means that the
                           data has not been saved because there is no change
                           since backup of reference. [Saved] means that the
                           data has been saved completely, and thus this archive
                           is able to restore the file without other help.
                           [InRef] was used in archive generated by dar version
                           2.3.x and before when isolating a catalogue from an
                           archive, and means that the file was saved in the
                           reference archive. [DIRTY] means that data is saved
                           (like [Saved]) but has changed at the time dar was
                           reading it for backup, leading dar to possibly store
                           the file in a state it never had. [Inode] means only
                           permission ownership and ctime data changed since the
                           archive of reference was done is recorded in the
                           archive, the data did not changed according to the
                           --comparison-field set or not set. Last [Delta] means
                           the file's data is saved as a binary delta (or delta
                           patch), which is much shorter than the full data as
                           what is done with [Saved]. It also means that you can
                           only restore the file if it exists on filesystem in
                           the state it had when the archive of reference was
                           done, for the patch to be possible to apply on it.
                           This is the case for example if you just restored
                           this file from the archive of reference.

                 [D]       possible values are [-], [ ] or [D]. [D] means that
                           delta signature associate with this file is present
                           in the archive. [ ] means that the file has no
                           associated delta signature and thus binary diff will
                           not be possible for it. [-] is used for non plain
                           files inodes for which delta signature is not
                           applicable.

                 [EA]      possible values are " " (empty string) or [     ] or
                           [InRef], [Saved] or [Suppr]. It Shows whether
                           Extended Attributes are present and saved ([Saved]),
                           are present but not saved ([     ]) which means there
                           is no change since backup of reference, if there is
                           no EA saved for this file (empty string) or if some
                           EA were present in the archive of reference but none
                           is currently available ([Suppr]). [InRef] was used
                           when isolating a catalogue (release 2.3.x and before)
                           from an archive and means that the file was saved in
                           the reference archive.

                 [FSA]     Each character represent a FSA Family:

                           "L"  is the first character (L/l/-) representing
                                ext2/3/4 FSA family

                           "H"  is the second character (H/h/-) representing
                                HFS+ FSA family

                           "-"  the third character is reserved for future FSA
                                family and is always a dash for now.

                           Uppercase means the FSA set is saved, lowercase means
                           the FSA is present in the archive of reference and
                           has not changed since that time. Last a dash (-)
                           means no FSA of that family has been saved for that
                           file.

                 [compr]   possible values are [....%] or [-----] or [     ] or
                           [worse]. Shows if the file has been compressed
                           ([...%]) and the compression ratio reached
                           "(uncompressed-compressed)/uncompressed", for example
                           [ 33%] means that the compressed data uses only 66%
                           of the space required to store uncompressed data (33%
                           of space saved thanks to compression), or if the file
                           is stored without compression ([    ] see -m, -Y and
                           -Z options) or if the file is not subject to
                           compression because it is not a saved regular file
                           ([----]), or if the file takes more space compressed
                           than its original size ([worse]), due to compression
                           overhead. Note that 1% compression ratio brings quite
                           no data reduction, while obviously 98% is a very
                           performant compression (compressed file takes only 2%
                           of the size required by the uncompressed date).

                 [S]       possible values are [ ] or [X]. [X] only applies to
                           saved plain files, and tells that the file is stored
                           using sparse file data structure: not all data is
                           stored, long sequence of zeros are skipped. This also
                           means that at restoration time, if the filesystem
                           supports it, holes will be restored. To store hole
                           information libdar uses escape sequence (special
                           sequence of byte), but to avoid real data to be
                           considered as such escape sequence, a special escape
                           sequence is used when data looks like an escape
                           sequence. So if a data contains a such escape
                           sequence, it must be read as if it contains holes to
                           be able to restore back the data in its original
                           form. For that reason, in some rare circumstances
                           (saving an dar archive inside a dar archive without
                           compression or encryption, for example) a file
                           without hole may be marked [X] as if it had holes and
                           will be longer by on byte for each data sequence
                           looking like an escape sequence.

                 permission
                           see ls man page. Note that a star (*) is prepended to
                           the permission string if the corresponding inode is
                           linked several times to the directory structure (hard
                           link).

                 user      owner of the file

                 group     group owner of the file

                 size      size in byte of the file (if compression is enabled,
                           the real size in the archive is "compression rate"
                           time smaller).

                 date      the last modification date of the file. The last
                           access time is also saved and restored, but not
                           displayed.

                 filename  The name of the file.

                 Extended Attributes
                           When using -alist-ea option, for hard linked inode,
                           the filename is followed by an integer between
                           braces: Entries with the same number do point the the
                           same inode.

                 Slice(s)  In -Tslice mode, each file is given the range of
                           slices it is located in. If slice size is chosen
                           particularly small, some slices may contain no file,
                           EA, FSA data but only tape marks or the internal
                           catalogue, leading the aggregation of reported slices
                           not to cover all available slices of the archive.

EXPLICIT OPTIONAL ARGUMENTS
       When dar has not been compiled with GNU getopt, which is not present by
       default on some systems like FreeBSD, you may lack the optional arguments
       syntax. For example "-z" will create a parse error on command-line, or in
       -B configuration files. The solution is to explicitly give the argument.
       Here follows a list of explicit argument to use in place of optional
       ones:

       -z                  must be replaced by -z 9

       -w                  must be replaced by -w d or -w default

       -H                  must be replaced by -H 1

       -0                  must be replaced by -0 ref

       -5                  must be replaced by -5 ""

       -p                  must be replaced by -p 1

       -v                  must be replaced by -v all

       -k                  must be replaced by -k ignore

       -5                  must be replaced by -5 user.libdar_no_backup

       -M                  must be replaced by -M I:/

       important !  When using GNU getopt(), optional arguments are available by
       sticking the argument to the short option: "-z" for example is available
       as well as "-z9". But "-z 9" is wrong, it will be read as "-z" option and
       "9", a command line argument (not an argument to the -z option). In the
       other side, when using a non GNU getopt this time, "-z" becomes an option
       that always requires an argument, and thus "-z 9" is read as "-z" option
       with "9" as argument, while "-z9" will be rejected as a unknown option,
       and "-z" alone will generate an error as no argument is provided. In
       consequences, you need a space between the option (like "-z") and its
       argument (like "9"), when dar does not rely on a GNU getopt() call, which
       also imply you to explicitly use arguments to options listed just above.



USAGE MADE OF STDIN/STDOUT/STDERR BY DAR
       Dar as any Unix command-line tool is created by a shell with a standard
       input (stdin), a standard output (stdout) and a standard error (stderr)
       to interact with the user.

       On the other side, Dar has a non-interactive output and a interactive
       output. The objective is to have in-band messages that show the current
       process steps (normal messages that goes to the non-interactive output)
       and out-of-band messages that can influence the global process or give
       diagnostic on the dar current operation fate (the interactive output and
       its associated input).

       At startup
                 in the very early phase, before dar has interpreted the
                 argc/argv arguments it has received from the shell (those
                 options and commands you pass to dar), both outputs are bounded
                 to stderr, because dar may be set to read an archive on stdin
                 (--sequential-read option or dar used with dar_slave) or to
                 output an archive on stdout ("-c -" option for example). A very
                 basic lookup in performed on the argv arguments list toward the
                 presence of a -Q option. Right after that, if no controlling
                 terminal is found (and unless -Q option has been found earlier)
                 a warning message is send to the non-interactive output (stderr
                 at that time) and all questions will assume negative answer.
                 Else, a new file-descriptor is open on this controlling
                 terminal and will be used to fetch the future answers from the
                 user when interaction will be needed, preserving stdin this
                 way.

       During command-line parsing
                 Once the command line option parsing has completed, if no
                 archive or backup is expected to be output on stdout (no -i and
                 -o options, as well as no "-c -" "-C -" or  "-+ -"
                 configuration requested, for example), the non-interactive-
                 output is changed from stderr to stdout, else it stays on
                 stderr.

       Running phase
                 Thus, during the archive or backup processing, any information
                 message goes to the non-interactive output (either stderr or
                 stdout as described above) while questions to the user to the
                 interactive output, that's to say on stderr. If a controlling
                 terminal has been found the user answer is fetch from this
                 terminal through the additional file-descriptor opened at
                 startup phase (stdin is kept either for dar_slave or
                 sequential-read mode or is not used at all).

       Exception phase
                 In case an exception (= an error) that could not be handled by
                 dar succeeds, both outputs are set back to stderr and the error
                 message embedded in the exception is displayed before dar
                 terminates.



EXIT CODES
       dar exits with the following code:

       0         Operation successful.

       1         Syntax error on command-line or DCF included file

       2         Error due to a hardware problem or a lack of memory.

       3         Detection of a condition that should never happen, and which is
                 considered as a bug of the application.

       4         Code issued when the user has aborted the program answering a
                 question from dar. This also happens when dar is not run from a
                 terminal (for example launched from crontab) and dar has a
                 question to the user. In that case, dar aborts the same way as
                 if the user pressed the escape key at the question prompt.

       5         is returned when an error concerning the treated data has been
                 detected. While saving, this is the case when a file could not
                 be opened or read. While restoring, it is the case when a file
                 could not be created or replaced. While comparing, it is the
                 case when a file in the archive does not match the one in the
                 filesystem. While testing, it is the case when a file is
                 corrupted in the archive.

       6         an error occurred while executing user command (given with -E
                 or -F option). Mainly because the creation of a new process is
                 not possible (process table is full) or the user command
                 returned an error code (exit status different from zero).

       7         an error has occurred when calling a libdar routine. This means
                 the caller (dar program), did not respect the specification of
                 the API (and this can be considered as a particular case of
                 bug).

       8         the version of dar used is based on finite length integers (it
                 has been compiled with the option --enable-mode=...). This code
                 is returned when an integer overflow occurred. use the full
                 version (based in the so called "infinint" class) to avoid this
                 error.

       9         this code indicates an unknown error. The exception caching
                 code to take care of new exceptions has probably been forgotten
                 to be update ... this is a minor bug you are welcome to report.

       10        you have tried to use a feature that has been disabled at
                 compilation time.

       11        some saved files have changed while dar was reading them, this
                 may lead the data saved for this file not correspond to a valid
                 state for this file. For example, if the beginning and the end
                 of the file have been modified at the same time (while dar is
                 reading it), only the change at the end will be saved (the
                 beginning has already been read), the resulting state of the
                 file as recorded by dar has never existed and may cause problem
                 to the application using it. This is known as a "dirty" file in
                 the archive.


SIGNALS
       If dar receives a signal (see kill(2) man page) it will take the default
       behavior which most of the time will abruptly abort the program, except
       for the following signals:

       SIGINT    This signal is generated by the terminal when hitting CTRL-C
                 (with the terminal's default settings), it can also be
                 generated with the kill command

       SIGTERM   This signal is generated by the system when changing of run-
                 level in particular when doing a shutdown, it can also be
                 generated with the kill command

       SIGHUP    Depending on the system, this signal may be sent before the
                 SIGTERM signal at shutdown time, it can also be generated with
                 the kill command

       SIGQUIT   This signal is generated by the terminal when hitting CTRL-\
                 (with the terminal's default settings), it can also be
                 generated with the kill command

       SIGUSR1   This signal can be generated by the kill command

       SIGUSR2   This signal can be generated by the kill command


       For those previous signals, two behavior exit. For SIGHUP, SIGINT,
       SIGQUIT, SIGTERM and SIGUSR1, a delayed termination is done: the backup
       or isolation operation is stopped, the catalogue is appended to the
       archive and the archive is properly completed with the correct terminator
       string, this way the generated archive is usable, and can be used as
       reference for a differential backup at a later time. Note that if an on-
       fly isolation had been asked, it will *not* be performed, and no user
       command will be launched even if dar has been configured for (-E option).
       For SIGUSR2 instead a fast termination is done: in case of backup or
       isolation, the archive is not completed at all, only memory and mutex are
       released properly.

       For both type of termination and other operations than backup or
       isolation, dar's behavior is the same: For restoration, all opened
       directories are closed and permissions are set back to their original
       values (if they had to be changed for restoration). For listing,
       comparison, testing, the program aborts immediately.

       Another point, when using one of the previous signals, dar will return
       with the exist status 4 meaning that the user has aborted the operation.
       Note that answering "no" to a question from dar may also lead dar to exit
       this way. last, If before the end of the program the same signal is
       received a second time, dar will abort immediately.


FILES
       $HOME/.darrc and /etc/darrc if present are read for configuration option.
       They share the same syntax as file given to -B option. If $HOME/.darrc is
       not present and only in that case, /etc/darrc is consulted. You can still
       launch /etc/darrc from .darrc using a statement like -B /etc/darrc.  None
       of these file need to be present, but if they are they are parsed AFTER
       any option on the command line and AFTER included files from the command
       line (files given to the -B option). NOTE: if $HOME is not defined
       $HOME/.darrc default to /.darrc (at the root of the filesystem).

       Else you can see conditional syntax below, and -N option above that leads
       dar to ignore the /etc/darrc and $HOME/.darrc files.


CONDITIONAL SYNTAX
       configuration files (-B option, $HOME/.darrc and /etc/darrc) usually
       contain a simple list of command-line arguments, split or not over
       several lines, and eventually mixed with comments (see -B option for
       more). But, you can also use make-like targets to ask for a particular
       set of commands to be used in certain conditions.

       A condition takes the form of reserved word immediately followed by a
       colon ':'. This word + colon must stand alone on its line, eventually
       with spaces or tabs beside it. The available conditions are:

       extract:            all options listed after this condition get used if
                           previously on command line or file the -x command has
                           been used

       create:             all options listed after this condition get used if
                           previously on command line or file (-B option) the -c
                           command has been used

       list: (or listing:) if -l command has been used

       test:               if -t command has been used

       diff:               if -d command has been used

       isolate:            if -C command has been used

       merge:              if -+ command has been used

       repair:             if -y command has been used

       reference:          if -A option has been used (except when -A is used
                           for the snapshot feature or in conjunction with -af)

       auxiliary:          if -@ option has been used

       all:                in any case

       default:            if no -c, -d, -x, -t, -C, -l  or -+ option has been
                           used at this point of the parsing.

       The condition stops when the next condition starts, or at End of File.
       The commands inserted before any condition are equivalent to those
       inserted after the "all:" condition. Remark : -c -d -x -t -C and -l are
       mutual exclusive, only one of them can be used while calling dar.

       Here is an example of conditional syntax

              create:
                # upon creation exclude the
                # following files from compression
              -Z "*.mp3" -Z "*.mpg"

              all:
              -b
              -p

              default:
              # this will get read if not
              # command has been set yet
              -V
              # thus by default dar shows its version

              all:
              -v
              # for any command we also ask to be verbose
              # this is added to the previous all: condition

       Last point, you may have several time the same condition (several all: )
       for example. They will be concatenated together.


USER TARGETS
       User targets are arbitrary words found on command line, that do not start
       by a dash ('-'). On most system they should be placed after command and
       options. They are collected from command-line first, then comes the
       parsing of command and optional arguments. Their use is to extend
       conditional syntax described just above by having a set of options
       activated by the user just adding a single word on command-line. Of
       course user targets must not be equal to one of the reserved words of the
       conditional syntax (extract, create, ... all, default). A valid target is
       a word (thus without space) composed of lowercase or uppercase letters
       (case is sensitive) with eventually digits, dashes '-' or underscores '_'
       characters.

       Let's see an example of use:

       first a DCF file named 'example.dcf' that will be given on command line:

              # normal set of files considered for backup

              create:
                -R /
                -P proc
                -P sys
                -P mnt
                -D

              # if the "home" user target is applied on command line the
              following command get added

              home:
                 -g home

              # if the "verbose" user target is used, we will have some more
              verbosity ...

              verbose:
                -v
                -vs

       Then we could run dar in the following ways:

       dar -c test -B example.dcf
                           in that case only the command in the "create:"
                           section of example.dcf would be used.

       dar -c test -B example.dcf verbose
                           here over the "create:" target the commands under the
                           "verbose:" target (-v and -vs) would be also used

       dar -c test -B example.dcf verbose home
                           last we use two user targets "verbose:" and "home:"
                           in addition the the "create:" target of the usual
                           conditional syntax.

       Note that if the last option *may* receive an argument, the first user
       target that follows it will be assumed an argument to that option. To
       avoid this, either change the order of options on command line for the
       last option been an option that never or always uses an argument (for
       example -b never has an argument while -s always has one). Or separate
       the options from the user targets by the -- word. And of course you can
       also use the explicit argument of the last option (see EXPLICIT OPTIONAL
       ARGUMENT section, above).

       Second point: It is allowed to have user targets inside a DCF file. Note
       however that targets are collected in a first phase, which leads some
       part of the file to be hidden (because the corresponding conditional
       syntax or user target is not present). Then, the remaining part of the
       file is then parsed and actions for each option found is taken. At that
       time, new user targets found are just recorded, but they do not modify
       the current DCF file layout, in particular, hidden part of the file stay
       hidden even if the corresponding user target is read in this same file.
       Next DCF parsing (which may be triggered by a second -B option on the
       command line, or by a -B option inside the current parsed DCF file) will
       thus be done with the additional targets found in that first DCF file, so
       in a way you may have user targets that activate other user targets, but
       they will be activated in starting the next -B file. Here follows an
       examples of two DCF files, first.dcf and second.dcf:

              # cat first.dcf
                target3:
                  -K toto

                target1:
                  target2
                  -B second.dcf
                  target3

                target2:
                  #never reached
                  -s 10k

              # cat second.dcf
                target2:
                  -v
                target3:
                  -b

       In that example, target1 activates both target2 and target3, but at the
       time of the parsing of first.dcf, neither target2 nor target3 were yet
       activated thus '-K toto' and '-s 10k' will never be given to dar (unless
       activated beside target1 before first.dcf get parsed), however when comes
       the time to parse second.dcf, target2 *and* target3 are activated, thus
       both '-v' and '-b' will be passed to dar, even if 'target3' is located
       after '-B second.dcf' in the file first.dcf



ENVIRONMENT
       DAR_DCF_PATH
                 if set, dar looks for Dar Configuration File (DCF files, see -B
                 option) that do not have an fully qualified path in the
                 directories listed in DAR_DCF_PATH environment variable. This
                 variable receives a colon (:) separated list of paths and look
                 in each of them in turn, up to the first file found under the
                 requested name.

       DAR_DUC_PATH
                 if set, dar looks for Dar User Command (DUC files, see -E, -F,
                 -˜, -= options) that do not have a fully qualified path in the
                 directories listed in DAR_DUC_PATH. This variable receives a
                 colon (:) separated list of paths and looks in each of them in
                 turn, up to the first file found under the requested name.

       DAR_SFTP_KNOWNHOSTS_FILE
                 if set, dar will not use the $HOME/.ssh/known_hosts file to
                 check sftp remote server authenticity but the file given as
                 value for this environment variable. Note that setting this
                 variable to an empty string completely disable host validation,
                 which is not recommended!!!

       DAR_SFTP_PUBLIC_KEYFILE
                 by default dar will fetch the public key file in
                 $HOME/.ssh/id_rsa.pub file. If you use the former id_dsa.pub or
                 more recent key types you need to set this environment variable
                 to point to the appropriated filename

       DAR_SFTP_PRIVATE_KEYFILE
                 by default dar will fetch the public key file in
                 $HOME/.ssh/id_rsa file. If you use the former id_dsa.pub or
                 more recent key types you need to set this environment variable
                 to point to the appropriated filename

       DAR_IGNORED_AS_SYMLINK
                 receive a colon separated list of absolute paths, which if they
                 are symlinks are not saved as symlink but as the inode they
                 point to. For more details see the --ignored-as-symlink option
                 above.

       GNUPGHOME for asymmetric encryption and signature, the keyring used is
                 $HOME/.gnupg by default. You can change this default by setting
                 GNUPGHOME to the directory containing the keyring. For example,
                 if you are running dar as root and want to use your
                 unprivileged account keyring use the following:

                 export GNUPGHOME=˜myaccount/.gnupg

                 dar -K gnupg:...@...,...@... --sign:...@... etc.

       DAR_SECURED_MEMORY_SIZE_BYTES
                 let the user specify the amount of secured dar/libdar should
                 allocate. The provided value must be integer number defining
                 the secured memory size in byte. By default 262144 bytes are
                 allocated.

CAPABILITIES
       dar fully supports the cap_chown capability, but by design, dar only uses
       this capability to restore files at their original ownership. Dar will
       thus not use this capability to access files and directories the caller
       would normally not have access to. In other words, it should be ok to set
       the cap_chown capability to the dar executable (setcap cap_chown+p dar).
       Calling dar from a process having the cap_chown in the inheritable set
       would lead the system to grant this capability to the dar process while
       other users would not be granted this capability and would not be able to
       modify ownership of files at restoration time. This can be used for the
       system account that has the role of restoring data upon user requests,
       without giving root privilege to this restoration process.


EXAMPLES
       You can find some more examples of use in the tutorial, mini-howto,
       sample scripts, and other related documentation. All these are available
       in dar's source package, and are also installed beside dar in the
       <--prefix>/share/dar directory. This documentation is also available on-
       line at http://dar.linux.free.fr/doc/index.html


SEE ALSO
       dar_xform(1), dar_slave(1), dar_manager(1), dar_cp(1), dar_split(1),
       TUTORIAL and NOTES included in the source package and also available at
       http://dar.linux.free.fr/doc/index.html


KNOWN LIMITATIONS
       dar saves and restores atime, mtime, birthtime but cannot restore ctime
       (last inode change), there does not seems to be a standard call to do
       that under UNIX. An up to date list of known limitation is at
       http://dar.linux.free.fr/doc/Limitations.html


KNOWN BUGS
       https://github.com/Edrusb/DAR/issues


AUTHOR
       http://dar.linux.free.fr/
       Denis Corbin
       France
       Europe

3rd Berkeley Distribution         May 1st, 2026                           DAR(1)