Tar/Dumpdir
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Dumpdir
Incremental archives keep information about contents of each dumped directory in special data blocks called dumpdirs.
Dumpdir is a sequence of entries of the following form:
C filename \0 |
where C
is one of the control codes described below,
filename
is the name of the file C
operates upon, and
`\0'
represents a nul character (ASCII 0). The white space
characters were added for readability, real dumpdirs do not contain
them.
Each dumpdir ends with a single nul character.
The following table describes control codes and their meanings:
`Y'
filename
is contained in the archive.`N'
filename
was present in the directory at the time the archive was made, yet it was not dumped to the archive, because it had not changed since the last backup.`D'
filename
is a directory.`R'
- This code requests renaming of the
filename
to the name specified with the`T'
command, that immediately follows it. `T'
- Specify target file name for
`R'
command (see below). `X'
- Specify temporary directory name for a rename operation (see below).
Codes `Y'
, `N'
and `D'
require filename
argument
to be a relative file name to the directory this dumpdir describes,
whereas codes `R'
, `T'
and `X'
require their argument
to be an absolute file name.
The three codes `R'
, `T'
and `X'
specify a
renaming operation. In the simplest case it is:
R`source'\0T`dest'\0 |
which means "rename file `source'
to file `dest'
".
However, there are cases that require using a temporary directory. For example, consider the following scenario:
- Previous run dumped a directory
`foo'
which contained the following three directories:a b c
- They were renamed cyclically, so that:
`a' became `b' `b' became `c' `c' became `a'
- New incremental dump was made.
This case cannot be handled by three successive renames, since
renaming `a'
to `b'
will destroy the existing directory.
To correctly process it, GNU tar
needs a temporary directory, so
it creates the following dumpdir (newlines have been added for
readability):
Xfoo\0 Rfoo/a\0T\0 Rfoo/b\0Tfoo/c\0 Rfoo/c\0Tfoo/a\0 R\0Tfoo/a\0 |
The first command, `Xfoo\0'
, instructs the extractor to create a
temporary directory in the directory `foo'
. Second command,
`Rfoo/aT\0'
, says "rename file `foo/a'
to the temporary
directory that has just been created" (empty file name after a
command means use temporary directory). Third and fourth commands
work as usual, and, finally, the last command, `R\0Tfoo/a\0'
tells tar to rename the temporary directory to `foo/a'
.
The exact placement of a dumpdir in the archive depends on the archive format (see section Controlling the Archive Format):
PAX archives
In PAX archives, dumpdir is stored in the extended header of the corresponding directory, in variable
GNU.dumpdir
.GNU and old GNU archives
These formats implement special header type
`D'
, which is similar to ustar header`5'
(directory), except that it precedes a data block containing the dumpdir.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on February, 23 2019 using texi2html 1.76.