diff options
| author | Denis Vlasenko <vda.linux@googlemail.com> | 2006-11-26 17:07:38 +0000 |
|---|---|---|
| committer | Denis Vlasenko <vda.linux@googlemail.com> | 2006-11-26 17:07:38 +0000 |
| commit | ec0c920a78813d1c047924e024017189dedeec93 (patch) | |
| tree | f81c31d8cb7c0a1e1cad6464e2c69578b74befb6 /docs | |
| parent | 664733f1a3cfedbb4cde3815b61d9b87dcc42387 (diff) | |
| download | busybox-w32-ec0c920a78813d1c047924e024017189dedeec93.tar.gz busybox-w32-ec0c920a78813d1c047924e024017189dedeec93.tar.bz2 busybox-w32-ec0c920a78813d1c047924e024017189dedeec93.zip | |
added small doc about tar 'pax header' format
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/tar_pax.txt | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/docs/tar_pax.txt b/docs/tar_pax.txt new file mode 100644 index 000000000..8a3f1e755 --- /dev/null +++ b/docs/tar_pax.txt | |||
| @@ -0,0 +1,239 @@ | |||
| 1 | 'pax headers' is POSIX 2003 (iirc) addition designed to fix | ||
| 2 | tar format limitations - older tar format has fixed fields | ||
| 3 | for everything (filename, uid, filesize etc) which can overflow. | ||
| 4 | |||
| 5 | pax Header Block | ||
| 6 | |||
| 7 | The pax header block shall be identical to the ustar header block | ||
| 8 | described in ustar Interchange Format, except that two additional | ||
| 9 | typeflag values are defined: | ||
| 10 | |||
| 11 | x | ||
| 12 | Represents extended header records for the following file in | ||
| 13 | the archive (which shall have its own ustar header block). | ||
| 14 | |||
| 15 | g | ||
| 16 | Represents global extended header records for the following | ||
| 17 | files in the archive. Each value shall affect all subsequent files | ||
| 18 | that do not override that value in their own extended header | ||
| 19 | record and until another global extended header record is reached | ||
| 20 | that provides another value for the same field. The typeflag g | ||
| 21 | global headers should not be used with interchange media that | ||
| 22 | could suffer partial data loss in transporting the archive. | ||
| 23 | |||
| 24 | For both of these types, the size field shall be the size of the | ||
| 25 | extended header records in octets. The other fields in the header | ||
| 26 | block are not meaningful to this version of the pax utility. | ||
| 27 | However, if this archive is read by a pax utility conforming to | ||
| 28 | the ISO POSIX-2:1993 standard, the header block fields are used to | ||
| 29 | create a regular file that contains the extended header records as | ||
| 30 | data. Therefore, header block field values should be selected to | ||
| 31 | provide reasonable file access to this regular file. | ||
| 32 | |||
| 33 | A further difference from the ustar header block is that data | ||
| 34 | blocks for files of typeflag 1 (the digit one) (hard link) may be | ||
| 35 | included, which means that the size field may be greater than | ||
| 36 | zero. | ||
| 37 | |||
| 38 | pax Extended Header | ||
| 39 | |||
| 40 | An extended header shall consist of one or more records, each | ||
| 41 | constructed as follows: | ||
| 42 | |||
| 43 | "%d %s=%s\n", <length>, <keyword>, <value> | ||
| 44 | |||
| 45 | The <length> field shall be the decimal length of the extended | ||
| 46 | header record in octets, including length string itself and the | ||
| 47 | trailing <newline>. | ||
| 48 | |||
| 49 | [skip] | ||
| 50 | |||
| 51 | atime | ||
| 52 | The file access time for the following file(s), equivalent to | ||
| 53 | the value of the st_atime member of the stat structure for a file, | ||
| 54 | as described by the stat() function. The access time shall be | ||
| 55 | restored if the process has the appropriate privilege required to | ||
| 56 | do so. The format of the <value> shall be as described in pax | ||
| 57 | Extended Header File Times. | ||
| 58 | |||
| 59 | charset | ||
| 60 | The name of the character set used to encode the data in the | ||
| 61 | following file(s). | ||
| 62 | |||
| 63 | The encoding is included in an extended header for information | ||
| 64 | only; when pax is used as described in IEEE Std 1003.1-2001, it | ||
| 65 | shall not translate the file data into any other encoding. The | ||
| 66 | BINARY entry indicates unencoded binary data. | ||
| 67 | |||
| 68 | When used in write or copy mode, it is implementation-defined | ||
| 69 | whether pax includes a charset extended header record for a file. | ||
| 70 | |||
| 71 | comment | ||
| 72 | A series of characters used as a comment. All characters in | ||
| 73 | the <value> field shall be ignored by pax. | ||
| 74 | |||
| 75 | gid | ||
| 76 | The group ID of the group that owns the file, expressed as a | ||
| 77 | decimal number using digits from the ISO/IEC 646:1991 standard. | ||
| 78 | This record shall override the gid field in the following header | ||
| 79 | block(s). When used in write or copy mode, pax shall include a gid | ||
| 80 | extended header record for each file whose group ID is greater | ||
| 81 | than 2097151 (octal 7777777). | ||
| 82 | |||
| 83 | gname | ||
| 84 | The group of the file(s), formatted as a group name in the | ||
| 85 | group database. This record shall override the gid and gname | ||
| 86 | fields in the following header block(s), and any gid extended | ||
| 87 | header record. When used in read, copy, or list mode, pax shall | ||
| 88 | translate the name from the UTF-8 encoding in the header record to | ||
| 89 | the character set appropriate for the group database on the | ||
| 90 | receiving system. If any of the UTF-8 characters cannot be | ||
| 91 | translated, and if the -o invalid= UTF-8 option is not specified, | ||
| 92 | the results are implementation-defined. When used in write or copy | ||
| 93 | mode, pax shall include a gname extended header record for each | ||
| 94 | file whose group name cannot be represented entirely with the | ||
| 95 | letters and digits of the portable character set. | ||
| 96 | |||
| 97 | linkpath | ||
| 98 | The pathname of a link being created to another file, of any | ||
| 99 | type, previously archived. This record shall override the linkname | ||
| 100 | field in the following ustar header block(s). The following ustar | ||
| 101 | header block shall determine the type of link created. If typeflag | ||
| 102 | of the following header block is 1, it shall be a hard link. If | ||
| 103 | typeflag is 2, it shall be a symbolic link and the linkpath value | ||
| 104 | shall be the contents of the symbolic link. The pax utility shall | ||
| 105 | translate the name of the link (contents of the symbolic link) | ||
| 106 | from the UTF-8 encoding to the character set appropriate for the | ||
| 107 | local file system. When used in write or copy mode, pax shall | ||
| 108 | include a linkpath extended header record for each link whose | ||
| 109 | pathname cannot be represented entirely with the members of the | ||
| 110 | portable character set other than NUL. | ||
| 111 | |||
| 112 | mtime | ||
| 113 | The file modification time of the following file(s), | ||
| 114 | equivalent to the value of the st_mtime member of the stat | ||
| 115 | structure for a file, as described in the stat() function. This | ||
| 116 | record shall override the mtime field in the following header | ||
| 117 | block(s). The modification time shall be restored if the process | ||
| 118 | has the appropriate privilege required to do so. The format of the | ||
| 119 | <value> shall be as described in pax Extended Header File Times. | ||
| 120 | |||
| 121 | path | ||
| 122 | The pathname of the following file(s). This record shall | ||
| 123 | override the name and prefix fields in the following header | ||
| 124 | block(s). The pax utility shall translate the pathname of the file | ||
| 125 | from the UTF-8 encoding to the character set appropriate for the | ||
| 126 | local file system. | ||
| 127 | |||
| 128 | When used in write or copy mode, pax shall include a path | ||
| 129 | extended header record for each file whose pathname cannot be | ||
| 130 | represented entirely with the members of the portable character | ||
| 131 | set other than NUL. | ||
| 132 | |||
| 133 | realtime.any | ||
| 134 | The keywords prefixed by "realtime." are reserved for future | ||
| 135 | standardization. | ||
| 136 | |||
| 137 | security.any | ||
| 138 | The keywords prefixed by "security." are reserved for future | ||
| 139 | standardization. | ||
| 140 | |||
| 141 | size | ||
| 142 | The size of the file in octets, expressed as a decimal number | ||
| 143 | using digits from the ISO/IEC 646:1991 standard. This record shall | ||
| 144 | override the size field in the following header block(s). When | ||
| 145 | used in write or copy mode, pax shall include a size extended | ||
| 146 | header record for each file with a size value greater than | ||
| 147 | 8589934591 (octal 77777777777). | ||
| 148 | |||
| 149 | uid | ||
| 150 | The user ID of the file owner, expressed as a decimal number | ||
| 151 | using digits from the ISO/IEC 646:1991 standard. This record shall | ||
| 152 | override the uid field in the following header block(s). When used | ||
| 153 | in write or copy mode, pax shall include a uid extended header | ||
| 154 | record for each file whose owner ID is greater than 2097151 (octal | ||
| 155 | 7777777). | ||
| 156 | |||
| 157 | uname | ||
| 158 | The owner of the following file(s), formatted as a user name | ||
| 159 | in the user database. This record shall override the uid and uname | ||
| 160 | fields in the following header block(s), and any uid extended | ||
| 161 | header record. When used in read, copy, or list mode, pax shall | ||
| 162 | translate the name from the UTF-8 encoding in the header record to | ||
| 163 | the character set appropriate for the user database on the | ||
| 164 | receiving system. If any of the UTF-8 characters cannot be | ||
| 165 | translated, and if the -o invalid= UTF-8 option is not specified, | ||
| 166 | the results are implementation-defined. When used in write or copy | ||
| 167 | mode, pax shall include a uname extended header record for each | ||
| 168 | file whose user name cannot be represented entirely with the | ||
| 169 | letters and digits of the portable character set. | ||
| 170 | |||
| 171 | If the <value> field is zero length, it shall delete any header | ||
| 172 | block field, previously entered extended header value, or global | ||
| 173 | extended header value of the same name. | ||
| 174 | |||
| 175 | If a keyword in an extended header record (or in a -o | ||
| 176 | option-argument) overrides or deletes a corresponding field in the | ||
| 177 | ustar header block, pax shall ignore the contents of that header | ||
| 178 | block field. | ||
| 179 | |||
| 180 | Unlike the ustar header block fields, NULs shall not delimit | ||
| 181 | <value>s; all characters within the <value> field shall be | ||
| 182 | considered data for the field. None of the length limitations of | ||
| 183 | the ustar header block fields in ustar Header Block shall apply to | ||
| 184 | the extended header records. | ||
| 185 | |||
| 186 | pax Extended Header File Times | ||
| 187 | |||
| 188 | Time records shall be formatted as a decimal representation of the | ||
| 189 | time in seconds since the Epoch. If a period ( '.' ) decimal point | ||
| 190 | character is present, the digits to the right of the point shall | ||
| 191 | represent the units of a subsecond timing granularity. In read or | ||
| 192 | copy mode, the pax utility shall truncate the time of a file to | ||
| 193 | the greatest value that is not greater than the input header | ||
| 194 | file time. In write or copy mode, the pax utility shall output a | ||
| 195 | time exactly if it can be represented exactly as a decimal number, | ||
| 196 | and otherwise shall generate only enough digits so that the same | ||
| 197 | time shall be recovered if the file is extracted on a system whose | ||
| 198 | underlying implementation supports the same time granularity. | ||
| 199 | |||
| 200 | Example from Linux kernel archive tarball: | ||
| 201 | |||
| 202 | 00000000 70 61 78 5f 67 6c 6f 62 61 6c 5f 68 65 61 64 65 |pax_global_heade| | ||
| 203 | 00000010 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |r...............| | ||
| 204 | 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 205 | 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 206 | 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 207 | 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 208 | 00000060 00 00 00 00 30 30 30 30 36 36 36 00 30 30 30 30 |....0000666.0000| | ||
| 209 | 00000070 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 |000.0000000.0000| | ||
| 210 | 00000080 30 30 30 30 30 36 34 00 30 30 30 30 30 30 30 30 |0000064.00000000| | ||
| 211 | 00000090 30 30 30 00 30 30 31 34 30 35 33 00 67 00 00 00 |000.0014053.g...| | ||
| 212 | 000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 213 | 000000b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 214 | 000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 215 | 000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 216 | 000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 217 | 000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 218 | 00000100 00 75 73 74 61 72 00 30 30 67 69 74 00 00 00 00 |.ustar.00git....| | ||
| 219 | 00000110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 220 | 00000120 00 00 00 00 00 00 00 00 00 67 69 74 00 00 00 00 |.........git....| | ||
| 221 | 00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 222 | 00000140 00 00 00 00 00 00 00 00 00 30 30 30 30 30 30 30 |.........0000000| | ||
| 223 | 00000150 00 30 30 30 30 30 30 30 00 00 00 00 00 00 00 00 |.0000000........| | ||
| 224 | 00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 225 | 00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 226 | 00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 227 | 00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 228 | 000001a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 229 | 000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 230 | 000001c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 231 | 000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 232 | 000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 233 | 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 234 | 00000200 35 32 20 63 6f 6d 6d 65 6e 74 3d 62 31 30 35 30 |52 comment=b1050| | ||
| 235 | 00000210 32 62 32 32 61 31 32 30 39 64 36 62 34 37 36 33 |2b22a1209d6b4763| | ||
| 236 | 00000220 39 64 38 38 62 38 31 32 62 32 31 66 62 35 39 34 |9d88b812b21fb594| | ||
| 237 | 00000230 39 65 34 0a 00 00 00 00 00 00 00 00 00 00 00 00 |9e4.............| | ||
| 238 | 00000240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 239 | ... | ||
