|
|
1.1 root 1: .\" Copyright (c) 1983 Regents of the University of California.
2: .\" All rights reserved. The Berkeley software License Agreement
3: .\" specifies the terms and conditions for redistribution.
4: .\"
5: .\" @(#)tar5.5 6.2 (Berkeley) 11/7/85
6: .\"
7: .TH TAR 5 "November 7, 1985"
8: .UC 5
9: .SH NAME
10: tar \- tape archive file format
11: .SH DESCRIPTION
12: .IR Tar ,
13: (the tape archive command)
14: dumps several files into one, in a medium suitable for transportation.
15: .PP
16: A ``tar tape'' or file is a series of blocks. Each block is of size TBLOCK.
17: A file on the tape is represented by a header block which describes
18: the file, followed by zero or more blocks which give the contents of the
19: file. At the end of the tape are two blocks filled with binary
20: zeros, as an end-of-file indicator.
21: .PP
22: The blocks are grouped for physical I/O operations. Each group of
23: .I n
24: blocks (where
25: .I n
26: is set by the
27: .B b
28: keyletter on the
29: .IR tar (1)
30: command line \(em default is 20 blocks) is written with a single system
31: call; on nine-track tapes, the result of this write is a single tape
32: record. The last group is always written at the full size, so blocks after
33: the two zero blocks contain random data. On reading, the specified or
34: default group size is used for the
35: first read, but if that read returns less than a full tape block, the reduced
36: block size is used for further reads.
37: .PP
38: The header block looks like:
39: .RS
40: .PP
41: .nf
42: #define TBLOCK 512
43: #define NAMSIZ 100
44:
45: union hblock {
46: char dummy[TBLOCK];
47: struct header {
48: char name[NAMSIZ];
49: char mode[8];
50: char uid[8];
51: char gid[8];
52: char size[12];
53: char mtime[12];
54: char chksum[8];
55: char linkflag;
56: char linkname[NAMSIZ];
57: } dbuf;
58: };
59: .ta \w'#define 'u +\w'SARMAG 'u
60: .fi
61: .RE
62: .LP
63: .IR Name
64: is a null-terminated string.
65: The other fields are zero-filled octal numbers in ASCII. Each field
66: (of width w) contains w-2 digits, a space, and a null, except
67: .IR size
68: and
69: .IR mtime ,
70: which do not contain the trailing null and
71: .IR chksum
72: which has a null followed by a space.
73: .IR Name
74: is the name of the file, as specified on the
75: .I tar
76: command line. Files dumped because they were in a directory which
77: was named in the command line have the directory name as prefix and
78: .I /filename
79: as suffix.
80: . \"Whatever format was used in the command line
81: . \"will appear here, such as
82: . \".I \&./yellow
83: . \"or
84: . \".IR \&../../brick/./road/.. .
85: . \"To retrieve a file from a tar tape, an exact prefix match must be specified,
86: . \"including all of the directory prefix information used on the command line
87: . \"that dumped the file (if any).
88: .IR Mode
89: is the file mode, with the top bit masked off.
90: .IR Uid
91: and
92: .IR gid
93: are the user and group numbers which own the file.
94: .IR Size
95: is the size of the file in bytes. Links and symbolic links are dumped
96: with this field specified as zero.
97: .IR Mtime
98: is the modification time of the file at the time it was dumped.
99: .IR Chksum
100: is an octal ASCII value which represents the sum of all the bytes in the
101: header block. When calculating the checksum, the
102: .IR chksum
103: field is treated as if it were all blanks.
104: .IR Linkflag
105: is NULL if the file is ``normal'' or a special file, ASCII `1'
106: if it is an hard link, and ASCII `2'
107: if it is a symbolic link. The name linked-to, if any, is in
108: .IR linkname,
109: with a trailing null.
110: Unused fields of the header are binary zeros (and are included in the
111: checksum).
112: .PP
113: The first time a given i-node number is dumped, it is dumped as a regular
114: file. The second and subsequent times, it is dumped as a link instead.
115: Upon retrieval, if a link entry is retrieved, but not the file it was
116: linked to, an error message is printed and the tape must be manually
117: re-scanned to retrieve the linked-to file.
118: .PP
119: The encoding of the header is designed to be portable across machines.
120: .SH "SEE ALSO"
121: tar(1)
122: .SH BUGS
123: Names or linknames longer than NAMSIZ produce error reports and cannot be
124: dumped.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.