.\" Copyright (c) 1983 The Regents of the University of California.
.\" %sccs.include.proprietary.man%
.\" @(#)tarformat.5 6.3 (Berkeley) %G%
tar \- tape archive file format
(the tape archive command)
dumps several files into one, in a medium suitable for transportation.
A ``tar tape'' or file is a series of blocks. Each block is of size TBLOCK.
A file on the tape is represented by a header block which describes
the file, followed by zero or more blocks which give the contents of the
file. At the end of the tape are two blocks filled with binary
zeros, as an end-of-file indicator.
The blocks are grouped for physical I/O operations. Each group of
command line \(em default is 20 blocks) is written with a single system
call; on nine-track tapes, the result of this write is a single tape
record. The last group is always written at the full size, so blocks after
the two zero blocks contain random data. On reading, the specified or
default group size is used for the
first read, but if that read returns less than a full tape block, the reduced
block size is used for further reads.
The header block looks like:
.ta \w'#define 'u +\w'SARMAG 'u
is a null-terminated string.
The other fields are zero-filled octal numbers in ASCII. Each field
(of width w) contains w-2 digits, a space, and a null, except
which do not contain the trailing null and
which has a null followed by a space.
is the name of the file, as specified on the
command line. Files dumped because they were in a directory which
was named in the command line have the directory name as prefix and
. \"Whatever format was used in the command line
. \"will appear here, such as
. \".IR \&../../brick/./road/.. .
. \"To retrieve a file from a tar tape, an exact prefix match must be specified,
. \"including all of the directory prefix information used on the command line
. \"that dumped the file (if any).
is the file mode, with the top bit masked off.
are the user and group numbers which own the file.
is the size of the file in bytes. Links and symbolic links are dumped
with this field specified as zero.
is the modification time of the file at the time it was dumped.
is an octal ASCII value which represents the sum of all the bytes in the
header block. When calculating the checksum, the
field is treated as if it were all blanks.
is NULL if the file is ``normal'' or a special file, ASCII `1'
if it is an hard link, and ASCII `2'
if it is a symbolic link. The name linked-to, if any, is in
Unused fields of the header are binary zeros (and are included in the
The first time a given i-node number is dumped, it is dumped as a regular
file. The second and subsequent times, it is dumped as a link instead.
Upon retrieval, if a link entry is retrieved, but not the file it was
linked to, an error message is printed and the tape must be manually
re-scanned to retrieve the linked-to file.
The encoding of the header is designed to be portable across machines.
Names or linknames longer than NAMSIZ produce error reports and cannot be