| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
tar (This message will disappear, once this node revised.)
This chapter is about how one invokes the GNU tar
command, from the command synopsis (see section General Synopsis of tar). There are
numerous options, and many styles for writing them. One mandatory
option specifies the operation tar should perform
(see section Operations), other options are meant to detail how
this operation should be performed (see section tar Options).
Non-option arguments are not always interpreted the same way,
depending on what the operation is.
You will find in this chapter everything about option styles and rules for
writing them (see section The Three Option Styles). On the other hand, operations and options
are fully described elsewhere, in other chapters. Here, you will find
only synthetic descriptions for operations and options, together with
pointers to other parts of the tar manual.
Some options are so special they are fully described right in this
chapter. They have the effect of inhibiting the normal operation of
tar or else, they globally alter the amount of feedback the user
receives about what is going on. These are the ‘--help’ and
‘--version’ (see section GNU tar documentation), ‘--verbose’ (see section Checking tar progress)
and ‘--interactive’ options (see section Asking for Confirmation During Operations).
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
tar The GNU tar program is invoked as either one of:
tar option… [name]… tar letter… [argument]… [option]… [name]… |
The second form is for when old options are being used.
You can use tar to store files in an archive, to extract them from
an archive, and to do other types of archive manipulation. The primary
argument to tar, which is called the operation, specifies
which action to take. The other arguments to tar are either
options, which change the way tar performs an operation,
or file names or archive members, which specify the files or members
tar is to act on.
You can actually type in arguments in any order, even if in this manual
the options always precede the other arguments, to make examples easier
to understand. Further, the option stating the main operation mode
(the tar main command) is usually given first.
Each name in the synopsis above is interpreted as an archive member
name when the main command is one of ‘--compare’
(‘--diff’, ‘-d’), ‘--delete’, ‘--extract’
(‘--get’, ‘-x’), ‘--list’ (‘-t’) or
‘--update’ (‘-u’). When naming archive members, you
must give the exact name of the member in the archive, as it is
printed by ‘--list’. For ‘--append’ (‘-r’) and
‘--create’ (‘-c’), these name arguments specify
the names of either files or directory hierarchies to place in the archive.
These files or hierarchies should already exist in the file system,
prior to the execution of the tar command.
tar interprets relative file names as being relative to the
working directory. tar will make all file names relative
(by removing leading slashes when archiving or restoring files),
unless you specify otherwise (using the ‘--absolute-names’
option). See section Absolute File Names, for more information about
‘--absolute-names’.
If you give the name of a directory as either a file name or a member
name, then tar acts recursively on all the files and directories
beneath that directory. For example, the name ‘/’ identifies all
the files in the file system to tar.
The distinction between file names and archive member names is especially
important when shell globbing is used, and sometimes a source of confusion
for newcomers. See section Wildcards Patterns and Matching, for more information about globbing.
The problem is that shells may only glob using existing files in the
file system. Only tar itself may glob on archive members, so when
needed, you must ensure that wildcard characters reach tar without
being interpreted by the shell first. Using a backslash before ‘*’
or ‘?’, or putting the whole argument between quotes, is usually
sufficient for this.
Even if names are often specified on the command line, they can also be read from a text file in the file system, using the ‘--files-from=file-of-names’ (‘-T file-of-names’) option.
If you don't use any file name arguments, ‘--append’ (‘-r’),
‘--delete’ and ‘--concatenate’ (‘--catenate’,
‘-A’) will do nothing, while ‘--create’ (‘-c’)
will usually yield a diagnostic and inhibit tar execution.
The other operations of tar (‘--list’,
‘--extract’, ‘--compare’, and ‘--update’)
will act on the entire contents of the archive.
Besides successful exits, GNU tar may fail for
many reasons. Some reasons correspond to bad usage, that is, when the
tar command is improperly written. Errors may be
encountered later, while encountering an error processing the archive
or the files. Some errors are recoverable, in which case the failure
is delayed until tar has completed all its work. Some
errors are such that it would not meaningful, or at least risky, to
continue processing: tar then aborts processing immediately.
All abnormal exits, whether immediate or delayed, should always be
clearly diagnosed on stderr, after a line stating the nature of
the error.
Possible exit codes of GNU tar are summarized in the following
table:
‘Successful termination’.
‘Some files differ’. If tar was invoked with ‘--compare’ (‘--diff’, ‘-d’) command line option, this means that some files in the archive differ from their disk counterparts (see section Comparing Archive Members with the File System). If tar was given ‘--create’, ‘--append’ or ‘--update’ option, this exit code means that some files were changed while being archived and so the resulting archive does not contain the exact copy of the file set.
‘Fatal error’. This means that some fatal, unrecoverable error occurred.
If tar has invoked a subprocess and that subprocess exited with a
nonzero exit code, tar exits with that code as well.
This can happen, for example, if tar was given some
compression option (see section Creating and Reading Compressed Archives) and the external compressor program
failed. Another example is rmt failure during backup to the
remote device (see section The Remote Tape Server).
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
tar Options GNU tar has a total of eight operating modes which
allow you to perform a variety of tasks. You are required to choose
one operating mode each time you employ the tar program by
specifying one, and only one operation as an argument to the
tar command (two lists of four operations each may be found
at The Three Most Frequently Used Operations and The Five Advanced tar Operations). Depending on
circumstances, you may also wish to customize how the chosen operating
mode behaves. For example, you may wish to change the way the output
looks, or the format of the files that you wish to archive may require
you to do something special in order to make the archive look right.
You can customize and control tar's performance by running
tar with one or more options (such as ‘--verbose’
(‘-v’), which we used in the tutorial). As we said in the
tutorial, options are arguments to tar which are (as
their name suggests) optional. Depending on the operating mode, you
may specify one or more options. Different options will have different
effects, but in general they all change details of the operation, such
as archive format, archive name, or level of user interaction. Some
options make sense with all operating modes, while others are
meaningful only with particular modes. You will likely use some
options frequently, while you will only use others infrequently, or
not at all. (A full list of options is available in see section All tar Options.)
The TAR_OPTIONS environment variable specifies default options to
be placed in front of any explicit options. For example, if
TAR_OPTIONS is ‘-v --unlink-first’, tar behaves as
if the two options ‘-v’ and ‘--unlink-first’ had been
specified before any explicit options. Option specifications are
separated by whitespace. A backslash escapes the next character, so it
can be used to specify an option containing whitespace or a backslash.
Note that tar options are case sensitive. For example, the
options ‘-T’ and ‘-t’ are different; the first requires an
argument for stating the name of a file providing a list of names,
while the second does not require an argument and is another way to
write ‘--list’ (‘-t’).
In addition to the eight operations, there are many options to
tar, and three different styles for writing both: long (mnemonic)
form, short form, and old style. These styles are discussed below.
Both the options and the operations can be written in any of these three
styles.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
There are three styles for writing operations and options to the command
line invoking tar. The different styles were developed at
different times during the history of tar. These styles will be
presented below, from the most recent to the oldest.
Some options must take an argument. (For example, ‘--file’
(‘-f’)) takes the name of an archive file as an argument. If
you do not supply an archive file name, tar will use a
default, but this can be confusing; thus, we recommend that you always
supply a specific archive file name.) Where you place the
arguments generally depends on which style of options you choose. We
will detail specific information relevant to each option style in the
sections on the different option styles, below. The differences are
subtle, yet can often be very important; incorrect option placement
can cause you to overwrite a number of important files. We urge you
to note these differences, and only use the option style(s) which
makes the most sense to you until you feel comfortable with the others.
Some options may take an argument. Such options may have at most long and short forms, they do not have old style equivalent. The rules for specifying an argument for such options are stricter than those for specifying mandatory arguments. Please, pay special attention to them.
| 3.3.1 Long Option Style | ||
| 3.3.2 Short Option Style | ||
| 3.3.3 Old Option Style | ||
| 3.3.4 Mixing Option Styles |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Each option has at least one long (or mnemonic) name starting with two
dashes in a row, e.g., ‘--list’. The long names are more clear than
their corresponding short or old names. It sometimes happens that a
single long option has many different names which are
synonymous, such as ‘--compare’ and ‘--diff’. In addition,
long option names can be given unique abbreviations. For example,
‘--cre’ can be used in place of ‘--create’ because there is no
other long option which begins with ‘cre’. (One way to find
this out is by trying it and seeing what happens; if a particular
abbreviation could represent more than one option, tar will tell
you that that abbreviation is ambiguous and you'll know that that
abbreviation won't work. You may also choose to run ‘tar --help’
to see a list of options. Be aware that if you run tar with a
unique abbreviation for the long name of an option you didn't want to
use, you are stuck; tar will perform the command as ordered.)
Long options are meant to be obvious and easy to remember, and their meanings are generally easier to discern than those of their corresponding short options (see below). For example:
$ tar --create --verbose --blocking-factor=20 --file=/dev/rmt0 |
gives a fairly good set of hints about what the command does, even
for those not fully acquainted with tar.
Long options which require arguments take those arguments
immediately following the option name. There are two ways of
specifying a mandatory argument. It can be separated from the
option name either by an equal sign, or by any amount of
white space characters. For example, the ‘--file’ option (which
tells the name of the tar archive) is given a file such as
‘archive.tar’ as argument by using any of the following notations:
‘--file=archive.tar’ or ‘--file archive.tar’.
In contrast, optional arguments must always be introduced using an equal sign. For example, the ‘--backup’ option takes an optional argument specifying backup type. It must be used as ‘--backup=backup-type’.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Most options also have a short option name. Short options start with a single dash, and are followed by a single character, e.g., ‘-t’ (which is equivalent to ‘--list’). The forms are absolutely identical in function; they are interchangeable.
The short option names are faster to type than long option names.
Short options which require arguments take their arguments immediately following the option, usually separated by white space. It is also possible to stick the argument right after the short option name, using no intervening space. For example, you might write ‘-f archive.tar’ or ‘-farchive.tar’ instead of using ‘--file=archive.tar’. Both ‘--file=archive-name’ and ‘-f archive-name’ denote the option which indicates a specific archive, here named ‘archive.tar’.
Short options which take optional arguments take their arguments immediately following the option letter, without any intervening white space characters.
Short options' letters may be clumped together, but you are not
required to do this (as compared to old options; see below). When
short options are clumped as a set, use one (single) dash for them
all, e.g., ‘tar -cvf’. Only the last option in
such a set is allowed to have an argument(2).
When the options are separated, the argument for each option which requires an argument directly follows that option, as is usual for Unix programs. For example:
$ tar -c -v -b 20 -f /dev/rmt0 |
If you reorder short options' locations, be sure to move any arguments that belong to them. If you do not move the arguments properly, you may end up overwriting files.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
(This message will disappear, once this node revised.)
Like short options, old options are single letters. However, old options
must be written together as a single clumped set, without spaces separating
them or dashes preceding them(3). This set
of letters must be the first to appear on the command line, after the
tar program name and some white space; old options cannot appear
anywhere else. The letter of an old option is exactly the same letter as
the corresponding short option. For example, the old option ‘t’ is
the same as the short option ‘-t’, and consequently, the same as the
long option ‘--list’. So for example, the command ‘tar
cv’ specifies the option ‘-v’ in addition to the operation ‘-c’.
When options that need arguments are given together with the command, all the associated arguments follow, in the same order as the options. Thus, the example given previously could also be written in the old style as follows:
$ tar cvbf 20 /dev/rmt0 |
Here, ‘20’ is the argument of ‘-b’ and ‘/dev/rmt0’ is the argument of ‘-f’.
On the other hand, this old style syntax makes it difficult to match option letters with their corresponding arguments, and is often confusing. In the command ‘tar cvbf 20 /dev/rmt0’, for example, ‘20’ is the argument for ‘-b’, ‘/dev/rmt0’ is the argument for ‘-f’, and ‘-v’ does not have a corresponding argument. Even using short options like in ‘tar -c -v -b 20 -f /dev/rmt0’ is clearer, putting all arguments next to the option they pertain to.
If you want to reorder the letters in the old option argument, be sure to reorder any corresponding argument appropriately.
This old way of writing tar options can surprise even experienced
users. For example, the two commands:
tar cfz archive.tar.gz file tar -cfz archive.tar.gz file |
are quite different. The first example uses ‘archive.tar.gz’ as the value for option ‘f’ and recognizes the option ‘z’. The second example, however, uses ‘z’ as the value for option ‘f’ — probably not what was intended.
Old options are kept for compatibility with old versions of tar.
This second example could be corrected in many ways, among which the following are equivalent:
tar -czf archive.tar.gz file tar -cf archive.tar.gz -z file tar cf archive.tar.gz -z file |
As far as we know, all tar programs, GNU and
non-GNU, support old options. GNU tar
supports them not only for historical reasons, but also because many
people are used to them. For compatibility with Unix tar,
the first argument is always treated as containing command and option
letters even if it doesn't start with ‘-’. Thus, ‘tar c’ is
equivalent to ‘tar -c’: both of them specify the
‘--create’ (‘-c’) command to create an archive.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
All three styles may be intermixed in a single tar command,
so long as the rules for each style are fully
respected(4). Old style options and either of the modern styles of
options may be mixed within a single tar command. However,
old style options must be introduced as the first arguments only,
following the rule for old options (old options must appear directly
after the tar command and some white space). Modern options
may be given only after all arguments to the old options have been
collected. If this rule is not respected, a modern option might be
falsely interpreted as the value of the argument to one of the old
style options.
For example, all the following commands are wholly equivalent, and illustrate the many combinations and orderings of option styles.
tar --create --file=archive.tar tar --create -f archive.tar tar --create -farchive.tar tar --file=archive.tar --create tar --file=archive.tar -c tar -c --file=archive.tar tar -c -f archive.tar tar -c -farchive.tar tar -cf archive.tar tar -cfarchive.tar tar -f archive.tar --create tar -f archive.tar -c tar -farchive.tar --create tar -farchive.tar -c tar c --file=archive.tar tar c -f archive.tar tar c -farchive.tar tar cf archive.tar tar f archive.tar --create tar f archive.tar -c tar fc archive.tar |
On the other hand, the following commands are not equivalent to the previous set:
tar -f -c archive.tar tar -fc archive.tar tar -fcarchive.tar tar -farchive.tarc tar cfarchive.tar |
These last examples mean something completely different from what the
user intended (judging based on the example in the previous set which
uses long options, whose intent is therefore very clear). The first
four specify that the tar archive would be a file named
‘-c’, ‘c’, ‘carchive.tar’ or ‘archive.tarc’,
respectively. The first two examples also specify a single non-option,
name argument having the value ‘archive.tar’. The last
example contains only old style option letters (repeating option
‘c’ twice), not all of which are meaningful (eg., ‘.’,
‘h’, or ‘i’), with no argument value.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
tar Options The coming manual sections contain an alphabetical listing of all
tar operations and options, with brief descriptions and cross
references to more in-depth explanations in the body of the manual.
They also contain an alphabetically arranged table of the short option
forms with their corresponding long option. You can use this table as
a reference for deciphering tar commands in scripts.
| 3.4.1 Operations | ||
3.4.2 tar Options | ||
| 3.4.3 Short Options Cross Reference |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Appends files to the end of the archive. See section How to Add Files to Existing Archives: ‘--append’.
Same as ‘--concatenate’. See section Combining Archives with ‘--concatenate’.
Compares archive members with their counterparts in the file system, and reports differences in file size, mode, owner, modification date and contents. See section Comparing Archive Members with the File System.
Appends other tar archives to the end of the archive.
See section Combining Archives with ‘--concatenate’.
Creates a new tar archive. See section How to Create Archives.
Deletes members from the archive. Don't try this on a archive on a tape! See section Removing Archive Members Using ‘--delete’.
Same ‘--compare’. See section Comparing Archive Members with the File System.
Extracts members from the archive into the file system. See section How to Extract Members from an Archive.
Same as ‘--extract’. See section How to Extract Members from an Archive.
Lists the members in an archive. See section How to List Archives.
Adds files to the end of the archive, but only if they are newer than their counterparts already in the archive, or if they do not already exist in the archive. See section Updating an Archive.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
tar Options Normally when creating an archive, tar strips an initial
‘/’ from member names. This option disables that behavior.
See section Absolute File Names.
(See ‘--newer’, see section Operating Only on New Files)
A pattern must match an initial subsequence of the name's components. See section Controlling Pattern-Matching.
Attempt to preserve the access time of files when reading them. This option currently is effective only on files that you own, unless you have superuser privileges.
‘--atime-preserve=replace’ remembers the access time of a file
before reading it, and then restores the access time afterwards. This
may cause problems if other programs are reading the file at the same
time, as the times of their accesses will be lost. On most platforms
restoring the access time also requires tar to restore the
data modification time too, so this option may also cause problems if
other programs are writing the file at the same time. (Tar attempts
to detect this situation, but cannot do so reliably due to race
conditions.) Worse, on most platforms restoring the access time also
updates the status change time, which means that this option is
incompatible with incremental backups.
‘--atime-preserve=system’ avoids changing time stamps on files,
without interfering with time stamp updates
caused by other programs, so it works better with incremental backups.
However, it requires a special O_NOATIME option from the
underlying operating and file system implementation, and it also requires
that searching directories does not update their access times. As of
this writing (November 2005) this works only with Linux, and only with
Linux kernels 2.6.8 and later. Worse, there is currently no reliable
way to know whether this feature actually works. Sometimes
tar knows that it does not work, and if you use
‘--atime-preserve=system’ then tar complains and
exits right away. But other times tar might think that the
option works when it actually does not.
Currently ‘--atime-preserve’ with no operand defaults to ‘--atime-preserve=replace’, but this may change in the future as support for ‘--atime-preserve=system’ improves.
If your operating system does not support
‘--atime-preserve=system’, you might be able to preserve access
times reliably by by using the mount command. For example,
you can mount the file system read-only, or access the file system via
a read-only loopback mount, or use the ‘noatime’ mount option
available on some systems. However, mounting typically requires
superuser privileges and can be a pain to manage.
During a ‘--create’ operation, enables automatic compressed format recognition based on the archive suffix. See section Creating and Reading Compressed Archives.
Rather than deleting files from the file system, tar will
back them up using simple or numbered backups, depending upon
backup-type. See section Backup options.
With this option present, tar prints error messages for read errors
with the block number in the archive file. See block-number.
Sets the blocking factor tar uses to blocking x 512 bytes per
record. See section The Blocking Factor of an Archive.
This option tells tar to read or write archives through
bzip2. See section Creating and Reading Compressed Archives.
Check device numbers when creating a list of modified files for incremental archiving. This is the default. See device numbers, for a detailed description.
This option directs tar to print periodic checkpoint
messages as it reads through the archive. It is intended for when you
want a visual indication that tar is still running, but
don't want to see ‘--verbose’ output. You can also instruct
tar to execute a list of actions on each checkpoint, see
‘--checklist-action’ below. For a detailed description, see
Checkpoints.
Instruct tar to execute an action upon hitting a
breakpoint. Here we give only a brief outline. See section Checkpoints,
for a complete description.
The action argument can be one of the following:
Produce an audible bell on the console.
Print a single dot on the standard listing stream.
Display a textual message on the standard error, with the status and number of the checkpoint. This is the default.
Display string on the standard error. Before output, the string is subject to meta-character expansion.
Execute the given command.
Wait for time seconds.
Output string on the current console (‘/dev/tty’).
Several ‘--checkpoint-action’ options can be specified. The supplied actions will be executed in order of their appearance in the command line.
Using ‘--checkpoint-action’ without ‘--checkpoint’ assumes default checkpoint frequency of one checkpoint per 10 records.
If this option was given, tar will check the number of links
dumped for each processed file. If this number does not match the
total number of hard links for the file, a warning message will be
output (5).
See section Hard Links.
tar will use the compress program when reading or
writing the archive. This allows you to directly act on archives
while saving space. See section Creating and Reading Compressed Archives.
(See ‘--interactive’.) See section Asking for Confirmation During Operations.
Delay setting modification times and permissions of extracted directories until the end of extraction. See section Directory Modification Times and Permissions.
When creating a tar archive, tar will archive the
file that a symbolic link points to, rather than archiving the
symlink. See section Symbolic Links.
When this option is specified, tar will change its current directory
to dir before performing any operations. When this option is used
during archive creation, it is order sensitive. See section Changing the Working Directory.
When performing operations, tar will skip files that match
pattern. See section Excluding Some Files.
Similar to ‘--exclude’, except tar will use the list of
patterns in the file file. See section Excluding Some Files.
Exclude from dump any directory containing a valid cache directory tag file, but still dump the directory node and the tag file itself.
See section Excluding Some Files.
Exclude from dump any directory containing a valid cache directory tag file, but still dump the directory node itself.
See section Excluding Some Files.
Exclude from dump any directory containing a valid cache directory tag file. See section Excluding Some Files.
Exclude from dump any directory containing file named file, but dump the directory node and file itself. See section Excluding Some Files.
Exclude from dump the contents of any directory containing file named file, but dump the directory node itself. See section Excluding Some Files.
Exclude from dump any directory containing file named file. See section Excluding Some Files.
Exclude from dump directories and files, that are internal for some widely used version control systems.
See section Excluding Some Files.
tar will use the file archive as the tar archive it
performs operations on, rather than tar's compilation dependent
default. See section The ‘--file’ Option.
tar will use the contents of file as a list of archive members
or files to operate on, in addition to those specified on the
command-line. See section Reading Names from a File.
Forces tar to interpret the file name given to ‘--file’
as a local file, even if it looks like a remote tape drive name.
See local and remote archives.
Selects output archive format. Format may be one of the following:
Creates an archive that is compatible with Unix V7 tar.
Creates an archive that is compatible with GNU tar version
1.12 or earlier.
Creates archive in GNU tar 1.13 format. Basically it is the same as ‘oldgnu’ with the only difference in the way it handles long numeric fields.
Creates a POSIX.1-1988 compatible archive.
Creates a POSIX.1-2001 archive.
See section Controlling the Archive Format, for a detailed discussion of these formats.
Files added to the tar archive will have a group ID of group,
rather than the group from the source file. group is first decoded
as a group symbolic name, but if this interpretation fails, it has to be
a decimal numeric group ID. See section Overriding File Metadata.
Also see the comments for the ‘--owner=user’ option.
This option tells tar to read or write archives through
gzip, allowing tar to directly operate on several
kinds of compressed archives transparently. See section Creating and Reading Compressed Archives.
When creating an archive, dereference hard links and store the files they refer to, instead of creating usual hard link members.
See section Hard Links.
tar will print out a short message summarizing the operations and
options to tar and exit. See section GNU tar documentation.
Ignore case when matching member or file names with patterns. See section Controlling Pattern-Matching.
Ignore exit codes of subprocesses. See section Writing to an External Program.
Do not exit unsuccessfully merely because an unreadable file was encountered. See section Options to Help Read Archives.
With this option, tar will ignore zeroed blocks in the
archive, which normally signals EOF. See section Options to Help Read Archives.
Informs tar that it is working with an old
GNU-format incremental backup archive. It is intended
primarily for backwards compatibility only. See section Using tar to Perform Incremental Dumps,
for a detailed discussion of incremental archives.
Send verbose output to file instead of to standard output.
When tar is performing multi-tape backups, script-file is run
at the end of each tape. If script-file exits with nonzero status,
tar fails immediately. See info-script, for a detailed
discussion of script-file.
Specifies that tar should ask the user for confirmation before
performing potentially destructive options, such as overwriting files.
See section Asking for Confirmation During Operations.
Do not replace existing files that are newer than their archive copies when extracting files from an archive.
Do not overwrite existing files when extracting files from an archive. See section Keep Old Files.
When creating an archive, instructs tar to write name
as a name record in the archive. When extracting or listing archives,
tar will only operate on archives that have a label matching
the pattern specified in name. See section Tape Files.
During a ‘--create’ operation, specifies that the archive that
tar creates is a new GNU-format incremental
backup, using snapshot-file to determine which files to backup.
With other operations, informs tar that the archive is in
incremental format. See section Using tar to Perform Incremental Dumps.
This option tells tar to read or write archives through
lzma. See section Creating and Reading Compressed Archives.
When adding files to an archive, tar will use
permissions for the archive members, rather than the permissions
from the files. permissions can be specified either as an octal
number or as symbolic permissions, like with
chmod. See section Overriding File Metadata.
When adding files to an archive, tar will use date as
the modification time of members when creating archives, instead of
their actual modification times. The value of date can be
either a textual date representation (see section Date input formats) or a
name of the existing file, starting with ‘/’ or ‘.’. In the
latter case, the modification time of that file is used. See section Overriding File Metadata.
Informs tar that it should create or otherwise operate on a
multi-volume tar archive. See section Using Multiple Tapes.
(see –info-script)
When creating an archive, tar will only add files that have changed
since date. If date begins with ‘/’ or ‘.’, it
is taken to be the name of a file whose data modification time specifies
the date. See section Operating Only on New Files.
Like ‘--newer’, but add only files whose contents have changed (as opposed to just ‘--newer’, which will also back up files for which any status information has changed). See section Operating Only on New Files.
An exclude pattern can match any subsequence of the name's components. See section Controlling Pattern-Matching.
Do not check device numbers when creating a list of modified files for incremental archiving. See device numbers, for a detailed description.
Modification times and permissions of extracted directories are set when all files from this directory have been extracted. This is the default. See section Directory Modification Times and Permissions.
Use case-sensitive matching. See section Controlling Pattern-Matching.
Print warnings about subprocesses that terminated with a nonzero exit code. See section Writing to an External Program.
Preserve metadata of existing directories when extracting files from an archive. See section Overwrite Old Files.
Remove characters listed in string from the list of quoted characters set by the previous ‘--quote-chars’ option (see section Quoting Member Names).
With this option, tar will not recurse into directories.
See section Descending into Directories.
When extracting an archive, do not attempt to preserve the owner
specified in the tar archive. This the default behavior
for ordinary users.
When extracting an archive, subtract the user's umask from files from the permissions specified in the archive. This is the default behavior for ordinary users.
Treat all input file or member names literally, do not interpret escape sequences. See input name quoting.
Do not use wildcards. See section Controlling Pattern-Matching.
Wildcards do not match ‘/’. See section Controlling Pattern-Matching.
When tar is using the ‘--files-from’ option, this option
instructs tar to expect file names terminated with NUL, so
tar can correctly work with file names that contain newlines.
See section NUL Terminated File Names.
This option will notify tar that it should use numeric user
and group IDs when creating a tar file, rather than names.
See section Handling File Attributes.
The function of this option depends on the action tar is
performing. When extracting files, ‘-o’ is a synonym for
‘--no-same-owner’, i.e., it prevents tar from
restoring ownership of files being extracted.
When creating an archive, it is a synonym for
‘--old-archive’. This behavior is for compatibility
with previous versions of GNU tar, and will be
removed in future releases.
See section Changes, for more information.
This option can be used in conjunction with one of the subcommands ‘--delete’, ‘--diff’, ‘--extract’ or ‘--list’ when a list of files is given either on the command line or via ‘-T’ option.
This option instructs tar to process only the numberth
occurrence of each named file. Number defaults to 1, so
tar -x -f archive.tar --occurrence filename |
will extract the first occurrence of the member ‘filename’ from ‘archive.tar’ and will terminate without scanning to the end of the archive.
Synonym for ‘--format=v7’.
Used when creating an archive. Prevents tar from recursing into
directories that are on different file systems from the current
directory.
Overwrite existing files and directory metadata when extracting files from an archive. See section Overwrite Old Files.
Overwrite the metadata of existing directories when extracting files from an archive. See section Overwrite Old Files.
Specifies that tar should use user as the owner of members
when creating archives, instead of the user associated with the source
file. user is first decoded as a user symbolic name, but if
this interpretation fails, it has to be a decimal numeric user ID.
See section Overriding File Metadata.
This option does not affect extraction from archives.
This option is meaningful only with POSIX.1-2001 archives
(see section GNU tar and POSIX tar). It modifies the way tar handles the
extended header keywords. Keyword-list is a comma-separated
list of keyword options. See section Controlling Extended Header Keywords, for a detailed
discussion.
Synonym for ‘--format=v7’.
Same as ‘--format=posix’.
Synonymous with specifying both ‘--preserve-permissions’ and ‘--same-order’. See section Setting Access Permissions.
(See ‘--same-order’; see section Options to Help Read Archives.)
When tar is extracting an archive, it normally subtracts the
users' umask from the permissions specified in the archive and uses
that number as the permissions to create the destination file.
Specifying this option instructs tar that it should use the
permissions directly from the archive. See section Setting Access Permissions.
Always quote characters from string, even if the selected quoting style would not quote them (see section Quoting Member Names).
Set quoting style to use when printing member and file names
(see section Quoting Member Names). Valid style values are:
literal, shell, shell-always, c,
escape, locale, and clocale. Default quoting
style is escape, unless overridden while configuring the
package.
Specifies that tar should reblock its input, for reading
from pipes on systems with buggy implementations. See section Options to Help Read Archives.
Instructs tar to use size bytes per record when accessing the
archive. See section The Blocking Factor of an Archive.
With this option, tar recurses into directories (default).
See section Descending into Directories.
Remove existing directory hierarchies before extracting directories of the same name from the archive. See section Recursive Unlink.
Directs tar to remove the source file from the file system after
appending it to an archive. See section Removing Files.
Disable use of some potentially harmful tar options.
Currently this option disables shell invocation from multi-volume menu
(see section Using Multiple Tapes).
Notifies tar that it should use cmd instead of
the default ‘/usr/libexec/rmt’ (see section The Remote Tape Server).
Notifies tar that is should use cmd to communicate with remote
devices. See section Device Selection and Switching.
This option is an optimization for tar when running on machines with
small amounts of memory. It informs tar that the list of file
arguments has already been sorted to match the order of files in the
archive. See section Options to Help Read Archives.
When extracting an archive, tar will attempt to preserve the owner
specified in the tar archive with this option present.
This is the default behavior for the superuser; this option has an
effect only for ordinary users. See section Handling File Attributes.
(See ‘--preserve-permissions’; see section Setting Access Permissions.)
Assume that the archive media supports seeks to arbitrary
locations. Usually tar determines automatically whether
the archive can be seeked or not. This option is intended for use
in cases when such recognition fails.
Displays the default options used by tar and exits
successfully. This option is intended for use in shell scripts.
Here is an example of what you can see using this option:
$ tar --show-defaults --format=gnu -f- -b20 --quoting-style=escape \ --rmt-command=/usr/libexec/rmt --rsh-command=/usr/bin/rsh |
Instructs tar to mention the directories it is skipping when
operating on a tar archive. See show-omitted-dirs.
Display file or member names after applying any transformations
(see section Modifying File and Member Names). In particular, when used in conjunction with one of
the archive creation operations it instructs tar to list the
member names stored in the archive, as opposed to the actual file
names. See listing member and file names.
Invokes a GNU extension when adding files to an archive that handles sparse files efficiently. See section Archiving Sparse Files.
Specifies the format version to use when archiving sparse files. Implies ‘--sparse’. See section Archiving Sparse Files. For the description of the supported sparse formats, See section Storing Sparse Files.
This option affects extraction only; tar will skip extracting
files in the archive until it finds one that matches name.
See section Coping with Scarce Resources.
Strip given number of leading components from file names before extraction. For example, if archive ‘archive.tar’ contained ‘/some/file/name’, then running
tar --extract --file archive.tar --strip-components=2 |
would extract this file to file ‘name’.
Alters the suffix tar uses when backing up files from the default
‘~’. See section Backup options.
Specifies the length of tapes that tar is writing as being
num x 1024 bytes long. See section Using Multiple Tapes.
Reads the volume label. If an argument is specified, test whether it matches the volume label. See –test-label option.
During extraction tar will pipe extracted files to the
standard input of command. See section Writing to an External Program.
During extraction, tar will extract files to stdout rather
than to the file system. See section Writing to Standard Output.
Displays the total number of bytes transferred when processing an
archive. If an argument is given, these data are displayed on
request, when signal signo is delivered to tar.
See totals.
Sets the data modification time of extracted files to the extraction time, rather than the data modification time stored in the archive. See section Setting Data Modification Times.
Transform file or member names using sed replacement expression
sed-expr. For example,
$ tar cf archive.tar --transform 's,^\./,usr/,' . |
will add to ‘archive’ files from the current working directory, replacing initial ‘./’ prefix with ‘usr/’. For the detailed discussion, See section Modifying File and Member Names.
To see transformed member names in verbose listings, use ‘--show-transformed-names’ option (see show-transformed-names).
(See ‘--compress’. see section Creating and Reading Compressed Archives)
(See ‘--gzip’. see section Creating and Reading Compressed Archives)
Directs tar to remove the corresponding file from the file
system before extracting it from the archive. See section Unlink First.
Enable unquoting input file or member names (default). See input name quoting.
Instructs tar to access the archive through prog, which is
presumed to be a compression program of some sort. See section Creating and Reading Compressed Archives.
Display file modification dates in UTC. This option implies ‘--verbose’.
Specifies that tar should be more verbose about the
operations it is performing. This option can be specified multiple
times for some operations to increase the amount of information displayed.
See section Checking tar progress.
Verifies that the archive was correctly written when creating an archive. See section Verifying Data as It is Stored.
Print information about the program's name, version, origin and legal
status, all on standard output, and then exit successfully.
See section GNU tar documentation.
Used in conjunction with ‘--multi-volume’. tar will
keep track of which volume of a multi-volume archive it is working in
file. See volno-file.
Use wildcards when matching member names with patterns. See section Controlling Pattern-Matching.
Wildcards match ‘/’. See section Controlling Pattern-Matching.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Here is an alphabetized list of all of the short option forms, matching them with the equivalent long option.
Short Option | Reference |
|---|---|
-A | |
-B | |
-C | |
-F | |
-G | |
-K | |
-L | |
-M | |
-N | |
-O | |
-P | |
-R | |
-S | |
-T | |
-U | |
-V | |
-W | |
-X | |
-Z | |
-b | |
-c | |
-d | |
-f | |
-g | |
-h | |
-i | |
-j | |
-k | |
-l | |
-m | |
-o | When creating, –no-same-owner, when extracting — –portability. The later usage is deprecated. It is retained for compatibility with
the earlier versions of GNU |
-p | |
-r | |
-s | |
-t | |
-u | |
-v | |
-w | |
-x | |
-z |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
tar documentation Being careful, the first thing is really checking that you are using
GNU tar, indeed. The ‘--version’ option
causes tar to print information about its name, version,
origin and legal status, all on standard output, and then exit
successfully. For example, ‘tar --version’ might print:
tar (GNU tar) 1.20 Copyright (C) 2008 Free Software Foundation, Inc. This is free software. You may redistribute copies of it under the terms of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the extent permitted by law. Written by John Gilmore and Jay Fenlason. |
The first occurrence of ‘tar’ in the result above is the program
name in the package (for example, rmt is another program),
while the second occurrence of ‘tar’ is the name of the package
itself, containing possibly many programs. The package is currently
named ‘tar’, after the name of the main program it
contains(6).
Another thing you might want to do is checking the spelling or meaning
of some particular tar option, without resorting to this
manual, for once you have carefully read it. GNU tar
has a short help feature, triggerable through the
‘--help’ option. By using this option, tar will
print a usage message listing all available options on standard
output, then exit successfully, without doing anything else and
ignoring all other options. Even if this is only a brief summary, it
may be several screens long. So, if you are not using some kind of
scrollable window, you might prefer to use something like:
$ tar --help | less |
presuming, here, that you like using less for a pager. Other
popular pagers are more and pg. If you know about some
keyword which interests you and do not want to read all the
‘--help’ output, another common idiom is doing:
tar --help | grep keyword |
for getting only the pertinent lines. Notice, however, that some
tar options have long description lines and the above
command will list only the first of them.
The exact look of the option summary displayed by tar --help is configurable. See section Configuring Help Summary, for a detailed description.
If you only wish to check the spelling of an option, running tar
--usage may be a better choice. This will display a terse list of
tar option without accompanying explanations.
The short help output is quite succinct, and you might have to get
back to the full documentation for precise points. If you are reading
this paragraph, you already have the tar manual in some
form. This manual is available in a variety of forms from
http://www.gnu.org/software/tar/manual. It may be printed out of the GNU tar
distribution, provided you have TeX already installed somewhere,
and a laser printer around. Just configure the distribution, execute
the command ‘make dvi’, then print ‘doc/tar.dvi’ the
usual way (contact your local guru to know how). If GNU tar
has been conveniently installed at your place, this
manual is also available in interactive, hypertextual form as an Info
file. Just call ‘info tar’ or, if you do not have the
info program handy, use the Info reader provided within
GNU Emacs, calling ‘tar’ from the main Info menu.
There is currently no man page for GNU tar.
If you observe such a man page on the system you are running,
either it does not belong to GNU tar, or it has not
been produced by GNU. Some package maintainers convert
tar --help output to a man page, using help2man. In
any case, please bear in mind that the authoritative source of
information about GNU tar is this Texinfo documentation.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
tar default values GNU tar has some predefined defaults that are used when you do not
explicitly specify another values. To obtain a list of such
defaults, use ‘--show-defaults’ option. This will output the
values in the form of tar command line options:
tar --show-defaults --format=gnu -f- -b20 --quoting-style=escape --rmt-command=/etc/rmt --rsh-command=/usr/bin/rsh |
Notice, that this option outputs only one line. The example output above has been split to fit page boundaries.
The above output shows that this version of GNU tar defaults to
using ‘gnu’ archive format (see section Controlling the Archive Format), it uses standard
output as the archive, if no ‘--file’ option has been given
(see section The ‘--file’ Option), the default blocking factor is 20
(see section The Blocking Factor of an Archive). It also shows the default locations where
tar will look for rmt and rsh binaries.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
tar progress Typically, tar performs most operations without reporting any
information to the user except error messages. When using tar
with many options, particularly ones with complicated or
difficult-to-predict behavior, it is possible to make serious mistakes.
tar provides several options that make observing tar
easier. These options cause tar to print information as it
progresses in its job, and you might want to use them just for being
more careful about what is going on, or merely for entertaining
yourself. If you have encountered a problem when operating on an
archive, however, you may need more information than just an error
message in order to solve the problem. The following options can be
helpful diagnostic tools.
Normally, the ‘--list’ (‘-t’) command to list an archive
prints just the file names (one per line) and the other commands are
silent. When used with most operations, the ‘--verbose’
(‘-v’) option causes tar to print the name of each
file or archive member as it is processed. This and the other options
which make tar print status information can be useful in
monitoring tar.
With ‘--create’ or ‘--extract’, ‘--verbose’ used
once just prints the names of the files or members as they are processed.
Using it twice causes tar to print a longer listing
(See verbose member listing, for the description) for each member.
Since ‘--list’ already prints the names of the members,
‘--verbose’ used once with ‘--list’ causes tar
to print an ‘ls -l’ type listing of the files in the archive.
The following examples both extract members with long list output:
$ tar --extract --file=archive.tar --verbose --verbose $ tar xvvf archive.tar |
Verbose output appears on the standard output except when an archive is
being written to the standard output, as with ‘tar --create
--file=- --verbose’ (‘tar cfv -’, or even ‘tar cv’—if the
installer let standard output be the default archive). In that case
tar writes verbose output to the standard error stream.
If ‘--index-file=file’ is specified, tar sends
verbose output to file rather than to standard output or standard
error.
The ‘--totals’ option causes tar to print on the
standard error the total amount of bytes transferred when processing
an archive. When creating or appending to an archive, this option
prints the number of bytes written to the archive and the average
speed at which they have been written, e.g.:
$ tar -c -f archive.tar --totals /home Total bytes written: 7924664320 (7.4GiB, 85MiB/s) |
When reading an archive, this option displays the number of bytes read:
$ tar -x -f archive.tar --totals Total bytes read: 7924664320 (7.4GiB, 95MiB/s) |
Finally, when deleting from an archive, the ‘--totals’ option displays both numbers plus number of bytes removed from the archive:
$ tar --delete -f foo.tar --totals --wildcards '*~' Total bytes read: 9543680 (9.2MiB, 201MiB/s) Total bytes written: 3829760 (3.7MiB, 81MiB/s) Total bytes deleted: 1474048 |
You can also obtain this information on request. When ‘--totals’ is used with an argument, this argument is interpreted as a symbolic name of a signal, upon delivery of which the statistics is to be printed:
Print statistics upon delivery of signal signo. Valid arguments
are: SIGHUP, SIGQUIT, SIGINT, SIGUSR1 and
SIGUSR2. Shortened names without ‘SIG’ prefix are also
accepted.
Both forms of ‘--totals’ option can be used simultaneously.
Thus, tar -x --totals --totals=USR1 instructs tar to
extract all members from its default archive and print statistics
after finishing the extraction, as well as when receiving signal
SIGUSR1.
The ‘--checkpoint’ option prints an occasional message
as tar reads or writes the archive. It is designed for
those who don't need the more detailed (and voluminous) output of
‘--block-number’ (‘-R’), but do want visual confirmation
that tar is actually making forward progress. By default it
prints a message each 10 records read or written. This can be changed
by giving it a numeric argument after an equal sign:
$ tar -c --checkpoint=1000 /var tar: Write checkpoint 1000 tar: Write checkpoint 2000 tar: Write checkpoint 3000 |
This example shows the default checkpoint message used by
tar. If you place a dot immediately after the equal
sign, it will print a ‘.’ at each checkpoint(7). For example:
$ tar -c --checkpoint=.1000 /var ... |
The ‘--checkpoint’ option provides a flexible mechanism for executing arbitrary actions upon hitting checkpoints, see the next section (see section Checkpoints), for more information on it.
The ‘--show-omitted-dirs’ option, when reading an archive—with ‘--list’ or ‘--extract’, for example—causes a message to be printed for each directory in the archive which is skipped. This happens regardless of the reason for skipping: the directory might not have been named on the command line (implicitly or explicitly), it might be excluded by the use of the ‘--exclude=pattern’ option, or some other reason.
If ‘--block-number’ (‘-R’) is used, tar prints, along with
every message it would normally produce, the block number within the
archive where the message was triggered. Also, supplementary messages
are triggered when reading blocks full of NULs, or when hitting end of
file on the archive. As of now, if the archive if properly terminated
with a NUL block, the reading of the file may stop before end of file
is met, so the position of end of file will not usually show when
‘--block-number’ (‘-R’) is used. Note that GNU tar
drains the archive before exiting when reading the
archive from a pipe.
This option is especially useful when reading damaged archives, since it helps pinpoint the damaged sections. It can also be used with ‘--list’ (‘-t’) when listing a file-system backup tape, allowing you to choose among several backup tapes when retrieving a file later, in favor of the tape where the file appears earliest (closest to the front of the tape). See section Backup options.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A checkpoint is a moment of time before writing nth record to the archive (a write checkpoint), or before reading nth record from the archive (a read checkpoint). Checkpoints allow to periodically execute arbitrary actions.
The checkpoint facility is enabled using the following option:
Schedule checkpoints before writing or reading each nth record. The default value for n is 10.
A list of arbitrary actions can be executed at each checkpoint. These actions include: pausing, displaying textual messages, and executing arbitrary external programs. Actions are defined using the ‘--checkpoint-action’ option.
Execute an action at each checkpoint.
The simplest value of action is ‘echo’. It instructs
tar to display the default message on the standard error
stream upon arriving at each checkpoint. The default message is (in
POSIX locale) ‘Write checkpoint n’, for write
checkpoints, and ‘Read checkpoint n’, for read checkpoints.
Here, n represents ordinal number of the checkpoint.
In another locales, translated versions of this message are used.
This is the default action, so running:
$ tar -c --checkpoint=1000 --checkpoint-action=echo /var |
is equivalent to:
$ tar -c --checkpoint=1000 /var |
The ‘echo’ action also allows to supply a customized message. You do so by placing an equals sign