tar(5)tar(5)Name
tar, mdtar - tape archive file format
Description
The tape archive command dumps several files, including special files,
into one, in a medium suitable for transportation.
A 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 n
blocks (where n is set by the option on the command line, and the
default is 20 blocks) is written with a single system call; on 9-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 following is an example of a header block:
#define TBLOCK 512
#define NAMSIZ 100
union hblock {
char dummy[TBLOCK];
struct header {
char name[NAMSIZ];
char mode[8];
char uid[8];
char gid[8];
char size[12];
char mtime[12];
char chksum[8];
char linkflag;
char linkname[NAMSIZ];
char rdev[6]
} dbuf;
};
Digital extensions to handle multivolume archives are located in
The name field is a null-terminated string. The other fields are
0-filled octal numbers in ASCII. Each field (of width w) contains w
minus 2 digits, a space, and a null, except size and mtime , which do
not contain the trailing null. The name field specifies the name of
the file, as specified on the command line. Files dumped because they
were in a directory that was named in the command line have the direc‐
tory name as prefix and /filename as suffix. The field specifies the
file mode, with the top bit masked off. The uid and gid fields specify
the user and group numbers that own the file. The size field specifies
the size of the file in bytes. Links and symbolic links are dumped
with this field specified as zero. The mtime field specifies the modi‐
fication time of the file at the time it was dumped. The chksum field
is a decimal ASCII value, which represents the sum of all the bytes in
the header block. When calculating the checksum, the chksum field is
treated as if it were all blanks. The linkflag field is ASCII 0 if the
file is normal or a special file and ASCII 1 if it is a hard link, and
ASCII 2 if it is a symbolic link. The name to which it is linked, if
any, is in linkname, with a trailing null. Unused fields of the header
are binary zeros and are included in the checksum. The rdev field
encodes the ASCII representation of a device special file's major and
minor device numbers.
The first time a given i-node number is dumped, it is dumped as a regu‐
lar 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 rescanned to retrieve the linked file.
The encoding of the header is designed to be portable across machines.
Restrictions
Names or link names longer than NAMSIZ produce error reports and cannot
be dumped.
The BSD format does not handle multi-volume conditions. The Digital
archive extension for multi-volume is described in
See Alsotar(1)tar(5)