xfsdump
Section: Maintenance Commands (8)
Page Index
NAME
xfsdump - XFS filesystem incremental dump utility
SYNOPSIS
xfsdump -h
xfsdump [ options ] -f dest [ -f dest ... ] filesystem
xfsdump [ options ] - filesystem
xfsdump -I [ subopt=value ... ]
DESCRIPTION
xfsdump
backs up files and their attributes in a filesystem.
The files are dumped to
storage media,
a regular file,
or standard output.
Options allow the operator to have all files dumped,
just files that have changed since a previous dump,
or just files contained in a list of pathnames.
The
xfsrestore(8)
utility re-populates a filesystem with the contents of the dump.
Each invocation of
xfsdump
dumps just one filesystem.
That invocation is termed a dump session.
The dump session splits the filesystem into one or more
dump streams, one per destination.
The split is done in filesystem inode number (ino) order,
at boundaries selected to equalize the size of each stream.
Furthermore, the breakpoints between streams may be in the
middle of very large files (at extent boundaries) if necessary
to achieve reasonable stream size equalization.
Each dump stream can span several media objects,
and a single media object can contain several dump streams.
The typical media object is a tape cartridge.
The media object records the dump stream as one or more media files.
A media file is a self-contained partial dump, intended to minimize
the impact of media dropouts on the entire dump stream at the expense
of increasing the time required to complete the dump. By default only
one media file is written unless a media file size is specified using
the
-d
option. Other techniques, such as making a second copy of the dump
image, provide more protection against media failures than multiple
media files will.
xfsdump
maintains an online dump inventory in /var/lib/xfsdump/inventory.
The
-I
option displays the inventory contents hierarchically.
The levels of the hierarchy are:
filesystem,
dump session,
stream, and
media file.
The options to
xfsdump
are:
- -a
-
Specifies that files for which the Data Migration
Facility (DMF) has complete offline copies (dual-state files)
be treated as if they were offline (OFL).
This means that the file data will not be dumped by
xfsdump, resulting in a smaller dump file.
If the file is later restored the file data is still accessible through DMF.
If both '-a option' and '-z option' are specified, the '-a option'
takes precedence (see '-z option' below).
- -b blocksize
-
Specifies the blocksize, in bytes, to be used for the dump.
The same blocksize must be specified to restore the tape.
If the -m option is not used, then -b does not need
to be specified. Instead, a default blocksize of 1Mb will be used.
- -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.
- -d filesize
-
Specifies the size, in megabytes, of dump media files. If not specified,
xfsdump will dump data to tape using a single media file per media object.
The specified media file size may need to be adjusted if, for example,
xfsdump cannot fit a media file onto a single tape.
- -e
-
Allow files to be excluded from the dump. This will cause xfsdump to
skip files which have the "no dump" file attribute set. See the
"Excluding individual files" section below for details on setting
this file attribute.
- -f dest [ -f dest ... ]
-
Specifies a dump destination.
A dump destination 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 output option
(a lone
-
preceding the source filesystem specification)
is specified.
- -l level
-
Specifies a dump level of 0 to 9.
The dump level determines the base dump to which this
dump is relative.
The base dump is the most recent dump at a lesser level.
A level 0 dump is absolute - all files are dumped.
A dump level where 1 <= level <= 9 is referred to as an incremental dump.
Only files that have been changed since the base dump are dumped.
Subtree dumps
(see the
-s
option below)
cannot be used as the
base for incremental dumps.
- -m
-
Use the minimal tape protocol for non-scsi tape destinations or
remote tape destinations which are not scsi Linux tape drives
nor IRIX tape drives.
This option cannot be used without specifying a blocksize to be used (see
-b
option above).
- -o
-
Overwrite the tape. With this option,
xfsdump
does not read the tape first to check the contents. This option may
be used if
xfsdump
is unable to determine the block size of a tape .
- -p interval
-
Causes progress reports to be printed at the specified interval.
interval
is given in seconds.
The progress report indicates
how many files have been dumped,
the total number of files to dump,
the percentage of data dumped,
and
the elapsed time.
- -q
-
Destination tape drive is a QIC tape. QIC tapes only use a 512 byte
blocksize, for which xfsdump must make special allowances.
- -s pathname [ -s pathname ... ]
-
Restricts the dump to files contained in the specified pathnames
(subtrees).
A pathname must be relative to the mount point of the filesystem.
For example, if a filesystem is mounted at /d2, the pathname
argument for the directory /d2/users is ``users''.
A pathname can be a file or a directory; if it is a directory,
the entire hierarchy of files and subdirectories rooted at that directory
is dumped.
Subtree dumps cannot be used as the base for incremental dumps
(see the
-l
option above).
- -t file
-
Sets the dump time to the modification time of file rather than
using the current time.
xfsdump
uses the dump time to determine what files need to be backed up during
an incremental dump. This option should be used when dumping snapshots
so that the dump time matches the time the snapshot was taken. Otherwise
files modified after a snapshot is taken may be skipped in the next
incremental dump.
- -v verbosity
-
- -v subsys=verbosity[,subsys=verbosity,...]
-
Specifies the level of detail used for messages displayed during the course
of the dump. 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 dump 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, inomap and excluded_files.
For example, to dump the root filesystem with tracing activated for
all subsystems:
# xfsdump -v trace -f /dev/tape /
To enable debug-level tracing for drive and media operations:
# xfsdump -v drive=debug,media=debug -f /dev/tape /
To enable tracing for all subsystems, and debug level tracing for drive operations
only:
# xfsdump -v trace,drive=debug -f /dev/tape /
To list files that will be excluded from the dump:
# xfsdump -e -v excluded_files=debug -f /dev/tape /
- -z size
-
Specifies the maximum size, in kilobytes, of files to be included in the
dump. Files over this size, will be excluded from the dump, except for
DMF dual-state files when '-a option' is specified (see '-a option' above).
When specified, '-a option' takes precedence over '-z option'. The size
is an estimate based on the number of disk blocks actually used by the
file, and so does not include holes. In other words, size refers to
the amount of space the file would take in the resulting dump. On an
interactive restore, the skipped file is visible with xfsrestore's 'ls'
and while you can use the 'add' and 'extract' commands, nothing will be
restored.
- -A
-
Do not dump extended file attributes. When dumping 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 dumps containing extended file attributes cannot be restored
with older versions of xfsrestore(8).
- -B session_id
-
Specifies the ID
of the dump session upon which this dump session is to be based.
If this option is specified, the
-l
(level)
and
-R
(resume) options
are not allowed.
Instead,
xfsdump
determines if the current dump session should be incremental
and/or resumed,
by looking at the base session's level and interrupted attributes.
If the base session was interrupted,
the current dump session is a resumption of that base at the same level.
Otherwise, the current dump session is an incremental dump with a level
one greater than that of the base session.
This option allows incremental
and resumed dumps to be based on any previous dump,
rather than just the most recent.
- -D
-
Controls which directories are backed up during an incremental dump. By
default unchanged directories are dumped if files or directories beneath
them have changed. This results in a self-contained dump -- if a base dump
is lost, or you know the file(s) you wish to restore is in an incremental
dump, you can restore just that dump without loading the base dump(s)
first. However, this method requires a potentially expensive traversal
through the filesystem.
When
-D
is specified, unchanged directories are not dumped.
This results in a faster dump, but files will end up in the
xfsrestore(8)
orphanage
directory unless the base dump(s) is loaded first.
- -E
-
Pre-erase media.
If this option is specified, media is erased prior to use.
The operator is prompted for confirmation,
unless the
-F
option is also specified.
- -F
-
Don't prompt the operator.
When
xfsdump
encounters a media object containing non-xfsdump data,
xfsdump
normally asks the operator for permission to overwrite.
With this option the overwrite is performed, no questions asked.
When
xfsdump
encounters end-of-media during a dump,
xfsdump
normally asks the operator if another media object will be provided.
With this option the dump is instead interrupted.
- -I
-
Displays the xfsdump inventory
(no dump is performed).
xfsdump
records each dump session in an online inventory
in /var/lib/xfsdump/inventory.
xfsdump
uses this inventory to determine the base for incremental dumps.
It is also useful for manually identifying a dump session to be restored.
Suboptions to filter the inventory display are described later.
- -J
-
Inhibits the normal update of the inventory.
This is useful when the media being dumped to
will be discarded or overwritten.
- -K
-
Generate a format 2 dump instead of the current format. This is useful
if the dump will be restored on a system with an older
xfsrestore
which does not understand the current dump format. Use of this option
is otherwise not recommended.
- -L session_label
-
Specifies a label for the dump session.
It can be any arbitrary string up to 255 characters long.
- -M label [ -M label ... ]
-
Specifies a label
for the first media object (for example, tape cartridge)
written on the corresponding destination during the session.
It can be any arbitrary string up to 255 characters long.
Multiple media object labels can be specified,
one for each destination.
- -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 source filesystem cannot be specified in options_file.
- -R
-
Resumes a previously interrupted dump session.
If the most recent dump at this dump's level (-l option)
was interrupted,
this dump contains only files not in the interrupted dump
and consistent with the incremental level.
However,
files contained in the interrupted dump that have been subsequently
modified are re-dumped.
- -T
-
Inhibits interactive dialogue timeouts.
When the
-F
option is not specified,
xfsdump
prompts the operator for labels and media changes.
Each dialogue normally times out if no response is supplied.
This option prevents the timeout.
- -Y length
-
Specify I/O buffer ring length.
xfsdump
uses a ring of output buffers to achieve maximum throughput
when dumping to 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 dump stream to be sent to
the standard output,
where it can be piped to another utility such as xfsrestore(8)
or redirected to a file.
This option cannot be used with the
-f
option.
The
-
must follow all other options and precede the filesystem specification.
The filesystem, filesystem, can be specified either as a mount point or as
a special device file (for example, /dev/dsk/dks0d1s0).
The filesystem must be mounted to be dumped.
NOTES
Dump Interruption
A dump can be interrupted at any time and later resumed.
To interrupt, type control-C
(or the current terminal interrupt character).
The operator is prompted to select one of several operations,
including dump interruption.
After the operator selects dump interruption,
the dump continues until a convenient break point is
encountered (typically the end of the current file).
Very large files are broken into smaller subfiles,
so the wait for the end of the current file is brief.
Dump Resumption
A previously interrupted dump can be resumed
by specifying the
-R
option.
If the most recent dump at the specified level was interrupted,
the new dump does not include files already dumped,
unless they have changed since the interrupted dump.
Media Management
A single media object can contain many dump streams.
Conversely, a single dump stream can span multiple media objects.
If a dump stream is sent to a media object already containing one or more dumps,
xfsdump
appends the new dump stream after the last dump stream.
Media files are never overwritten.
If end-of-media is encountered during the course of a dump,
the operator is prompted to insert a new media object
into the drive.
The dump stream continuation is appended after the last media file
on the new media object.
Inventory
Each dump session updates an inventory database in
/var/lib/xfsdump/inventory.
xfsdump
uses the inventory to determine the base of incremental
and resumed dumps.
This database can be displayed by invoking
xfsdump
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. Its contents may be merged back into
the online inventory database at a later time using
xfsrestore(1M).
The inventory files stored in
/var/lib/xfsdump
are not included in the dump, even if that directory is contained
within the filesystem being dumped. Including the inventory in the
dump may lead to loss or corruption of data, should an older version
be restored overwriting the current version. To backup the
xfsdump
inventory, the contents of
/var/lib/xfsdump
should be copied to another location which may then be safely dumped.
Upon restoration, those files may be copied back into
/var/lib/xfsdump,
overwriting whatever files may be there, or
xfsinvutil(1M)
may be used to selectively merge parts of the restored inventory back
into the current inventory. Prior to version 1.1.8,
xfsdump
would include the
/var/lib/xfsdump
directory in the dump. Care should be taken not to overwrite the
/var/lib/xfsdump
directory when restoring an old dump, by either restoring the
filesystem to another location or by copying the current contents of
/var/lib/xfsdump
to a safe place prior to running
xfsrestore(1M).
Labels
The operator can specify a label to identify the dump
session
and a label to identify a media object.
The session label is placed in every media file produced
in the course of the dump,
and is recorded in the inventory.
The media label is used to identify media objects,
and is independent of the session label.
Each media file on the media object contains a copy of the
media label.
An error is returned if the operator specifies a
media label that does not match the media label on a
media object containing valid media files.
Media labels are recorded in the inventory.
UUIDs
UUIDs (Universally Unique Identifiers) are used in three places:
to identify the filesystem being dumped (using the filesystem UUID,
see
xfs(5)
for more details),
to identify the dump session,
and to identify each media object.
The inventory display (
-I) includes all of these.
Dump Level Usage
The dump level mechanism provides a structured form of incremental
dumps.
A dump of level
level includes only files that have changed since
the most recent dump at a level less than
level.
For example, the operator can establish a dump schedule that involves
a full dump every Friday
and a daily incremental dump containing only files that
have changed since the previous dump.
In this case Friday's dump would be at level 0,
Saturday's at level 1,
Sunday's at level 2,
and so on,
up to the Thursday dump at level 6.
The above schedule results in a very tedious restore procedure to
fully reconstruct the Thursday version of the filesystem;
xfsrestore would need to be fed all 7 dumps in sequence.
A compromise schedule is to use level 1 on Saturday, Monday,
and Wednesday,
and level 2 on Sunday, Tuesday, and Thursday.
The Monday and Wednesday dumps would take longer,
but the worst case restore requires the
accumulation of just three dumps, one each at level 0, level 1, and level 2.
Quotas
If the filesystem being dumped contains user quotas,
xfsdump
will use
xfs_quota(8)
to store the quotas in a file called
xfsdump_quotas
in the root of the filesystem to be dumped. This file will then be
included in the dump. Upon restoration,
xfs_quota (8)
can be used to reactivate the quotas for the filesystem.
Note, however, that the
xfsdump_quotas
file will probably require modification to change the filesystem or
UIDs if the filesystem has been restored to a different partition or
system. Group and project quotas will be handled in a similar fashion
and saved in files called
xfsdump_quotas_group
and
xfsdump_quotas_proj ,
respectively.
Excluding individual files
It may be desirable to exclude particular files or directories from
the dump. The
-s
option can be used to limit the dump to a specified directory, and the
-z
option can be used to exclude files over a particular size. Additionally,
when
xfsdump
is run with the
-e
option, files that are tagged with the "no dump" file attribute
will not be included in the dump. The
chattr(1)
command can be used to set this attribute on individual files
or entire subtrees.
To tag an individual file for exclusion from the dump:
$ chattr +d file
To tag all files in a subtree for exclusion from the dump:
$ chattr -R +d directory
Note that any new files or directories created in a directory which has
the "no dump" attribute set will automatically inherit this attribute.
Also note that
xfsdump
does not check directories for the "no dump" attribute.
Care should be taken to note which files have been tagged.
Under normal operation,
xfsdump
will only report the number of files it will skip. The
-v excluded_files=debug
option, however, will cause
xfsdump
to list the inode numbers of the individual files affected.
EXAMPLES
To perform a level 0, single stream dump of the root filesystem to a locally mounted
tape drive, prompting for session and media labels when required:
# xfsdump -f /dev/tape /
To specify session and media labels explicitly:
# xfsdump -L session_1 -M tape_0 -f /dev/tape /
To perform a dump to a remote tape using the minimal rmt protocol and a set
blocksize of 64k:
# xfsdump -m -b 65536 -f otherhost:/dev/tape /
To perform a level 0, multi-stream dump to two locally mounted tape drives:
# xfsdump -L session_2 -f /dev/rmt/tps4d6v -M tape_1 \
-f /dev/rmt/tps5d6v -M tape_2 /
To perform a level 1 dump relative to the last level 0 dump recorded in the
inventory:
# xfsdump -l 1 -f /dev/tape /
To copy the contents of a filesystem to another directory (see xfsrestore(8)):
# xfsdump -J - / | xfsrestore -J - /new
FILES
- /var/lib/xfsdump/inventory
-
dump inventory database
SEE ALSO
attr(1),
rmt(8),
xfsrestore(8),
xfsinvutil(8),
xfs_quota(8),
attr_get(2).
DIAGNOSTICS
The exit code is 0 on normal completion, non-zero if an error
occurs or the dump is terminated by the operator.
For all verbosity levels greater than 0 (silent) the final line of the output
shows the exit status of the dump. It is of the form:
xfsdump: Dump Status: code
Where code takes one of the following values:
SUCCESS (normal completion),
INTERRUPT (interrupted),
QUIT (media no longer usable),
INCOMPLETE (dump 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 xfsdump.
However, it may be necessary to refine or expand the set of exit codes, or
their interpretation at some point in the future.
The message
``xfsdump: WARNING: unable to open directory: ino N: Invalid argument''
can occur with filesystems which are actively being modified while
xfsdump
is running.
This can happen to either directory or regular file inodes - affected
files will not end up in the dump, files below affected directories will
be placed in the
orphanage
directory by
xfsrestore.
BUGS
xfsdump
does not dump unmounted filesystems.
The dump frequency field of /etc/fstab is not supported.
xfsdump
uses the alert program only when a media change is required.
xfsdump
requires root privilege (except for inventory display).
xfsdump
can only dump XFS filesystems.
The media format used by xfsdump can only be understood
by xfsrestore.
xfsdump does not know how to manage CD-ROM or other removable
disk drives.
xfsdump can become confused when doing incremental or
resumed dumps
if on the same machine you dump two XFS filesystems and both
filesystems have the same filesystem identifier (UUID).
Since xfsdump uses the filesystem identifier to identify
filesystems,
xfsdump maintains one combined set of dump inventories
for both filesystems instead of two sets of dump inventories.
This scenario can happen only if
dd
or some other block-by-block copy program was used to make
a copy of an XFS filesystem.
See
xfs_copy(8)
and
xfs(5)
for more details.