Home
        <a name=

tar

Tape ARchiver, store, list or extract files in an archive.

SYNTAX
       tar [[-]function] [options] filenames...

       tar [[-]function] [options] -C directory-name...

   Command-line arguments that specify files to add to, extract from,
   or list from an archive may  be given as shell pattern matching strings.

FUNCTIONS
       Exactly one of the following functions must be specified.
       (append, create, difference, replace, table of contents, update, and extract)

     -A
     --catenate
     --concatenate  Append the contents of named file, which must itself be a
		    gnutar archive, to the end of the archive (erasing the old
		    end-of-archive block).  This has the effect of adding the
		    files contained in the named file to the first archive,
		    rather than adding the second archive as an element of the
		    first.  Note: This option requires a rewritable tarfile,
		    and therefore does not work on quarter-inch cartridge
		    tapes.  (see notes below)
     -c
     --create	    Create a new archive (or truncates an old one) and writes
		    the named files to it.
     -d
     --diff
     --compare	    Find differences between files in the archive and corre-
		    sponding files in the file system.

     --delete	    Delete named files from the archive.  (Does not work on
		    quarter-inch tapes).
     -r
     --append	    Append files to the end of an archive.  (Does not work on
		    quarter-inch tapes).
     -t
     --list	    List the contents of an archive; if filename arguments are
		    given, only those files are listed, otherwise the entire
		    table of contents is listed.
     -u
     --update	    Append the named files if the on-disk version has a modi-
		    fication date more recent than their copy in the archive
		    (if any).  Does not work on quarter-inch tapes.
     -x
     --extract
     --get	    Extract files from an archive.  The owner, modification
		    time, and file permissions are restored, if possible.  If
		    no file arguments are given, extract all the files in the
		    archive.  If a filename argument matches the name of a
		    directory on the tape, that directory and its contents are
		    extracted (as well as all directories under that direc-
		    tory).  If the archive contains multiple entries corre-
		    sponding to the same file (see the --append command
		    above), the last one extracted will overwrite all earlier
		    versions.

You can specify an argument for the `--file=ARCHIVE-NAME' (`-f ARCHIVE-NAME') option whenever you use `tar'; this option determines the name of the archive file that `tar' will work on.

If you don't specify this argument, then `tar' will use a default, usually some physical tape drive attached to your machine. If there is no tape drive attached, or the default is not meaningful, then `tar' will print an error message. The error message might look roughly like one of the following:

     tar: can't open /dev/rmt8 : No such device or address
     tar: can't open /dev/rsmt0 : I/O error

To avoid confusion, we recommend that you always specify an archive file name by using `--file=ARCHIVE-NAME' (`-f ARCHIVE-NAME') when writing your `tar' commands.

     --verbose' (`-v') shows details about the results of running `tar'.

This can be especially useful when the results might not be obvious. For example, if you want to see the progress of `tar' as it writes files into the archive, you can use the `--verbose' option. In the beginning, you may find it useful to use `--verbose' at all times; when you are more accustomed to `tar', you will likely want to use it at certain times but not at others.

Sometimes, a single instance of `--verbose' on the command line will show a full, `ls' style listing of an archive or files, giving sizes, owners, and similar information. Other times, `--verbose' will only show files or members that the particular operation is operating on at the time. In the latter case, you can use `--verbose' twice in a command to get a listing such as that in the former case.

OPTIONS

`--absolute-names'
`-P'
     Normally when creating an archive, `tar' strips an initial `/' from
     member names.  This option disables that behavior.

`--after-date'
     (See `--newer'.)

`--atime-preserve'
     Tells `tar' to preserve the access time field in a file's inode
     when dumping it.

`--backup=BACKUP-TYPE'
     Rather than deleting files from the file system, `tar' will back
     them up using simple or numbered backups, depending upon
     BACKUP-TYPE.

`--block-number'
`-R'
     With this option present, `tar' prints error messages for read
     errors with the block number in the archive file.

`--blocking-factor=BLOCKING'
`-b BLOCKING'
     Sets the blocking factor `tar' uses to BLOCKING x 512 bytes per
     record.

`--bzip2'
`-I'
     This option tells `tar' to read or write archives through `bzip2'.

`--checkpoint'
     This option directs `tar' to print periodic checkpoint messages as
     it reads through the archive.  Its intended for when you want a
     visual indication that `tar' is still running, but don't want to
     see `--verbose' output.

`--compress'
`--uncompress'
`-Z'
     `tar' will use the `compress' program when reading or writing the
     archive.  This allows you to directly act on archives while saving
     space.

`--confirmation'
     (See `--interactive'.)

`--dereference'
`-h'
     When creating a `tar' archive, `tar' will archive the file that a
     symbolic link points to, rather than archiving the symlink.

`--directory=DIR'
`-C DIR'
     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.

`--exclude=PATTERN'
     When performing operations, `tar' will skip files that match
     PATTERN.

`--exclude-from=FILE'
`-X FILE'
     Similar to `--exclude', except `tar' will use the list of patterns
     in the file FILE.

`--file=ARCHIVE'
`-f ARCHIVE'
     `tar' will use the file ARCHIVE as the `tar' archive it performs
     operations on, rather than `tar''s compilation dependent default.

`--files-from=FILE'
`-T FILE'
     `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.

`--force-local'
     Forces `tar' to interpret the filename given to `--file' as a local
     file, even if it looks like a remote tape drive name.

`--group=GROUP'
     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.

     Also see the comments for the `--owner=USER' option.

`--gzip'
`--gunzip'
`--ungzip'
`-z'
     This option tells `tar' to read or write archives through `gzip',
     allowing `tar' to directly operate on several kinds of compressed
     archives transparently.

`--help'
     `tar' will print out a short message summarizing the operations and
     options to `tar' and exit.

`--ignore-failed-read'
     Instructs `tar' to exit successfully if it encounters an
     unreadable file. 

`--ignore-umask'
     (See `--preserve-permissions'; *note Writing::..)

`--ignore-zeros'
`-i'
     With this option, `tar' will ignore zeroed blocks in the archive,
     which normally signals EOF.  *Note Reading::.

`--incremental'
`-G'
     Used to inform `tar' that it is working with an  old GNU-format
     incremental backup archive.  It is intended primarily for backwards
     compatibility only.

`--info-script=SCRIPT-FILE'
`--new-volume-script=SCRIPT-FILE'
`-F SCRIPT-FILE'
     When `tar' is performing multi-tape backups, SCRIPT-FILE is run at
     the end of each tape.

`--interactive'
`--confirmation'
`-w'
     Specifies that `tar' should ask the user for confirmation before
     performing potentially destructive options, such as overwriting
     files.

`--keep-old-files'
`-k'
     When extracting files from an archive, `tar' will not overwrite
     existing files if this option is present.  *Note Writing::.

`--label=NAME'
`-V NAME'
     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.

`--listed-incremental=SNAPSHOT-FILE'
`-g SNAPSHOT-FILE'
     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.

`--mode=PERMISSIONS'
     When adding files to an archive, `tar' will use PERMISSIONS for
     the archive members, rather than the permissions from the files.
     The program `chmod' and this `tar' option share the same syntax
     for what PERMISSIONS might be.  *Note Permissions: (fileutils)File
     permissions.  This reference also has useful information for those
     not being overly familiar with the Unix permission system.

     Of course, PERMISSIONS might be plainly specified as an octal
     number.  However, by using generic symbolic modifications to mode
     bits, this allows more flexibility.  For example, the value `a+rw'
     adds read and write permissions for everybody, while retaining
     executable bits on directories or on any other file already marked
     as executable.

`--multi-volume'
`-M'
     Informs `tar' that it should create or otherwise operate on a
     multi-volume `tar' archive.

`--new-volume-script'
     (see -info-script)

`--newer=DATE'
`--after-date=DATE'
`-N'
     When creating an archive, `tar' will only add files that have
     changed since DATE.

`--newer-mtime'
     In conjunction with `--newer', `tar' will only add files whose
     contents have changed (as opposed to just `--newer', which will
     also back up files for which any status information has changed).

`--no-recursion'
     With this option, `tar' will not recurse into directories unless a
     directory is explicitly named as an argument to `tar'.

`--null'
     When `tar' is using the `--files-from' option, this option
     instructs `tar' to expect filenames terminated with `NUL', so
     `tar' can correctly work with file names that contain newlines.

`--numeric-owner'
     This option will notify `tar' that it should use numeric user and
     group IDs when creating a `tar' file, rather than names.

`--old-archive'
     (See `--portability'.)

`--one-file-system'
`-l'
     Used when creating an archive.  Prevents `tar' from recursing into
     directories that are on different file systems from the current
     directory.

`--owner=USER'
     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.

     There is no value indicating a missing number, and `0' usually
     means `root'.  Some people like to force `0' as the value to offer
     in their distributions for the owner of files, because the `root'
     user is anonymous anyway, so that might as well be the owner of
     anonymous archives.

`--portability'
`--old-archive'
`-o'
     Tells `tar' to create an archive that is compatible with Unix V7
     `tar'.

`--posix'
     Instructs `tar' to create a POSIX compliant `tar' archive.

`--preserve'
     Synonymous with specifying both `--preserve-permissions' and
     `--same-order'.

`--preserve-order'
     (See `--same-order'; *note Reading::..)

`--preserve-permissions'
`--same-permissions'
`-p'
     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.  *Note Writing::.

`--read-full-records'
`-B'
     Specifies that `tar' should reblock its input, for reading from
     pipes on systems with buggy implementations.  *Note Reading::.

`--record-size=SIZE'
     Instructs `tar' to use SIZE bytes per record when accessing the
     archive.

`--recursive-unlink'
     Similar to the `--unlink-first' option, removing existing
     directory hierarchies before extracting directories of the same
     name from the archive.  *Note Writing::.

`--remove-files'
     Directs `tar' to remove the source file from the file system after
     appending it to an archive.

`--rsh-command=CMD'
     Notifies `tar' that is should use CMD to communicate with remote
     devices.

`--same-order'
`--preserve-order'
`-s'
     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.  *Note Reading::.

`--same-owner'
     When extracting an archive, `tar' will attempt to preserve the
     owner specified in the `tar' archive with this option present.

`--same-permissions'
     (See `--preserve-permissions'; *note Writing::..)

`--show-omitted-dirs'
     Instructs `tar' to mention directories its skipping over when
     operating on a `tar' archive.

`--sparse'
`-S'
     Invokes a GNU extension when adding files to an archive that
     handles sparse files efficiently.

`--starting-file=NAME'
`-K NAME'
     This option affects extraction only; `tar' will skip extracting
     files in the archive until it finds one that matches NAME.  *Note
     Scarce::.

`--suffix=SUFFIX'
     Alters the suffix `tar' uses when backing up files from the default
     `~'.

`--tape-length=NUM'
`-L NUM'
     Specifies the length of tapes that `tar' is writing as being
     NUM x 1024 bytes long.

`--to-stdout'
`-O'
     During extraction, `tar' will extract files to stdout rather than
     to the file system.  *Note Writing::.

`--totals'
     Displays the total number of bytes written after creating an
     archive.

`--touch'
`-m'
     Sets the modification time of extracted files to the extraction
     time, rather than the modification time stored in the archive.
     *Note Writing::.

`--uncompress'
     (See `--compress'.)

`--ungzip'
     (See `--gzip'.)

`--unlink-first'
`-U'
     Directs `tar' to remove the corresponding file from the file system
     before extracting it from the archive.  *Note Writing::.

`--use-compress-program=PROG'
     Instructs `tar' to access the archive through PROG, which is
     presumed to be a compression program of some sort.

`--verbose'
`-v'
     Specifies that `tar' should be more verbose about the operations
     its performing.  This option can be specified multiple times for
     some operations to increase the amount of information displayed.

`--verify'
`-W'
     Verifies that the archive was correctly written when creating an
     archive.

`--version'
     `tar' will print an informational message about what version it is
     and a copyright message, some credits, and then exit.

`--volno-file=FILE'
     Used in conjunction with `--multi-volume'.  `tar' will keep track
     of which volume of a multi-volume archive its working in FILE.

Example

To tar and zip a file (the function used is in bold)

  tar -czvf MyArchive Source_file 
or
  tar --create --gzip --verbose --file=MyArchive Source_file

The reverse process to extract the file

  tar -xzvf MyArchive Source_file 
or
  tar --extract --gunzip --verbose --file=MyArchive Source_file

Notes
The -C feature does not work like historical gnutar programs, and is probably untrustworthy.

The -A command should work to join an arbitrary number of gnutar archives together, but it does not; attempting to do so leaves the end-of-archive blocks in place for the second and subsequent archives.

The gnutar file format is a semi fixed width field format, and the field for device numbers were designed for 16 bit (8 major, 8 minor) and can not absorb our 32 bit (8 major, 16+8 minor) numbers.

"Of all forms of caution, caution in love is perhaps the most fatal to true happiness" - Bertrand Russell

Related commands:

gzip - Compress or decompress named file(s)
rman - Oracle Recovery Manager
sum - Print a checksum for a file
unshar - Unpack shell archive scripts