123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- @c This is part of the paxutils manual.
- @c Copyright (C) 2005--2023 Free Software Foundation, Inc.
- @c Written by Sergey Poznyakoff
- @c This file is distributed under GFDL 1.1 or any later version
- @c published by the Free Software Foundation.
- A @dfn{snapshot file} (or @dfn{directory file}) is created during
- incremental backups (@pxref{Incremental Dumps}). It
- contains the status of the file system at the time of the dump and is
- used to determine which files were modified since the last backup.
- @GNUTAR{} version @value{VERSION} supports three snapshot file
- formats. The first format, called @dfn{format 0}, is the one used by
- @GNUTAR{} versions up to and including 1.15.1. The second format, called
- @dfn{format 1} is an extended version of this format, that contains more
- metadata and allows for further extensions. It was used by alpha release
- version 1.15.90. For alpha version 1.15.91 and stable releases
- version 1.16 up through @value{VERSION}, the @dfn{format 2} is used.
- @GNUTAR{} is able to read all three formats, but will create
- snapshots only in format 2.
- This appendix describes all three formats in detail.
- @enumerate 0
- @cindex format 0, snapshot file
- @cindex snapshot file, format 0
- @item
- @samp{Format 0} snapshot file begins with a line containing a
- decimal number that represents a @acronym{UNIX} timestamp of the
- beginning of the last archivation. This line is followed by directory
- metadata descriptions, one per line. Each description has the
- following format:
- @smallexample
- [@var{nfs}]@var{dev} @var{inode} @var{name}
- @end smallexample
- @noindent
- where:
- @table @var
- @item nfs
- A single plus character (@samp{+}), if this directory is located on
- an @acronym{NFS}-mounted partition, otherwise empty.
- (That is, for non-NFS directories, the first character on the
- description line contains the start of the @var{dev} field.)
- @item dev
- Device number of the directory;
- @item inode
- I-node number of the directory;
- @item name
- Name of the directory. Any special characters (white-space,
- backslashes, etc.) are quoted.
- @end table
- @cindex format 1, snapshot file
- @cindex snapshot file, format 1
- @item
- @samp{Format 1} snapshot file begins with a line specifying the
- format of the file. This line has the following structure:
- @smallexample
- @samp{GNU tar-}@var{tar-version}@samp{-}@var{incr-format-version}
- @end smallexample
- @noindent
- where @var{tar-version} is the version number of @GNUTAR{}
- implementation that created this snapshot, and
- @var{incr-format-version} is the version number of the snapshot format
- (in this case @samp{1}).
- Next line contains two decimal numbers, representing the
- time of the last backup. First number is the number of seconds, the
- second one is the number of nanoseconds, since the beginning of the
- epoch.
- Lines that follow contain directory metadata, one line per
- directory. Each line is formatted as follows:
- @smallexample
- [@var{nfs}]@var{mtime-sec} @var{mtime-nsec} @var{dev} @var{inode} @var{name}
- @end smallexample
- @noindent
- where @var{mtime-sec} and @var{mtime-nsec} represent last
- modification time of this directory with nanosecond precision;
- @var{nfs}, @var{dev}, @var{inode} and @var{name} have the same meaning
- as with @samp{format 0}.
- @cindex format 2, snapshot file
- @cindex snapshot file, format 2
- @item
- @samp{Format 2} snapshot file begins with a format identifier, as described for
- version 1, e.g.:
- @smallexample
- GNU tar-@value{VERSION}-2
- @end smallexample
- This line is followed by newline. Rest of file consists of
- records, separated by null (@acronym{ASCII} 0)
- characters. Thus, in contrast to the previous formats, format 2
- snapshot is a binary file.
- First two records are decimal integers, representing the
- time of the last backup. First number is the number of seconds, the
- second one is the number of nanoseconds, since the beginning of the
- epoch. These are followed by arbitrary number of directory records.
- Each @dfn{directory record} contains a set of metadata describing a
- particular directory. Parts of a directory record are delimited with
- @acronym{ASCII} 0 characters. The following table describes each
- part. The @dfn{Number} type in this table stands for a decimal integer
- in @acronym{ASCII} notation. (Negative values are preceded with a "-"
- character, while positive values have no leading punctuation.)
- @multitable @columnfractions 0.25 0.15 0.6
- @headitem Field @tab Type @tab Description
- @item nfs @tab Character @tab @samp{1} if the directory is located on
- an @acronym{NFS}-mounted partition, or @samp{0} otherwise;
- @item timestamp_sec @tab Number @tab Modification time, seconds;
- @item timestamp_nsec @tab Number @tab Modification time, nanoseconds;
- @item dev @tab Number @tab Device number;
- @item ino @tab Number @tab I-node number;
- @item name @tab String @tab Directory name; in contrast to the
- previous versions it is not quoted;
- @item contents @tab Dumpdir @tab Contents of the directory;
- @xref{Dumpdir}, for a description of its format.
- @item
- @end multitable
- Dumpdirs stored in snapshot files contain only records of types
- @samp{Y}, @samp{N} and @samp{D}.
- @cindex snapshot file field ranges
- @opindex show-snapshot-field-ranges
- The specific range of values allowed in each of the @dfn{Number} fields
- depends on the underlying C datatypes as determined when @command{tar}
- is compiled. To see the specific ranges allowed for a particular
- @command{tar} binary, you can use the
- @option{--show-snapshot-field-ranges} option:
- @smallexample
- $ @kbd{tar --show-snapshot-field-ranges}
- This tar's snapshot file field ranges are
- (field name => [ min, max ]):
- nfs => [ 0, 1 ],
- timestamp_sec => [ -9223372036854775808, 9223372036854775807 ],
- timestamp_nsec => [ 0, 999999999 ],
- dev => [ 0, 18446744073709551615 ],
- ino => [ 0, 18446744073709551615 ],
- @end smallexample
- (This example is from a GNU/Linux x86_64 system.)
- @end enumerate
- @c End of snapshot.texi
|