Provided by: xfsdump_3.0.6_amd64 bug

NAME

       xfsrestore - XFS filesystem incremental restore utility

SYNOPSIS

       xfsrestore -h
       xfsrestore [ options ] -f source [ -f source ... ] dest
       xfsrestore [ options ] - dest
       xfsrestore -I [ subopt=value ... ]

DESCRIPTION

       xfsrestore restores filesystems from dumps produced by xfsdump(8).  Two modes of operation
       are available: simple and cumulative.

       The default is simple mode.  xfsrestore populates  the  specified  destination  directory,
       dest, with the files contained in the dump media.

       The  -r  option  specifies  the cumulative mode.  Successive invocations of xfsrestore are
       used to apply a chronologically ordered sequence of delta dumps to a base (level 0)  dump.
       The contents of the filesystem at the time each dump was produced is reproduced.  This can
       involve adding, deleting, renaming, linking, and unlinking files and directories.

       A delta dump is defined as either an incremental dump (xfsdump -l option with level  >  0)
       or  a resumed dump (xfsdump -R option).  The deltas must be applied in the order they were
       produced.  Each delta applied must have been produced with the previously applied delta as
       its base.

       xfsrestore  keeps state information in the xfsrestorehousekeepingdir, to inform subsequent
       invocations when used in cumulative mode, or in the event a restore  is  interrupted.   To
       ensure  that  the  state  information can be processed, a compatible version of xfsrestore
       must be used for each subsequent invocation. Additionally, each invocation must run  on  a
       system of the same endianness and page size.

       The options to xfsrestore are:

       -a housekeeping
            Each  invocation  of xfsrestore creates a directory called xfsrestorehousekeepingdir.
            This directory is normally created directly under the dest directory.  The -a  option
            allows  the  operator  to  specify  an  alternate  directory,  housekeeping, in which
            xfsrestore  creates  the  xfsrestorehousekeepingdir  directory.   When  performing  a
            cumulative  (-r  option)  restore  or resuming (-R option) a restore, each successive
            invocation must specify the same alternate directory.

       -b blocksize
            Specifies the blocksize, in bytes, to be used for the restore.  For other drives such
            as  DAT or 8 mm , the same blocksize used for the xfsdump operation must be specified
            to restore the tape.  The default block size is 1Mb.

       -c progname
            Use the specified program to alert the operator when a media change is required.  The
            alert  program  is  typically  a  script to send a mail or flash a window to draw the
            operator's attention.

       -e   Prevents xfsrestore from overwriting existing files in the dest directory.

       -f source [ -f source ... ]
            Specifies a source of the dump to be restored.  This can be the pathname of a  device
            (such  as  a  tape  drive), a regular file or a remote tape drive (see rmt(8)).  This
            option must be omitted if the standard input option (a  lone  -  preceding  the  dest
            specification) is specified.

       -i   Selects  interactive operation.  Once the on-media directory hierarchy has been read,
            an interactive dialogue is begun.  The operator uses  a  small  set  of  commands  to
            peruse  the  directory  hierarchy,  selecting files and subtrees for extraction.  The
            available commands are given below.  Initially nothing is selected, except for  those
            subtrees specified with -s command line options.

            ls [arg]       List  the entries in the current directory or the specified directory,
                           or the specified non-directory file entry.  Both the entry's  original
                           inode number and name are displayed.  Entries that are directories are
                           appended with a `/'.  Entries that have been selected  for  extraction
                           are prepended with a `*'.

            cd [arg]       Change  the current working directory to the specified argument, or to
                           the filesystem root directory if no argument is specified.

            pwd            Print  the  pathname  of  the  current  directory,  relative  to   the
                           filesystem root.

            add [arg]      The  current  directory  or  specified  file  or  directory within the
                           current directory is selected  for  extraction.   If  a  directory  is
                           specified, then it and all its descendents are selected.  Entries that
                           are selected for extraction are prepended with a  `*'  when  they  are
                           listed by ls.

            delete [arg]   The  current  directory  or  specified  file  or  directory within the
                           current directory is deselected for extraction.   If  a  directory  is
                           specified,  then  it and all its descendents are deselected.  The most
                           expedient way to extract most of the files  from  a  directory  is  to
                           select  the  directory  and  then  deselect  those  files that are not
                           needed.

            extract        Ends the interactive dialogue, and causes all selected subtrees to  be
                           restored.

            quit           xfsrestore  ends  the interactive dialogue and immediately exits, even
                           if there are files or subtrees selected for extraction.

            help           List a summary of the available commands.

       -m   Use the minimal tape protocol.  This option  cannot  be  used  without  specifying  a
            blocksize to be used (see -b option above).

       -n file
            Allows  xfsrestore  to  restore only files newer than file.  The modification time of
            file (i.e.,  as  displayed  with  the  ls  -l  command)  is  compared  to  the  inode
            modification  time  of  each file on the source media (i.e., as displayed with the ls
            -lc command).  A file is restored from media only if its inode modification  time  is
            greater than or equal to the modification time of file.

       -o   Restore  file and directory owner/group even if not root.  When run with an effective
            user id of root, xfsrestore restores owner and group  of  each  file  and  directory.
            When  run  with  any  other  effective  user  id  it  does not, unless this option is
            specified.

       -p interval
            Causes progress reports to be printed at intervals of interval seconds.  The interval
            value  is  approximate,  xfsrestore  will  delay  progress  reports  to  avoid  undue
            processing overhead.

       -q   Source tape drive is a QIC tape.  QIC tapes only use a 512 byte blocksize, for  which
            xfsrestore must make special allowances.

       -r   Selects  the cumulative mode of operation. The -a and destination options must be the
            same for each invocation.

       -s subtree
            Specifies a subtree to restore.  Any number of -s options are allowed.   The  restore
            is  constrained to the union of all subtrees specified.  Each subtree is specified as
            a pathname relative to the restore dest.  If a directory is specified, the  directory
            and all files beneath that directory are restored.

       -t   Displays  the  contents  of  the  dump,  but  does  not create or modify any files or
            directories.  It may be desirable to set the verbosity level  to  silent  when  using
            this option.

       -v verbosity
       -v subsys=verbosity[,subsys=verbosity,...]
            Specifies  the  level  of detail used for messages displayed during the course of the
            restore. The verbosity argument can be passed as either a string or  an  integer.  If
            passed  as  a string the following values may be used: silent, verbose, trace, debug,
            or nitty.  If passed as an integer, values from 0-5  may  be  used.  The  values  0-4
            correspond  to  the  strings  already listed. The value 5 can be used to produce even
            more verbose debug output.

            The  first  form  of  this  option  activates  message  logging  across  all  restore
            subsystems.  The  second  form allows the message logging level to be controlled on a
            per-subsystem basis. The two forms can be  combined  (see  the  example  below).  The
            argument  subsys  can  take one of the following values: general, proc, drive, media,
            inventory, and tree.

            For  example,  to  restore  the  root  filesystem  with  tracing  activated  for  all
            subsystems:

                 # xfsrestore -v trace -f /dev/tape /

            To enable debug-level tracing for drive and media operations:

                 # xfsrestore -v drive=debug,media=debug -f /dev/tape /

            To  enable  tracing  for all subsystems, and debug level tracing for drive operations
            only:

                 # xfsrestore -v trace,drive=debug -f /dev/tape /

       -A   Do not restore extended file attributes.  When restoring a filesystem managed  within
            a  DMF  environment  this option should not be used. DMF stores file migration status
            within extended attributes associated with each file. If  these  attributes  are  not
            preserved when the filesystem is restored, files that had been in migrated state will
            not be recallable by DMF. Note that dumping  of  extended  file  attributes  is  also
            optional.

       -B   Change  the  ownership and permissions of the destination directory to match those of
            the root directory of the dump.

       -D   Restore DMAPI (Data Management Application Programming Interface) event settings.  If
            the  restored  filesystem  will  be  managed  within  the same DMF environment as the
            original dump it is essential that the -D option be used. Otherwise it is not usually
            desirable to restore these settings.

       -E   Prevents xfsrestore from overwriting newer versions of files.  The inode modification
            time of the on-media file is compared to the inode modification time of corresponding
            file  in  the  dest  directory.  The file is restored only if the on-media version is
            newer than the version in the dest directory.  The inode modification time of a  file
            can be displayed with the ls -lc command.

       -F   Inhibit interactive operator prompts.  This option inhibits xfsrestore from prompting
            the operator for verification of the selected dump as the  restore  target  and  from
            prompting for any media change.

       -I   Causes  the  xfsdump  inventory to be displayed (no restore is performed).  Each time
            xfsdump is used, an online inventory in /var/lib/xfsdump/inventory is updated.   This
            is  used to determine the base for incremental dumps.  It is also useful for manually
            identifying a dump session to be restored (see the -L and -S options).  Suboptions to
            filter the inventory display are described later.

       -J   Inhibits inventory update when on-media session inventory encountered during restore.
            xfsrestore opportunistically updates the online inventory when it encounters  an  on-
            media  session  inventory, but only if run with an effective user id of root and only
            if this option is not given.

       -L session_label
            Specifies the label of the dump session to be restored.  The source media is searched
            for  this label.  It is any arbitrary string up to 255 characters long.  The label of
            the desired dump session can be copied from the inventory display produced by the  -I
            option.

       -O options_file
            Insert  the options contained in options_file into the beginning of the command line.
            The options are specified just as they would appear if typed into the  command  line.
            In  addition,  newline  characters  (\n)  can be used as whitespace.  The options are
            placed before all options actually given on the command line, just after the  command
            name.   Only  one  -O option can be used.  Recursive use is ignored.  The destination
            directory cannot be specified in options_file.

       -Q   Force completion of an interrupted restore session.  This option is required to  work
            around  one  specific pathological scenario.  When restoring a dump session which was
            interrupted due to an EOM condition and no online  session  inventory  is  available,
            xfsrestore  cannot  know  when  the  restore  of  that dump session is complete.  The
            operator is forced to interrupt the restore session.  In that case, if  the  operator
            tries  to subsequently apply a resumed dump (using the -r option), xfsrestore refuses
            to do so.  The operator must tell xfsrestore to consider the base restore complete by
            using this option when applying the resumed dump.

       -R   Resume  a  previously interrupted restore.  xfsrestore can be interrupted at any time
            by pressing the terminal interrupt character  (see  stty(1)).   Use  this  option  to
            resume the restore.  The -a and destination options must be the same.

       -S session_id
            Specifies  the  session UUID of the dump session to be restored.  The source media is
            searched for this UUID.  The UUID of the desired dump session can be copied from  the
            inventory display produced by the -I option.

       -T   Inhibits  interactive  dialogue  timeouts.  xfsrestore prompts the operator for media
            changes.  This dialogue normally times out if no response is supplied.   This  option
            prevents the timeout.

       -X subtree
            Specifies  a  subtree to exclude.  This is the converse of the -s option.  Any number
            of -X options are allowed.  Each subtree is specified as a pathname relative  to  the
            restore  dest.  If a directory is specified, the directory and all files beneath that
            directory are excluded.

       -Y io_ring_length
            Specify I/O buffer ring length.  xfsrestore uses a ring of input buffers  to  achieve
            maximum  throughput  when  restoring from tape drives.  The default ring length is 3.
            However, this is only supported when running multi-threaded which has not  been  done
            for Linux yet - making this option benign.

       -    A  lone  -  causes  the  standard  input  to  be read as the source of the dump to be
            restored.  Standard input can be a pipe from another utility (such as xfsdump(8))  or
            a redirected file.  This option cannot be used with the -f option.  The - must follow
            all other options, and precede the dest specification.

       The dumped filesystem is restored into the dest directory.  There is no default; the  dest
       must be specified.

NOTES

   Cumulative Restoration
       A base (level 0) dump and an ordered set of delta dumps can be sequentially restored, each
       on top of the previous, to reproduce the contents of the original filesystem at  the  time
       the  last delta was produced.  The operator invokes xfsrestore once for each dump.  The -r
       option must be specified.  The dest directory must be the same for all invocations.   Each
       invocation leaves a directory named xfsrestorehousekeeping in the dest directory (however,
       see the -a option above).  This directory contains the  state  information  that  must  be
       communicated  between invocations.  The operator must remove this directory after the last
       delta has been applied.

       xfsrestore also generates a directory named orphanage in the dest  directory.   xfsrestore
       removes  this  directory  after completing a simple restore.  However, if orphanage is not
       empty, it is not removed.  This can happen if files present on  the  dump  media  are  not
       referenced  by  any of the restored directories.  The orphanage has an entry for each such
       file.  The entry name is  the  file's  original  inode  number,  a  ".",  and  the  file's
       generation count modulo 4096 (only the lower 12 bits of the generation count are used).

       xfsrestore   does   not   remove  the  orphanage  after  cumulative  restores.   Like  the
       xfsrestorehousekeeping directory, the operator must remove it  after  applying  all  delta
       dumps.

   Media Management
       A  dump  consists  of  one  or more media files contained on one or more media objects.  A
       media file contains all or a portion of the filesystem dump.  Large filesystems are broken
       up  into multiple media files to minimize the impact of media dropouts, and to accommodate
       media object boundaries (end-of-media).

       A media object is any storage medium: a tape cartridge, a remote tape device (see rmt(8)),
       a  regular  file,  or  the  standard input (currently other removable media drives are not
       supported).  Tape cartridges  can  contain  multiple  media  files,  which  are  typically
       separated  by  (in tape parlance) file marks.  If a dump spans multiple media objects, the
       restore must begin with the media object containing the  first  media  file  dumped.   The
       operator is prompted when the next media object is needed.

       Media objects can contain more than one dump.  The operator can select the desired dump by
       specifying the dump label (-L option), or by specifying the dump  UUID  (-S  option).   If
       neither  is specified, xfsrestore scans the entire media object, prompting the operator as
       each dump session is encountered.

       The inventory display (-I option) is useful for identifying the  media  objects  required.
       It is also useful for identifying a dump session.  The session UUID can be copied from the
       inventory display to the -S option argument to unambiguously identify a dump session to be
       restored.

       Dumps  placed  in regular files or the standard output do not span multiple media objects,
       nor do they contain multiple dumps.

   Inventory
       Each dump session updates  an  inventory  database  in  /var/lib/xfsdump/inventory.   This
       database  can  be  displayed  by invoking xfsrestore with the -I option.  The display uses
       tabbed  indentation  to  present  the  inventory  hierarchically.   The  first  level   is
       filesystem.  The second level is session.  The third level is media stream (currently only
       one stream is supported).  The fourth level lists the media files  sequentially  composing
       the stream.

       The following suboptions are available to filter the display.

       -I depth=n
            (where  n  is  1, 2, or 3) limits the hierarchical depth of the display. When n is 1,
            only the filesystem information from the inventory is displayed. When n  is  2,  only
            filesystem  and  session  information  are  displayed.  When n is 3, only filesystem,
            session and stream information are displayed.

       -I level=n
            (where n is the dump level) limits the display  to  dumps  of  that  particular  dump
            level.

       The display may be restricted to media files contained in a specific media object.

       -I mobjid=value
            (where value is a media ID) specifies the media object by its media ID.

       -I mobjlabel=value
            (where value is a media label) specifies the media object by its media label.

       Similarly, the display can be restricted to a specific filesystem.

       -I mnt=mount_point
            (that  is, [hostname:]pathname), identifies the filesystem by mountpoint.  Specifying
            the hostname is optional, but may be useful in a  clustered  environment  where  more
            than one host can be responsible for dumping a filesystem.

       -I fsid=filesystem_id
            identifies the filesystem by filesystem ID.

       -I dev=device_pathname
            (that  is,  [hostname:]device_pathname) identifies the filesystem by device.  As with
            the mnt filter, specifying the hostname is optional.

       More than one of these suboptions, separated by commas, may be specified at the same  time
       to  limit  the display of the inventory to those dumps of interest.  However, at most four
       suboptions can be specified at once: one to constrain the display hierarchy depth, one  to
       constrain  the  dump  level,  one  to constrain the media object, and one to constrain the
       filesystem.

       For example, -I depth=1,mobjlabel="tape  1",mnt=host1:/test_mnt  would  display  only  the
       filesystem   information   (depth=1)   for   those   filesystems   that  were  mounted  on
       host1:/test_mnt at the time of the dump, and only those filesystems dumped  to  the  media
       object labeled "tape 1".

       Dump records may be removed (pruned) from the inventory using the xfsinvutil program.

       An  additional  media  file  is  placed  at  the end of each dump stream.  This media file
       contains the inventory information for the current dump session.  If the online  inventory
       files  in /var/lib/xfsdump/inventory are missing information for the current dump session,
       then the inventory information in the media file is automatically added to  the  files  in
       /var/lib/xfsdump/inventory.  If you wish to incorporate the inventory information from the
       media file without restoring any data, you may do so using the -t option:

            # xfsrestore -t -f /dev/tape

       This is useful to rebuild the inventory database if it is ever  lost  or  corrupted.   The
       only caveat is that xfsrestore needs to read through the entire dump in order to reach the
       inventory media file.  This could become time consuming for dump sessions with large media
       files.

   Media Errors
       xfsdump  is  tolerant  of  media errors, but cannot do error correction.  If a media error
       occurs in the body of a media file, the filesystem file represented at that point is lost.
       The  bad  portion  of  the  media  is  skipped,  and  the  restoration resumes at the next
       filesystem file after the bad portion of the media.

       If a media error occurs in the beginning of the media file, the entire media file is lost.
       For  this  reason,  large  dumps are broken into a number of reasonably sized media files.
       The restore resumes with the next media file.

   Quotas
       When xfsdump dumps a filesystem with user quotas, it creates a file in  the  root  of  the
       dump called xfsdump_quotas.  xfsrestore can restore this file like any other file included
       in the dump.  This file can be  processed  by  the  restore  command  of  xfs_quota(8)  to
       reactivate  the  quotas.   However, the xfsdump_quotas file contains information which may
       first require modification; specifically the filesystem name and the user ids.  If you are
       restoring  the  quotas  for  the same users on the same filesystem from which the dump was
       taken, then no modification will be necessary.  However, if you are restoring the dump  to
       a different filesystem, you will need to:

       - ensure the new filesystem is mounted with the quota option

       - modify the xfsdump_quotas file to contain the new filesystem name

       - ensure the uids in the xfsdump_quotas file are correct

       Once  the quota information has been verified, the restore command of xfs_quota (8) can be
       used to apply the quota limits to the filesystem.

       Group and project quotas are handled in a similar fashion and will be  restored  in  files
       called xfsdump_quotas_group and xfsdump_quotas_proj, respectively.

EXAMPLES

       To restore the root filesystem from a locally mounted tape:

            # xfsrestore -f /dev/tape /

       To restore from a remote tape, specifying the dump session id:

            # xfsrestore -L session_1 -f otherhost:/dev/tape /new

       To restore the contents a of a dump to another subdirectory:

            # xfsrestore -f /dev/tape /newdir

       To copy the contents of a filesystem to another directory (see xfsdump(8)):

            # xfsdump -J - / | xfsrestore -J - /new

FILES

       /var/lib/xfsdump/inventory
                                dump inventory database

SEE ALSO

       rmt(8), xfsdump(8), xfsinvutil(8), xfs_quota(8), attr_set(2).

DIAGNOSTICS

       The  exit code is 0 on normal completion, and non-zero if an error occurred or the restore
       was terminated by the operator.

       For all verbosity levels greater than 0 (silent) the final line of the  output  shows  the
       exit status of the restore. It is of the form:

            xfsdump: Restore Status: code

       Where  code  takes  one  of  the  following values: SUCCESS (normal completion), INTERRUPT
       (interrupted), QUIT (media no  longer  usable),  INCOMPLETE  (restore  incomplete),  FAULT
       (software error), and ERROR (resource error).  Every attempt will be made to keep both the
       syntax and the semantics of this log message unchanged in future versions  of  xfsrestore.
       However,  it  may  be  necessary  to  refine  or  expand  the  set of exit codes, or their
       interpretation at some point in the future.

BUGS

       Pathnames of restored non-directory files (relative to the dest directory)  must  be  1023
       characters  (MAXPATHLEN)  or  less.   Longer pathnames are discarded and a warning message
       displayed.

       There is no verify option to xfsrestore.  This would  allow  the  operator  to  compare  a
       filesystem dump to an existing filesystem, without actually doing a restore.

       The interactive commands (-i option) do not understand regular expressions.

       When  the  minimal  rmt  option  is  specified,  xfsrestore  applies it to all remote tape
       sources. The same blocksize (specified by the -b option) is  used  for  all  these  remote
       drives.

       xfsrestore uses the alert program only when a media change is required.

       Cumulative  mode (-r option) requires that the operator invoke xfsrestore for the base and
       for each delta to be applied in sequence to the base.  It would be  better  to  allow  the
       operator  to  identify the last delta in the sequence of interest, and let xfsrestore work
       backwards from that delta to identify and apply the preceding deltas and base dump, all in
       one invocation.

                                                                                    xfsrestore(8)