123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- 'pax headers' is POSIX 2003 (iirc) addition designed to fix
- tar format limitations - older tar format has fixed fields
- for everything (filename, uid, filesize etc) which can overflow.
- pax Header Block
- The pax header block shall be identical to the ustar header block
- described in ustar Interchange Format, except that two additional
- typeflag values are defined:
- x
- Represents extended header records for the following file in
- the archive (which shall have its own ustar header block).
- g
- Represents global extended header records for the following
- files in the archive. Each value shall affect all subsequent files
- that do not override that value in their own extended header
- record and until another global extended header record is reached
- that provides another value for the same field. The typeflag g
- global headers should not be used with interchange media that
- could suffer partial data loss in transporting the archive.
- For both of these types, the size field shall be the size of the
- extended header records in octets. The other fields in the header
- block are not meaningful to this version of the pax utility.
- However, if this archive is read by a pax utility conforming to
- the ISO POSIX-2:1993 standard, the header block fields are used to
- create a regular file that contains the extended header records as
- data. Therefore, header block field values should be selected to
- provide reasonable file access to this regular file.
- A further difference from the ustar header block is that data
- blocks for files of typeflag 1 (the digit one) (hard link) may be
- included, which means that the size field may be greater than
- zero.
- pax Extended Header
- An extended header shall consist of one or more records, each
- constructed as follows:
- "%d %s=%s\n", <length>, <keyword>, <value>
- The <length> field shall be the decimal length of the extended
- header record in octets, including length string itself and the
- trailing <newline>.
- [skip]
- atime
- The file access time for the following file(s), equivalent to
- the value of the st_atime member of the stat structure for a file,
- as described by the stat() function. The access time shall be
- restored if the process has the appropriate privilege required to
- do so. The format of the <value> shall be as described in pax
- Extended Header File Times.
- charset
- The name of the character set used to encode the data in the
- following file(s).
- The encoding is included in an extended header for information
- only; when pax is used as described in IEEE Std 1003.1-2001, it
- shall not translate the file data into any other encoding. The
- BINARY entry indicates unencoded binary data.
- When used in write or copy mode, it is implementation-defined
- whether pax includes a charset extended header record for a file.
- comment
- A series of characters used as a comment. All characters in
- the <value> field shall be ignored by pax.
- gid
- The group ID of the group that owns the file, expressed as a
- decimal number using digits from the ISO/IEC 646:1991 standard.
- This record shall override the gid field in the following header
- block(s). When used in write or copy mode, pax shall include a gid
- extended header record for each file whose group ID is greater
- than 2097151 (octal 7777777).
- gname
- The group of the file(s), formatted as a group name in the
- group database. This record shall override the gid and gname
- fields in the following header block(s), and any gid extended
- header record. When used in read, copy, or list mode, pax shall
- translate the name from the UTF-8 encoding in the header record to
- the character set appropriate for the group database on the
- receiving system. If any of the UTF-8 characters cannot be
- translated, and if the -o invalid= UTF-8 option is not specified,
- the results are implementation-defined. When used in write or copy
- mode, pax shall include a gname extended header record for each
- file whose group name cannot be represented entirely with the
- letters and digits of the portable character set.
- linkpath
- The pathname of a link being created to another file, of any
- type, previously archived. This record shall override the linkname
- field in the following ustar header block(s). The following ustar
- header block shall determine the type of link created. If typeflag
- of the following header block is 1, it shall be a hard link. If
- typeflag is 2, it shall be a symbolic link and the linkpath value
- shall be the contents of the symbolic link. The pax utility shall
- translate the name of the link (contents of the symbolic link)
- from the UTF-8 encoding to the character set appropriate for the
- local file system. When used in write or copy mode, pax shall
- include a linkpath extended header record for each link whose
- pathname cannot be represented entirely with the members of the
- portable character set other than NUL.
- mtime
- The file modification time of the following file(s),
- equivalent to the value of the st_mtime member of the stat
- structure for a file, as described in the stat() function. This
- record shall override the mtime field in the following header
- block(s). The modification time shall be restored if the process
- has the appropriate privilege required to do so. The format of the
- <value> shall be as described in pax Extended Header File Times.
- path
- The pathname of the following file(s). This record shall
- override the name and prefix fields in the following header
- block(s). The pax utility shall translate the pathname of the file
- from the UTF-8 encoding to the character set appropriate for the
- local file system.
- When used in write or copy mode, pax shall include a path
- extended header record for each file whose pathname cannot be
- represented entirely with the members of the portable character
- set other than NUL.
- realtime.any
- The keywords prefixed by "realtime." are reserved for future
- standardization.
- security.any
- The keywords prefixed by "security." are reserved for future
- standardization.
- size
- The size of the file in octets, expressed as a decimal number
- using digits from the ISO/IEC 646:1991 standard. This record shall
- override the size field in the following header block(s). When
- used in write or copy mode, pax shall include a size extended
- header record for each file with a size value greater than
- 8589934591 (octal 77777777777).
- uid
- The user ID of the file owner, expressed as a decimal number
- using digits from the ISO/IEC 646:1991 standard. This record shall
- override the uid field in the following header block(s). When used
- in write or copy mode, pax shall include a uid extended header
- record for each file whose owner ID is greater than 2097151 (octal
- 7777777).
- uname
- The owner of the following file(s), formatted as a user name
- in the user database. This record shall override the uid and uname
- fields in the following header block(s), and any uid extended
- header record. When used in read, copy, or list mode, pax shall
- translate the name from the UTF-8 encoding in the header record to
- the character set appropriate for the user database on the
- receiving system. If any of the UTF-8 characters cannot be
- translated, and if the -o invalid= UTF-8 option is not specified,
- the results are implementation-defined. When used in write or copy
- mode, pax shall include a uname extended header record for each
- file whose user name cannot be represented entirely with the
- letters and digits of the portable character set.
- If the <value> field is zero length, it shall delete any header
- block field, previously entered extended header value, or global
- extended header value of the same name.
- If a keyword in an extended header record (or in a -o
- option-argument) overrides or deletes a corresponding field in the
- ustar header block, pax shall ignore the contents of that header
- block field.
- Unlike the ustar header block fields, NULs shall not delimit
- <value>s; all characters within the <value> field shall be
- considered data for the field. None of the length limitations of
- the ustar header block fields in ustar Header Block shall apply to
- the extended header records.
- pax Extended Header File Times
- Time records shall be formatted as a decimal representation of the
- time in seconds since the Epoch. If a period ( '.' ) decimal point
- character is present, the digits to the right of the point shall
- represent the units of a subsecond timing granularity. In read or
- copy mode, the pax utility shall truncate the time of a file to
- the greatest value that is not greater than the input header
- file time. In write or copy mode, the pax utility shall output a
- time exactly if it can be represented exactly as a decimal number,
- and otherwise shall generate only enough digits so that the same
- time shall be recovered if the file is extracted on a system whose
- underlying implementation supports the same time granularity.
- Example from Linux kernel archive tarball:
- 00000000 70 61 78 5f 67 6c 6f 62 61 6c 5f 68 65 61 64 65 |pax_global_heade|
- 00000010 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |r...............|
- 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 00000060 00 00 00 00 30 30 30 30 36 36 36 00 30 30 30 30 |....0000666.0000|
- 00000070 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 |000.0000000.0000|
- 00000080 30 30 30 30 30 36 34 00 30 30 30 30 30 30 30 30 |0000064.00000000|
- 00000090 30 30 30 00 30 30 31 34 30 35 33 00 67 00 00 00 |000.0014053.g...|
- 000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 000000b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 00000100 00 75 73 74 61 72 00 30 30 67 69 74 00 00 00 00 |.ustar.00git....|
- 00000110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 00000120 00 00 00 00 00 00 00 00 00 67 69 74 00 00 00 00 |.........git....|
- 00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 00000140 00 00 00 00 00 00 00 00 00 30 30 30 30 30 30 30 |.........0000000|
- 00000150 00 30 30 30 30 30 30 30 00 00 00 00 00 00 00 00 |.0000000........|
- 00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 000001a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 000001c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 00000200 35 32 20 63 6f 6d 6d 65 6e 74 3d 62 31 30 35 30 |52 comment=b1050|
- 00000210 32 62 32 32 61 31 32 30 39 64 36 62 34 37 36 33 |2b22a1209d6b4763|
- 00000220 39 64 38 38 62 38 31 32 62 32 31 66 62 35 39 34 |9d88b812b21fb594|
- 00000230 39 65 34 0a 00 00 00 00 00 00 00 00 00 00 00 00 |9e4.............|
- 00000240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- ...
|