xfsrestore(8) manual page
Table of Contents
xfsrestore - XFS filesystem incremental restore utility
xfsrestore -h
xfsrestore [ options ] -f source [ -f source ... ] dest
xfsrestore [ options ] - dest
xfsrestore -I [ subopt=value ... ]
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.
- -K
- Force
xfsrestore to use dump format 2 generation numbers. Normally the need for
this is determined automatically, but this option is required on the first
xfsrestore invocation in the rare case that a cumulative restore begins
with a format 3 (or newer) dump and will be followed by a format 2 dump.
- -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 not currently enabled
on 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.
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.
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.
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.
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.
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.
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
- /var/lib/xfsdump/inventory
- dump inventory database
rmt(8)
,
xfsdump(8)
, xfsinvutil(8)
, xfs_quota(8)
, attr_set(2)
.
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.
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.
Table of Contents