PAX(1) User Commands PAX(1)
NAME
pax - portable archive interchange
SYNOPSIS
pax [
-cdnv] [
-H |
-L] [
-f archive] [
-o options]...
[
-s replstr]... [
pattern]...
pax -r [
-cdiknuv@/] [
-H |
-L] [
-f archive] [
-o options]...
[
-p string]... [
-s replstr]... [
pattern]...
pax -w [
-dituvX@/] [
-H |
-L] [
-b blocksize] [
-a]
[
-f archive] [
-o options]... [
-s replstr]...
[
-x format] [
file]...
pax -r -w [
-diklntuvX@/] [
-H |
-L] [
-o options]...
[
-p string]... [
-s replstr]... [
file]...
directoryDESCRIPTION
pax reads, writes, and writes lists of the members of archive files
and copies directory hierarchies. A variety of archive formats are
supported. See the
-x format option.
Modes of Operations
The action to be taken depends on the presence of the
-r and
-w options. The four combinations of
-r and
-w are referred to as the
four modes of operation:
list,
read,
write, and
copy modes,
corresponding respectively to the four forms shown in the SYNOPSIS.
list In
list mode, that is, when neither
-r nor
-w are specified,
pax writes the names of the members of the archive file read
from the standard input, with path names matching the
specified patterns, to standard output. If a named file has
extended attributes, the extended attributes are also
listed. If a named file is of type directory, the file
hierarchy rooted at that file is listed as well.
read In
read mode, that is, when
-r is specified, but
-w is not,
pax extracts the members of the archive file read from the
standard input, with path names matching the specified
patterns. If an extracted file is of type directory, the
file hierarchy rooted at that file is extracted as well.
The extracted files are created performing path name
resolution with the directory in which
pax was invoked as
the current working directory.
If an attempt is made to extract a directory when the
directory already exists, this is not considered an error.
If an attempt is made to extract a
FIFO when the
FIFO already exists, this is not considered an error.
The ownership, access and modification times, and file mode
of the restored files are discussed under the
-p option.
write In
write mode, that is, when
-w is specified, but
-r is not,
pax writes the contents of the
file operands to the standard
output in an archive format. If no
file operands are
specified, a list of files to copy, one per line, are read
from the standard input. A file of type directory includes
all of the files in the file hierarchy rooted at the file.
copy In
copy mode, that is, when both
-r and
-w are specified,
pax copies the
file operands to the destination directory.
If no
file operands are specified, a list of files to copy,
one per line, are read from the standard input. A file of
type directory includes all of the files in the file
hierarchy rooted at the file.
The effect of the
copy is as if the copied files were
written to an archive file and then subsequently extracted,
except that there can be hard links between the original and
the copied files. If the destination directory is a
subdirectory of one of the files to be copied, the results
are unspecified. It is an error if
directory does not exist,
is not writable by the user, or is not a directory.
In
read or
copy modes, if intermediate directories are necessary to
extract an archive member,
pax performs actions equivalent to the
mkdir(2) function, called with the following arguments:
o The intermediate directory used as the
path argument.
o The octal value of
777 or
rwx (read, write, and execute
permissions) as the
mode argument (see
chmod(1)).
If any specified
pattern or
file operands are not matched by at least
one file or archive member,
pax writes a diagnostic message to
standard error for each one that did not match and exits with a non-
zero exit status.
The supported archive formats are automatically detected on input.
The default output archive format is
tar(1).
A single archive can span multiple files.
pax determines what file to
read or write as the next file.
If the selected archive format supports the specification of linked
files, it is an error if these files cannot be linked when the
archive is extracted, except if the files to be linked are symbolic
links and the system is not capable of making hard links to symbolic
links. In that case, separate copies of the symbolic link are created
instead. Any of the various names in the archive that represent a
file can be used to select the file for extraction. For archive
formats that do not store file contents with each name that causes a
hard link, if the file that contains the data is not extracted during
this
pax session, either the data is restored from the original file,
or a diagnostic message is displayed with the name of a file that can
be used to extract the data. In traversing directories,
pax detects
infinite loops, that is, entering a previously visited directory that
is an ancestor of the last file visited. When it detects an infinite
loop,
pax writes a diagnostic message to standard error and
terminates.
OPTIONS
The following options are supported:
-a Appends files to the end of the archive. This option
does not work for some archive devices, such as
1/4-inch streaming tapes and 8mm tapes.
-b blocksize Blocks the output at a positive decimal integer
number of bytes per write to the archive file.
Devices and archive formats can impose restrictions
on blocking. Blocking is automatically determined on
input. Portable applications must not specify a
blocksize value larger than
32256. Default blocking
when creating archives depends on the archive format.
See the
-x option below.
-c Matches all file or archive members except those
specified by the
pattern or
file operands.
-d Causes files of type directory being copied or
archived or archive members of type directory being
extracted or listed to match only the file or archive
member itself and not the file hierarchy rooted at
the file.
-f archive Specifies the path name of the input or output
archive, overriding the default standard input (in
list or
read modes) or standard output (
write mode).
-H If a symbolic link referencing a file of type
directory is specified on the command line,
pax archives the file hierarchy rooted in the file
referenced by the link, using the name of the link as
the root of the file hierarchy. Otherwise, if a
symbolic link referencing a file of any other file
type which
pax can normally archive is specified on
the command line, then
pax archives the file
referenced by the link, using the name of the link.
The default behavior is to archive the symbolic link
itself.
-i Interactively renames files or archive members. For
each archive member matching a
pattern operand or
file matching a
file operand, a prompt is written to
the file
/dev/tty. The prompt contains the name of
the file or archive member. A line is then read from
/dev/tty. If this line is blank, the file or archive
member is skipped. If this line consists of a single
period, the file or archive member is processed with
no modification to its name. Otherwise, its name is
replaced with the contents of the line.
pax immediately exits with a non-zero exit status if end-
of-file is encountered when reading a response or if
/dev/tty cannot be opened for reading and writing.
The results of extracting a hard link to a file that
has been renamed during extraction are unspecified.
-k Prevents the overwriting of existing files.
-l Links files. In
copy mode, hard links are made
between the source and destination file hierarchies
whenever possible. If specified in conjunction with
-H or
-L, when a symbolic link is encountered, the
hard link created in the destination file hierarchy
is to the file referenced by the symbolic link. If
specified when neither
-H nor
-L is specified, when a
symbolic link is encountered, the implementation
creates a hard link to the symbolic link in the
source file hierarchy or copies the symbolic link to
the destination.
-L If a symbolic link referencing a file of type
directory is specified on the command line or
encountered during the traversal of a file hierarchy,
pax archives the file hierarchy rooted in the file
referenced by the link, using the name of the link as
the root of the file hierarchy. Otherwise, if a
symbolic link referencing a file of any other file
type which
pax can normally archive is specified on
the command line or encountered during the traversal
of a file hierarchy,
pax archives the file referenced
by the link, using the name of the link. The default
behavior is to archive the symbolic link itself.
-n Selects the first archive member that matches each
pattern operand. No more than one archive member is
matched for each pattern, although members of type
directory still match the file hierarchy rooted at
that file.
-o options Provides information to the implementation to modify
the algorithm for extracting or writing files. The
value of options consists of one or more comma-
separated keywords of the form:
keyword[[:]=
value][,
keyword[[:]=
value], ...]
Some keywords apply only to certain file formats, as
indicated with each description. Use of keywords that
are inapplicable to the file format being processed
produces undefined results.
Keywords in the
options argument must be a string
that would be a valid portable filename.
Keywords are not expected to be filenames, merely to
follow the same character composition rules as
portable filenames.
Keywords can be preceded with white space. The
value field consists of zero or more characters. Within
value, the application precedes any literal comma
with a backslash, which is ignored, but preserves the
comma as part of
value. A comma as the final
character, or a comma followed solely by white space
as the final characters, in
options is ignored.
Multiple
-o options can be specified. If keywords
given to these multiple
-o options conflict, the
keywords and values appearing later in command line
sequence take precedence and the earlier ones are
silently ignored. The following keyword values of
options are supported for the file formats as
indicated:
delete=pattern This keyword is applicable only to the
-x pax format. When used in
write or
copy mode,
pax omits from extended header records that it
produces any keywords matching the string
pattern. When used in
read or
list mode,
pax ignores any keywords matching the string pattern
in the extended header records. In both cases,
matching is performed using the pattern matching
notation. For example:
-o delete=security.* would suppress security-related information.
When multiple
-o delete=pattern options are
specified, the patterns are additive. All
keywords matching the specified string patterns
are omitted from extended header records that
pax produces.
exthdr.name=string This keyword is applicable only to the
-x pax format. This keyword allows user control over the
name that is written into the
ustar header blocks
for the extended header. The name is the contents
of
string, after the following character
substitutions have been made:
%d The directory name of the file, equivalent
to the result of the
dirname utility on the
translated path name.
%f The filename of the file, equivalent to the
result of the
basename utility on the
translated path name.
%p The process ID of the
pax process.
%% A '%' character.
Any other '%' characters in
string produce
undefined results.
If no
-o exthdr.name=
string is specified,
pax uses the following default value:
%d/PaxHeaders.%p/%f
globexthdr.name=string This keyword is applicable only to the
-x pax format. When used in
write or
copy mode with the
appropriate options,
pax creates global extended
header records with
ustar header blocks that are
treated as regular files by previous versions of
pax. This keyword allows user control over the
name that is written into the
ustar header blocks
for global extended header records. The name is
the contents of
string, after the following
character substitutions have been made:
%n An integer that represents the sequence
number of the global extended header record
in the archive, starting at
1.
%p The process ID of the
pax process.
%% A '%' character.
Any other '%' characters in
string produce
undefined results.
If no
-o globexthdr.name=
string is specified,
pax uses the following default value:
$TMPDIR/GlobalHead.%p.%n
where
$TMPDIR represents the value of the
TMPDIR environment variable. If
TMPDIR is not set,
pax uses
/tmp.
invalid=action This keyword is applicable only to the
-x pax format. This keyword allows user control over the
action
pax takes upon encountering values in an
extended header record that, in
read or
copy mode, are invalid in the destination hierarchy
or, in
list mode, cannot be written in the
codeset and current locale of the implementation.
The following are invalid values that are
recognized by
pax:
o In
read or
copy mode, a filename or
link name that contains character
encodings invalid in the destination
hierarchy. For example, the name can
contain embedded
NULs.
o In
read or
copy mode, a filename or
link name that is longer than the
maximum allowed in the destination
hierarchy, for either a path name
component or the entire path name.
o In
list mode, any character string
value (filename, link name, user name,
and so on) that cannot be written in
the codeset and current locale of the
implementation.
The following mutually-exclusive values of the
action argument are supported:
bypass In
read or
copy mode,
pax bypasses the
file, causing no change to the
destination hierarchy. In
list mode,
pax writes all requested valid values
for the file, but its method for
writing invalid values is unspecified.
rename In
read or
copy mode,
pax acts as if
the
-i option were in effect for each
file with invalid filename or link name
values, allowing the user to provide a
replacement name interactively. In
list mode,
pax behaves identically to the
bypass action.
UTF-8 pax uses the actual
UTF-8 encoding for
the name when it is used in
read,
copy,
or
list mode and a filename, link name,
owner name, or any other field in an
extended header record cannot be
translated from the
pax UTF-8 codeset
format to the codeset and current
locale of the implementation.
write In
read or
copy mode,
pax writes the
file, translating the name, regardless
of whether this can overwrite an
existing file with a valid name. In
list mode,
pax behaves identically to
the
bypass action.
If no
-o invalid= option is specified,
pax acts
as if
-o invalid=bypass were specified. Any
overwriting of existing files that can be allowed
by the
-o invalid= actions are subject to
permission (
-p) and modification time (
-u)
restrictions, and are suppressed if the
-k option
is also specified.
linkdata This keyword is applicable only to the
-x pax format. In
write mode,
pax writes the contents of
a file to the archive even when that file is
merely a hard link to a file whose contents have
already been written to the archive.
listopt=format This keyword specifies the output format of the
table of contents produced when the
-v option is
specified in
list mode. (See
List Mode Format Specifications below.) To avoid ambiguity, the
listopt=format is the only or final
keyword=
value pair in an
-o option-argument. All characters in
the remainder of the option-argument are
considered to be part of the format string. When
multiple
-o listopt=format options are specified,
the format strings are considered to be a single,
concatenated string, evaluated in command line
order.
times This keyword is applicable only to the
-x pax and
-x xustar formats. When used in write or copy
mode,
pax includes
atime and
mtime extended
header records for each file.
In addition to these keywords, if the
-x pax format
is specified, any of the keywords and values,
including implementation extensions, can be used in
-o option-arguments, in either of two modes:
keyword=value When used in
write or
copy mode,
these keyword/value pairs are
included at the beginning of the
archive as
typeflag g global
extended header records. When used
in
read or
list mode, these
keyword/value pairs act as if they
had been at the beginning of the
archive as
typeflag g global
extended header records.
keyword:=value When used in
write or
copy mode,
these keyword/value pairs are
included as records at the
beginning of a
typeflag x extended
header for each file. This is
equivalent to the equal-sign form
except that it creates no
typeflag g global extended header records.
When used in
read or
list mode,
these keyword/value pairs act as if
they were included as records at
the end of each extended header.
Thus, they override any global or
file-specific extended header
record keywords of the same names.
For example, in the command:
pax -r -o " gname:=mygroup, " <archive the group name is forced to a new
value for all files read from the
archive.
-p string Specifies one or more file characteristic options
(privileges). The
string option-argument must be a
string specifying file characteristics to be retained
or discarded on extraction. The string consists of
the specification characters
a,
e,
m,
o, and
p.
Multiple characteristics can be concatenated within
the same string and multiple
-p options can be
specified. The meaning of the specification
characters is as follows:
a Does not preserve file access times.
e Preserves the user
ID, group
ID, file mode bits,
access time, and modification time.
m Does not preserve file modification times.
o Preserves the user
ID and group
ID.
p Preserves the file mode bits.
In the preceding list,
preserve indicates that an
attribute stored in the archive is given to the
extracted file, subject to the permissions of the
invoking process. Otherwise, the attribute is
determined as part of the normal file creation
action. The access and modification times of the file
is preserved unless otherwise specified with the
-p option or not stored in the archive. All attributes
that are not preserved are determined as part of the
normal file creation action.
If neither the
e nor the
o specification character is
specified, or the user
ID and group
ID are not
preserved for any reason,
pax does not set the
setuid and
setgid bits of the file mode.
If the preservation of any of these items fails for
any reason,
pax writes a diagnostic message to
standard error. Failure to preserve these items
affects the final exit status, but does not cause the
extracted file to be deleted.
If file-characteristic letters in any of the
string option-arguments are duplicated or conflict with each
other, the ones given last take precedence. For
example, if
-p eme is specified, file modification
times are preserved.
-r Reads an archive file from standard input.
-s replstr Modifies file or archive member names named by
pattern or
file operands according to the
substitution expression
replstr, which is based on
the
ed(1) s (substitution) utility, using the regular
expression syntax of
regex(7). The concepts of
``address'' and ``line'' are meaningless in the
context of the
pax command, and must not be supplied.
The format is:
-s /
old/
new/ [gp]
where, as in
ed,
old is a basic regular expression
and
new can contain an ampersand (
&), a \
n backreference, where
n is a digit, or subexpression
matching. The
old string is also permitted to contain
newlines.
Any non-null character can be used as a delimiter (
/ shown here). Multiple
-s expressions can be
specified. The expressions are applied in the order
specified, terminating with the first successful
substitution. The optional trailing
g is as defined
in the
ed command. The optional trailing
p causes
successful substitutions to be written to standard
error. File or archive member names that substitute
to the empty string are ignored when reading and
writing archives.
-t When reading files from the file system, and if the
user has the permissions required by
utime() to do
so, sets the access time of each file read to the
access time that it had before being read by
pax.
-u Ignores files that are older (having a less recent
file modification time) than a pre-existing file or
archive member with the same name.
read mode
An archive member with the same name as
a file in the file system is extracted
if the archive member is newer than the
file.
write mode
An archive file member with the same
name as a file in the file system is
superseded if the file is newer than
the archive member. If option
-a is
also specified, this is accomplished by
appending to the archive. Otherwise, it
is unspecified whether this is
accomplished by actual replacement in
the archive or by appending to the
archive.
copy mode
The file in the destination hierarchy
is replaced by the file in the source
hierarchy or by a link to the file in
the source hierarchy if the file in the
source hierarchy is newer.
-v In
list mode, produces a verbose table of contents
(see
Standard Output). Otherwise, writes archive
member path names and extended attributes to standard
error (see
Standard Error).
-w Writes files to the standard output in the specified
archive format.
-x format Specifies the output archive format. The
pax utility
recognizes the following formats:
cpio The extended
cpio(1) interchange format.
See IEEE Std 1003.1-2001. The default
blocksize for this format for character
special archive files is
5120.
Implementations support all
blocksize values less than or equal to
32256 that are
multiples of
512.
This archive format allows files with
UIDs
and
GIDs up to
262143 to be stored in the
archive. Files with
UIDs and
GIDs greater
than this value are archived with the
UID and
GID of
60001.
pax The
pax interchange format. See IEEE Std
1003.1-2001. The default
blocksize for this
format for character special archive files
is
5120. Implementations support all
blocksize values less than or equal to
32256 that are multiples of
512.
Similar to
ustar. Also allows archiving and
extracting files whose size is greater than
8GB; whose
UID,
GID,
devmajor, or
devminor values are greater than
2097151; whose path
(including filename) is greater than
255 characters; or whose
linkname is greater
than
100 characters.
ustar The extended
tar(1) interchange format. See
the IEEE 1003.1(1990) specifications. The
default
blocksize for this format for
character special archive files is
10240.
Implementations support all
blocksize values less than or equal to
32256 that are
multiples of
512.
This archive format allows files with
UIDs
and
GIDs up to
2097151 to be stored in the
archive. Files with
UIDs and
GIDs greater
than this value are archived with the
UID and
GID of
60001.
xustar Similar to
ustar. Also allows archiving and
extracting files whose size is greater than
8GB; whose
UID,
GID,
devmajor, or
devminor values are greater than
2097151; whose path
(including filename) is greater than
255 characters; or whose
linkname is greater
than
100 characters. This option should not
be used if the archive is to be extracted
by an archiver that cannot handle the
larger values.
Any attempt to append to an archive file in a format
different from the existing archive format causes
pax to exit immediately with a non-zero exit status.
In
copy mode, if no
-x format is specified,
pax behaves as if
-x pax were specified.
-X When traversing the file hierarchy specified by a
path name,
pax does not descend into directories that
have a different device ID (
st_dev, see
stat(2)).
-@ Includes extended attributes in the archive.
pax does
not place extended attributes in the archive by
default.
When traversing the file hierarchy specified by a
path name,
pax descends into the attribute directory
for any file with extended attributes. Extended
attributes go into the archive as special files.
When this flag is used during file extraction, any
extended attributes associated with a file being
extracted are also extracted. Extended attribute
files can only be extracted from an archive as part
of a normal file extract. Attempts to explicitly
extract attribute records are ignored.
-/ Includes extended system attributes in the archive.
pax does not place extended system attributes in the
archive by default.
When traversing the file hierarchy specified by a
path name,
pax descends into the attribute directory
for any file with extended attributes. Extended
attributes go into the archive as special files. When
this flag is used during file extraction, any
extended attributes associated with a file being
extracted are also extracted. Extended attribute
files can only be extracted from an archive as part
of a normal file extract. Attempts to explicitly
extract attribute records are ignored.
Specifying more than one of the mutually-exclusive options
-H and
-L is not considered an error. The last option specified determines the
behavior of the utility.
The options that operate on the names of files or archive members
(
-c,
-i,
-n,
-s,
-u and
-v) interact as follows.
In
read mode, the archive members are selected based on the user-
specified
pattern operands as modified by the
-c,
-n and
-u options.
Then, any
-s and
-i options modify, in that order, the names of the
selected files. The
-v option writes names resulting from these
modifications.
In
write mode, the files are selected based on the user-specified
path names as modified by the
-n and
-u options. Then, any
-s and
-i options modify, in that order, the names of these selected files. The
-v option writes names resulting from these modifications.
If both the
-u and
-n options are specified,
pax does not consider a
file selected unless it is newer than the file to which it is
compared.
List Mode Format Specifications
In
list mode with the
-o listopt=format option, the format argument
is applied for each selected file.
pax appends a NEWLINE to the
listopt output for each selected file. The
format argument is used as
the format string with the following exceptions. (See
printf(1) for
the first five exceptions.)
1. A
SPACE character in the format string, in any context
other than a flag of a conversion specification, is
treated as an ordinary character that is copied to the
output.
2. A
' ' character in the format string is treated as a
' ' character, not as a SPACE.
3. In addition to the escape sequences described in the
formats(7) manual page, (
\\,
\a,
\b,
\f,
\n,
\r,
\t,
\v),
\ddd, where
ddd is a one-, two-, or three-digit octal
number, is written as a byte with the numeric value
specified by the octal number.
4. Output from the
d or
u conversion specifiers is not
preceded or followed with BLANKs not specified by the
format operand.
5. Output from the
o conversion specifier is not preceded
with zeros that are not specified by the format operand.
6. The sequence (
keyword) can occur before a format
conversion specifier. The conversion argument is defined
by the value of
keyword. The following keywords are
supported (see IEEE Std 1003.1-2001):
o Any of the Field Name entries in
ustar Header Block and
Octet-Oriented cpio Archive Entry. The
implementation supports the
cpio keywords without the
leading
c_ in addition to the form required by
Values for cpio c_mode Field.
o Any keyword defined for the extended header in
pax Extended Header.
o Any keyword provided as an implementation-defined
extension within the extended header defined in
pax Extended Header.
For example, the sequence "
%(charset)s" is the string value of
the name of the character set in the extended header.
The result of the keyword conversion argument is the value from
the applicable header field or extended header, without any
trailing
NULs.
All keyword values used as conversion arguments are translated
from the UTF -8 encoding to the character set appropriate for the
local file system, user database, and so on, as applicable.
7. An additional conversion specifier character,
T, is used
to specify time formats. The
T conversion specifier
character can be preceded by the sequence
(
keyword=
subformat), where
subformat is a date format as
defined by
date operands. The default
keyword is
mtime and
the default
subformat is:
%b %e %H:%M %Y
8. An additional conversion specifier character,
M, is used
to specify the file mode string as defined in
ls Standard
Output. If (
keyword) is omitted, the
mode keyword is used.
For example,
%.1M writes the single character
corresponding to the
entry type field of the
ls -l command.
9. An additional conversion specifier character,
D, is used
to specify the device for block or special files, if
applicable, in an implementation-defined format. If not
applicable, and (
keyword) is specified, then this
conversion is equivalent to
%(
keyword)
u. If not
applicable, and (
keyword) is omitted, then this conversion
is equivalent to SPACE.
10. An additional conversion specifier character,
F, is used
to specify a path name. The
F conversion character can be
preceded by a sequence of comma-separated keywords:
(
keyword[,
keyword] ... )
The values for all the keywords that are non-null are
concatenated, each separated by a '
/'. The default is
(
path) if the keyword
path is defined. Otherwise, the
default is (
prefix,
name).
11. An additional conversion specifier character,
L, is used
to specify a symbolic link expansion. If the current file
is a symbolic link, then
%L expands to:
"%s -> %s",
value of keyword,
contents of link Otherwise, the
%L conversion specification is the
equivalent of
%F.
OPERANDS
The following operands are supported:
directory The destination directory path name for
copy mode.
file A path name of a file to be copied or archived.
pattern A pattern matching one or more path names of archive
members. A pattern must conform to the pattern matching
notation found on the
fnmatch(7) manual page. The
default, if no
pattern is specified, is to select all
members in the archive.
OUTPUT
Output formats are discussed below:
Standard Output
In
write mode, if
-f is not specified, the standard output is the
archive formatted according to one of the formats described below.
See
-x format for a list of supported formats.
In
list mode, when the
-o listopt=format option has been specified,
the selected archive members are written to standard output using the
format described above under
List Mode Format Specifications. In
list mode without the
-o listopt=format option, the table of contents
of the selected archive members are written to standard output using
the following format:
"%s\n",
pathname If the
-v option is specified in
list mode, the table of contents of
the selected archive members are written to standard output using the
following formats:
o For path names representing hard links to previous members
of the archive:
"%s == %s\n", <
ls -l
listing, linkname o For all other path names:
"%s\n", <
ls -l
listing>
where <
ls -l listing> is the format specified by the
ls command with the
-l option. When writing path names in
this format, it is unspecified what is written for fields
for which the underlying archive format does not have the
correct information, although the correct number of blank-
character-separated fields are written.
In
list mode, standard output is not buffered more than a line at a
time.
Standard Error
If
-v is specified in
read,
write or
copy modes,
pax writes the path
names it processes to the standard error output using the following
format:
"%s\n",
pathname These path names are written as soon as processing is begun on the
file or archive member, and are flushed to standard error. The
trailing NEWLINE character, which is not buffered, is written when
the file has been read or written.
If the
-s option is specified, and the replacement string has a
trailing
p, substitutions are written to standard error in the
following format:
"%s >> %s\n", <
original pathname>, <
new pathname>
In all operating modes of
pax, optional messages of unspecified
format concerning the input archive format and volume number, the
number of files, blocks, volumes, and media parts as well as other
diagnostic messages can be written to standard error.
In all formats, for both standard output and standard error, it is
unspecified how non-printable characters in path names or link names
are written.
When
pax is in
read mode or
list mode, using the
-x pax archive
format, and a file name, link name, owner name, or any other field in
an extended header record cannot be translated from the
pax UTF-8
codeset format to the codeset and current locale of the
implementation,
pax writes a diagnostic message to standard error,
processes the file as described for the
-o invalid= option, and then
processes the next file in the archive.
Output Files
In
read mode, the extracted output files are of the archived file
type. In
copy mode, the copied output files are the type of the file
being copied . In either mode, existing files in the destination
hierarchy are overwritten only when all permission (
-p), modification
time (
-u), and invalid-value (
-o invalid=) tests allow it. In
write mode, the output file named by the
-f option-argument is a file
formatted according to one of the specifications in IEEE Std
1003.1-2001.
ERRORS
If
pax cannot create a file or a link when reading an archive, or
cannot find a file when writing an archive, or cannot preserve the
user
ID, group
ID, or file mode when the
-p option is specified, a
diagnostic message is written to standard error and a non-zero exit
status is returned, but processing continues. In the case where
pax cannot create a link to a file,
pax does not, by default, create a
second copy of the file.
If the extraction of a file from an archive is prematurely terminated
by a signal or error,
pax can have only partially extracted the file
or, if the
-n option was not specified, can have extracted a file of
the same name as that specified by the user, but which is not the
file the user wanted. Additionally, the file modes of extracted
directories can have additional bits from the read, write, execute
mask set as well as incorrect modification and access times.
USAGE
The
-p (privileges) option was invented to reconcile differences
between historical
tar(1) and
cpio(1) implementations. In particular,
the two utilities use
-m in diametrically opposed ways. The
-p option
also provides a consistent means of extending the ways in which
future file attributes can be addressed, such as for enhanced
security systems or high-performance files. Although it can seem
complex, there are really two modes that are most commonly used:
-p e Preserve everything. This would be used by the historical
superuser, someone with all the appropriate privileges, to
preserve all aspects of the files as they are recorded in the
archive. The
e flag is the sum of
o and
p, and other
implementation-dependent attributes.
-p p Preserve the file mode bits. This would be used by the user
with regular privileges who wished to preserve aspects of the
file other than the ownership. The file times are preserved
by default, but two other flags are offered to disable these
and use the time of extraction.
The one path name per line format of standard input precludes path
names containing newlines. Although such path names violate the
portable filename guidelines, they can exist and their presence can
inhibit usage of
pax within shell scripts. This problem is inherited
from historical archive programs. The problem can be avoided by
listing file name arguments on the command line instead of on
standard input.
It is almost certain that appropriate privileges are required for
pax to accomplish parts of this. Specifically, creating files of type
block special or character special, restoring file access times
unless the files are owned by the user (the
-t option), or preserving
file owner, group, and mode (the
-p option) all probably require
appropriate privileges.
In
read mode, implementations are permitted to overwrite files when
the archive has multiple members with the same name. This can fail if
permissions on the first version of the file do not permit it to be
overwritten.
When using the
-x xustar and
-x -pax archive formats, if the
underlying file system reports that the file being archived contains
holes, the Solaris
pax utility records the presence of holes in an
extended header record when the file is archived. If this extended
header record is associated with a file in the archive, those holes
are recreated whenever that file is extracted from the archive. See
the
SEEK_DATA and
SEEK_HOLE whence values in
lseek(2). In all other
cases, any
NUL (
\0) characters found in the archive are written to
the file when it is extracted.
See
largefile(7) for the description of the behavior of
pax when
encountering files greater than or equal to 2 Gbyte ( 2^31 bytes).
Standard Input
In
write mode, the standard input is used only if no
file operands
are specified. It is a text file containing a list of path names, one
per line, without leading or trailing blanks. In
list and
read modes,
if
-f is not specified, the standard input is an archive file.
Otherwise, the standard input is not used.
Input Files
The input file named by the
archive option-argument, or standard
input when the archive is read from there, is a file formatted
according to one of the formats described below. See
Extended Description. The file
/dev/tty is used to write prompts and read
responses.
EXAMPLES
Example 1: Copying the Contents of the Current Directory
The following command:
example%
pax -w -f /dev/rmt/1m . copies the contents of the current directory to tape drive 1, medium
density. This assumes historical System V device naming procedures.
The historical
BSD device name would be
/dev/rmt9.
Example 2: Copying the Directory Hierarchy
The following commands:
example%
mkdir newdir example%
pax -rw olddir newdir copy the
olddir directory hierarchy to
newdir.
Example 3: Reading an Archive Extracted Relative to the Current
Directory
The following command:
example%
pax -r -s ',^//*usr//*,,' -f a.pax reads the archive
a.pax, with all files rooted in
/usr in the archive
extracted relative to the current directory.
Example 4: Overriding the Default Output Description
Using the option:
-o listopt="%M %(atime)T %(size)D %(name)s" overrides the default output description in
Standard Output and
instead writes:
-rw-rw- - - Jan 12 15:53 2003 1492 /usr/foo/bar
Using the options:
-o listopt='%L\t%(size)D\n%.7' \ -o listopt='(name)s\n%(atime)T\n%T' overrides the default output description in standard output and
instead writes:
usr/foo/bar -> /tmp 1492
/usr/foo
Jan 12 15:53 1991
Jan 31 15:53 2003
ENVIRONMENT VARIABLES
See
environ(7) for descriptions of the following environment
variables that affect the execution of
pax:
LANG,
LC_ALL,
LC_CTYPE,
LC_MESSAGES,
LC_TIME, and
NLSPATH.
LC_COLLATE Determine the locale for the behaviour of ranges,
equivalence classes, and multi-character collating
elements used in the pattern matching expressions for
the
pattern operand, the basic regular expression for
the
-s option, and the extended regular expression
defined for the
yesexpr locale keyword in the
LC_MESSAGES category.
TMPDIR Determine the path name that provides part of the
default global extended header record file, as
described for the
-o globexthdr= keyword as described
in the OPTIONS section.
TZ Determine the timezone used to calculate date and time
strings when the
-v option is specified. If
TZ is unset
or null, an unspecified default timezone is used.
EXIT STATUS
The following exit values are returned:
0 All files were processed successfully.
>0 An error occurred.
EXTENDED DESCRIPTION
pax Interchange Format
A
pax archive tape or file produced in the
-xpax format contains a
series of blocks. The physical layout of the archive is identical to
the
ustar format described in
ustar Interchange Format. Each file
archived is represented by the following sequence:
o An optional header block with extended header records.
This header block is of the form 27403 with a
typeflag value of
x or
g. The extended header records is included
as the data for this header block.
o A header block that describes the file. Any fields in the
preceding optional extended header overrides the
associated fields in this header block for this file.
o Zero or more blocks that contain the contents of the file.
At the end of the archive file there are two 512-byte blocks filled
with binary zeroes, interpreted as an end-of-archive indicator.
The following is a schematic of an example archive with global
extended header records and two actual files in pax format archive.
In the example, the second file in the archive has no extended header
preceding it, presumably because it has no need for extended
attributes.
Description Block
Global Extended Header ustar Header [
typeflag=g]
Global Extended Header Data
File 1: Extended Header is included ustar Header [
typeflag=x]
Extended Header Data
[
typeflag=0]
ustar Header Data for File 1
File 2: No Extended Header is included ustar Header [
typeflag=0]
Data for File2
End of Archive Indicator Block of binary zeros
Block of binary zeros
pax Header Block
The
pax header block is identical to the
ustar header block described
in
ustar Interchange Format except that two additional
typeflag values are defined:
g Represents global extended header records for the following
files in the archive. The format of these extended header
records are as described in
pax Extended Header. Each value
affects 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.
x Represents extended header records for the following file in the
archive (which has its own
ustar header block). The format of
these extended header records is as described in
pax Extended Header.
For both of these types, the
size field is the size of the extended
header records in octets. The other fields in the header block are
not meaningful to this version of
pax. However, if this archive is
read by
pax conforming to a previous version of
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) might be
included, which means that the
size field can be greater than zero.
Archives created by
pax -o linkdata includes these data blocks with
the hard links.
pax Extended Header
A
pax extended header contains values that are inappropriate for the
ustar header block because of limitations in that format: fields
requiring a character encoding other than that described in the
ISO/IEC 646: 1991 standard, fields representing file attributes not
described in the
ustar header, and fields whose format or length do
not fit the requirements of the
ustar header. The values in an
extended header add attributes to the specified file or files or
override values in the specified header blocks, as indicated in the
following list of keywords. See the description of the
typeflag g header block.
An extended header consists of one or more records, each constructed
as follows:
"%d %s=%s\n",
length,
keyword,
value The extended header records are encoded according to the
ISO/IEC 10646-1: 2000 standard (UTF-8).
length,
BLANK, equals sign (
=), and
NEWLINE are limited to the portable character set, as encoded in
UTF-8.
keyword and
value can be any UTF-8 characters.
length is the
decimal length of the extended header record in octets, including the
trailing NEWLINE.
keyword is one of the entries from the following list or a keyword
provided as an implementation extension. Keywords consisting entirely
of lowercase letters, digits, and periods are reserved for future
standardization. A keyword does not include an equals sign.
In the following list, the notation of
file(s) or
block(s) are used
to acknowledge that a keyword affects the specified single file after
a
typeflag x extended header, but possibly multiple files after
typeflag g. Any requirements in the list for
pax to include a record
when in write or copy mode applies only when such a record has not
already been provided through the use of the
-o option. When used in
copy mode,
pax behaves as if an archive had been created with
applicable extended header records and then extracted.
atime The file access time for the specified files,
equivalent to the value of the
st_atime member of the
stat structure for a file, as described by the
stat(2) function. The access time (
atime) is restored
if the process has the appropriate privilege required
to do so. The format of the
value is as described in
pax Extended Header File Times.
charset The name of the character set used to encode the data
in the specified files. The entries in the following
table are defined to refer to known standards;
additional names can be agreed on between the
originator and recipient.
value Formal Standard
ISO-IR 646 1990 ISO/IEC646:1990
ISO-IR 8859 1 1998 ISO/IEC8859-1:1998
ISO-IR 8859 2 1999 ISO/IEC 8859-2:1999
ISO-IR 8859 3 1999 ISO/IEC 8859-3:1999
ISO-IR 8859 4 1999 ISO/IEC8859-4:1998
ISO-IR 8859 5 1999 ISO/IEC8859-5-1999
ISO-IR 8859 6 1999 ISO/IEC8859-6-1999
ISO-IR 8859 7 1987 ISO/IEC8859-7:1987
ISO-IR 8859 8 1999 ISO/IEC8859-8:1999
ISO-IR 8859 9 1999 ISO/IEC8859-9:1999
ISO-IR 8859 10 1998 ISO/IEC8859-10:1999
ISO-IR 8859 13 1998 ISO/IEC8859-13:1998
ISO-IR 8859 14 1998 ISO/IEC8859-14:1998
ISO-IR 8859 15 1999 ISO/IEC8859-15:1999
ISO-IR 10646 2000 ISO/IEC 10646:2000
ISO-IR 10646 2000 UTF-8 ISO/IEC 10646,UTF-8 encoding
BINARY None
The encoding is included in an extended header for
information only; when
pax is used as described in
IEEE Std 1003.1-200x, it does 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 are 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 overrides the
gid field in the specified header blocks. When used
in write or copy mode,
pax includes a
gid extended
header record for each file whose group ID is greater
than 2097151 (octal
7777777).
gname The group of the files, formatted as a group name in
the group database. This record overrides the
gid and
gname fields in the specified header blocks, and any
gid extended header record. When used in read, copy,
or list mode,
pax translates 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 includes 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
overrides the
linkname field in the specified
ustar header blocks. The specified
ustar header block
determines the type of link created. If
typeflag of
the specified header block is 1, it is a hard link.
If
typeflag is 2, it is a symbolic link and the
linkpath value is the contents of the symbolic link.
pax translates 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 includes a
linkpath extended header record for each link whose
pathname cannot be represented entirely with the
members of the portable character set other than
NULL.
mtime The pathname of a link being created to another file,
of any type, previously archived. This record
overrides the
linkname field in the specified
ustar header blocks. The specified
ustar header block
determines the type of link created. If
typeflag of
the specified header block is
1, it is a hard link.
If
typeflag is
2, it is a symbolic link and the
linkpath value is the contents of the symbolic link.
pax translates 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 includes a
linkpath extended header record for each link whose
pathname cannot be represented entirely with the
members of the portable character set other than
NULL.
path The pathname of the specified files. This record
overrides the name and
prefix fields in the specified
header blocks.
pax translates 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 includes a path extended
header record for each file whose pathname cannot be
represented entirely with the members of the portable
character set other than
NULL.
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 overrides the
size field
in the specified header blocks. When used in write or
copy mode,
pax includes 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 I
SO/IEC 646:1991 standard. This record overrides the
uid field in the
following header block(s). When used in write or copy
mode,
pax includes a
uid extended header record for
each file whose owner ID is greater than
2097151 (octal 7777777).
uname The owner of the specified files, formatted as a user
name in the user database. This record overrides the
uid and
uname fields in the specified header blocks,
and any
uid extended header record. When used in
read, copy, or list mode,
pax translates 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 includes 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 deletes 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 an
-o option-
argument) overrides or deletes a corresponding field in the
ustar header block,
pax ignores the contents of that header block field.
Unlike the
ustar header block fields,
NULLs does not delimit values;
all characters within the value field are considered data for the
field.
pax Extended Header Keyword Precedence
This section describes the precedence in which the various header
records and fields and command line options are selected to apply to
a file in the archive. When
pax is used in read or list modes, it
determines a file attribute in the following sequence:
1. If
-o delete=keyword-prefix is used, the affected
attributes is determined from step 7, if applicable, or
ignored otherwise.
2. If
-o keyword:= is used, the affected attributes is
ignored.
3. If
-o keyword:=value is used, the affected attribute is
assigned the value.
4. If there is a
typeflag x extended header record, the
affected attribute is assigned the value. When extended
header records conflict, the last one given in the header
takes precedence.
5. If
-o keyword=value is used, the affected attribute is
assigned the value.
6. If there is a
typeflag g global extended header record,
the affected attribute is assigned the value. When global
extended header records conflict, the last one given in
the global header takes precedence.
7. Otherwise, the attribute is determined from the
ustar header block.
pax Extended Header File Times
pax writes an
mtime record for each file in write or copy modes if
the file's modification time cannot be represented exactly in the
ustar header logical record described in
ustar Interchange Format.
This can occur if the time is out of
ustar range, or if the file
system of the underlying implementation supports non-integer time
granularities and the time is not an integer. All of these time
records are 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 represents the units of
a sub-second timing granularity, where the first digit is tenths of a
second and each subsequent digit is a tenth of the previous digit. In
read or copy mode,
pax truncates the time of a file to the greatest
value that is not greater than the input header file time. In write
or copy mode,
pax outputs a time exactly if it can be represented
exactly as a decimal number, and otherwise generates only enough
digits so that the same time is recovered if the file is extracted on
a system whose underlying implementation supports the same time
granularity.
ustar Interchange Format
A
ustar archive tape or file contains a series of logical records.
Each logical record is a fixed-size logical record of 512 octets.
Although this format can be thought of as being stored on 9-track
industry-standard 12.7mm (0.5 in) magnetic tape, other types of
transportable media are not excluded. Each file archived is
represented by a header logical record that describes the file,
followed by zero or more logical records that give the contents of
the file. At the end of the archive file there are two 512-octet
logical records filled with binary zeros, interpreted as an end-of-
archive indicator.
The logical records can be grouped for physical I/O operations, as
described under the
-bblocksize and
-x ustar options. Each group of
logical records can be written with a single operation equivalent to
the
write(2) function. On magnetic tape, the result of this write is
a single tape physical block. The last physical block always is the
full size, so logical records after the two zero logical records can
contain undefined data.
The header logical record is structured as shown in the following
table. All lengths and offsets are in decimal.
Table 1 ustar Header Block
Field Name Octet Offset Length (in Octets)
name 0 100
mode 100 8
uid 108 8
gid 116 8
size 124 12
mtime 136 12
chksum 148 8
typeflag 156 1
linkname 157 100
magic 257 6
version 263 2
uname 265 32
gname 297 32
devmajor 329 8
devminor 337 8
prefix 345 155
All characters in the header logical record is represented in the
coded character set of the
ISO/IEC 646: 1991 standard. For maximum
portability between implementations, names should be selected from
characters represented by the portable filename character set as
octets with the most significant bit zero. If an implementation
supports the use of characters outside of slash and the portable
filename character set in names for files, users, and groups, one or
more implementation-defined encodings of these characters are
provided for interchange purposes.
pax never creates filenames on the local system that cannot be
accessed using the procedures described in
IEEE Std 1003.1-200x. If a
filename is found on the medium that would create an invalid
filename, it is implementation-defined whether the data from the file
is stored on the file hierarchy and under what name it is stored.
pax can choose to ignore these files as long as it produces an error
indicating that the file is being ignored. Each field within the
header logical record is contiguous; that is, there is no padding
used.
Each field within the header logical record is contiguous. There is
no padding used. Each character on the archive medium is stored
contiguously.
The fields
magic,
uname and
gname are character strings, each of
which is terminated by a NULL character. The fields
name,
linkname,
and
prefix are NULL-terminated character strings except when all
characters in the array contain non-NULL characters including the
last character. The
version field is two octets containing the
characters
00 (zero-zero) The
typeflag contains a single character.
All other fields are leading zero-filled octal numbers using digits
from the
ISO/IEC 646:1991 standard IRV. Each numeric field is
terminated by one or more SPACE of NULL characters.
Each character on the archive medium is stored contiguously. The
fields
magic,
uname, and
gname are character strings each terminated
by a
NULL character.
name,
linkname, and
prefix are NULL-terminated character strings
except when all characters in the array contain non-NULL characters
including the last character. The
version field is two octets
containing the characters
00 (zero-zero). The
typeflag contains a
single character. All other fields are leading zero-filled octal
numbers using digits from the
ISO/IEC 646: 1991 standard IRV. Each
numeric field is terminated by one or more spaces or NULL characters.
The
name and the
prefix fields produce the pathname of the file. A
new pathname is formed, if
prefix is not an empty string (its first
character is not
NULL), by concatenating
prefix (up to the first
NULL character), a slash character, and name; otherwise, name is used
alone. In either case, name is terminated at the first
NULL character. If
prefix begins with a
NULL character, it is ignored. In
this manner, pathnames of at most 256 characters can be supported. If
a pathname does not fit in the space provided,
pax notifies the user
of the error, and does not store any part of the file-header or data-
on the medium.
The
linkname field does not use the
prefix to produce a pathname. As
such, a
linkname is limited to 100 characters. If the name does not
fit in the space provided,
pax notifies the user of the error, and
does not attempt to store the link on the medium. The
mode field
provides 12 bits encoded in the
ISO/IEC 646: 1991 standard octal
digit representation. The encoded bits represent the following values
in the
ustar mode field:
Bit Value IEE Std 1003.1-2001 Bit Description
04000 S_ISUID Set UID on execution
02000 S_ISGID Set GID on execution
01000
reserved Reserved for future standardization
00400 S_IRUSR Read permission for file owner class
00200 S_IWUSR Write permission for file owner class
00100 S_IXUSR Execute/search permission for file
owner class
00040 S_IRGRP Read permission for file group class
00020 S_IWGRP Write permission for file group class
00010 S_IXGRP Execute/search permission for file
group class
00004 S_IROTH Read permission for file other class
00002 S_IWOTH Write permission for file other class
00001 S_IXOTH Execute/search permission for file
other class
When appropriate privilege is required to set one of these mode bits,
and the user restoring the files from the archive does not have the
appropriate privilege, the mode bits for which the user does not have
appropriate privilege are ignored. Some of the mode bits in the
archive format are not mentioned elsewhere in volume
IEEE Std 1003.1-200x. If the implementation does not support those bits, they
can be ignored.
The
uid and
gid fields are the user and group ID of the owner and
group of the file, respectively.
The
size field is the size of the file in octets. If the
typeflag field is set to specify a file to be of type
1 (a link) or
2 (a
symbolic link), the
size field is specified as zero. If the
typeflag field is set to specify a file of type 5 (directory), the
size field
is interpreted as described under the definition of that record type.
No data logical records are stored for types 1, 2, or 5. If the
typeflag field is set to 3 (character special file), 4 (block special
file), or 6 (FIFO), the meaning of the
size field is unspecified by
volume
IEEE Std 1003.1-200x, and no data logical records is stored on
the medium. Additionally, for type 6, the
size field is ignored when
reading. If the
typeflag field is set to any other value, the number
of logical records written following the header is (
size+511)/512,
ignoring any fraction in the result of the division.
The
mtime field is the modification time of the file at the time it
was archived. It is the
ISO/IEC 646: 1991 standard representation of
the octal value of the modification time obtained from the
stat() function.
The
chksum field is the
ISO/IEC 646: 1991 standard IRV representation
of the octal value of the simple sum of all octets in the header
logical record. Each octet in the header is treated as an unsigned
value. These values are added to an unsigned integer, initialized to
zero, the precision of which is not less than 17 bits. When
calculating the checksum, the
chksum field is treated as if it were
all spaces.
The
typeflag field specifies the type of file archived. If a
particular implementation does not recognize the type, or the user
does not have appropriate privilege to create that type, the file is
extracted as if it were a regular file if the file type is defined to
have a meaning for the
size field that could cause data logical
records to be written on the medium. If conversion to a regular file
occurs,
pax produces an error indicating that the conversion took
place. All of the
typeflag fields are coded in the
ISO/IEC 646: 1991 standard IRV:
0 Represents a regular file. For backward
compatibility, a
typeflag value of binary zero
('\0') should be recognized as meaning a regular
file when extracting files from the archive.
Archives written with this version of the archive
file format create regular files with a
typeflag value of the
ISO/IEC 646: 1991 standard IRV '0'.
1 Represents a file linked to another file, of any
type, previously archived. Such files are
identified by each file having the same device and
file serial number. The linked-to name is specified
in the
linkname field with a
NULL-character
terminator if it is less than 100 octets in length.
2 Represents a symbolic link. The contents of the
symbolic link are stored in the
linkname field.
3,4 Represents character special files and block special
files respectively. In this case the
devmajor and
devminor fields contain information defining the
device, the format of which is unspecified by volume
IEEE Std 1003.1-200x. Implementations can map the
device specifications to their own local
specification or can ignore the entry.
5 Specifies a directory or subdirectory. On systems
where disk allocation is performed on a directory
basis, the
size field contain the maximum number of
octets (which can be rounded to the nearest disk
block allocation unit) that the directory can hold.
A
size field of zero indicates no such limiting.
Systems that do not support limiting in this manner
should ignore the
size field.
6 Specifies a FIFO special file. The archiving of a
FIFO file archives the existence of this file and
not its contents.
7 Reserved to represent a file to which an
implementation has associated some high- performance
attribute. Implementations without such extensions
should treat this file as a regular file (type 0).
A-Z The letters
A through
Z inclusive are reserved for
custom implementations. All other values are
reserved for future versions of
IEEE Std 1003.1-200x.
SUN.devmajor A Solaris extension to
pax extended header keywords.
Specifies the major device number of the file.
When used in write or copy mode and the
xustar or
pax format (see
-x format) was specified,
pax includes a
SUN.devmajor extended header record for
each file whose major device number is too large to
fit in 8 octets.
SUN.devminor A Solaris extension to
pax extended header keywords.
Specifies the minor device number of the file.
When used in write or copy mode and the
xustar or
pax format (see
-x format) is specified,
pax includes a
SUN.devminor extended header record for
each file whose minor device number is too large to
fit in 8 octets.
SUN.holesdata A Solaris extension to
pax extended header keywords.
Specifies the data and hole pairs for a sparse file.
In write or copy modes and when the
xustar or
pax format (see
-x format) is specified,
pax includes a
SUN.holesdata extended header record if the
underlying file system supports the detection of
files with holes (see
fpathconf(2)) and reports that
there is at least one hole in the file being
archived.
value consists of two or more consecutive
entries of the following form:
SPACEdata_offsetSPACEhole_offset where the data and hole offsets are the long values
returned by passing
SEEK_DATA and
SEEK_HOLE to
lseek(2), respectively. For example, the following
entry is an example of the
SUN.holesdata entry in
the extended header for a file with data offsets at
bytes 0, 24576, and 49152, and hole offsets at bytes
8192, 32768, and 49159: 49
SUN.holesdata= 0 8192 24576 32768 49152 49159:
49 SUN.holesdata= 0 8192 24576 32768 49152 49159
When extracting a file from an archive in read or
copy modes, if a
SUN.holesdata = pair is found in
the extended header for the file, then the file is
restored with the holes identified using this data.
For example, for the
SUN.holesdata provided in the
example above, bytes from 0 to 8192 are restored as
data, a hole is created up to the next data position
(24576), bytes 24576 to 32768 is restored as data,
and so forth.
X A Solaris custom
typeflag implementation which
specifies an
xustar format (see
-x format) extended
header. The
typeflag 'x' extended header is treated
as a
ustar typeflag 'x' extended header.
E A Solaris custom
typeflag implementation which
specifies an extended attributes header. See
fsattr(7).
Attempts to archive a socket using
ustar interchange format produce a
diagnostic message. Handling of other file types is implementation-
defined.
The
magic field is the specification that this archive was output in
this archive format. If this field contains
ustar (the five
characters from the
ISO/IEC 646: 1991 standard IRV shown followed by
NULL), the
uname and
gname fields contain the
ISO/IEC 646: 1991 standard IRV representation of the owner and group of the file,
respectively (truncated to fit, if necessary). When the file is
restored by a privileged, protection-preserving version of the
utility, the user and group databases are scanned for these names. If
found, the user and group IDs contained within these files are used
rather than the values contained within the
uid and
gid fields.
cpio Interchange Format
The octet-oriented
cpio archive format are a series of entries, each
comprising a header that describes the file, name of the file, and
contents of the file.
An archive can be recorded as a series of fixed-size blocks of
octets. This blocking is be used only to make physical I/O more
efficient. The last group of blocks are always at the full size.
For the octet-oriented
cpio archive format, the individual entry
information are in the order indicated and described by the following
table: Octet-Oriented
cpio Archive Entry. See the
cpio.h header for
additional details.
Header Field Name Length (in Octets) Interpreted as
c_magic 6 Octal number
c_dev 6 Octal number
c_ino 6 Octal number
c_mode 6 Octal number
c_uid 6 Octal number
c_gid 6 Octal number
c_nlink 6 Octal number
c_rdev 6 Octal number
c_mtime 11 Octal number
c_namesize 6 Octal number
c_filesize 11 Octal number
Filename Field Name Length Interpreted as
c_name c_namesize Pathname string
Filename Field Name Length Interpreted as
c_filedata c_filesize Data
cpio Header
For each file in the archive, a header as defined previously written.
The information in the header fields is written as streams of the
ISO/IEC 646: 1991 standard characters interpreted as octal numbers.
The octal numbers are extended to the necessary length by appending
the
ISO/IEC 646: 1991 standard IRV zeros at the most-significant-
digit end of the number. The result is written to the most-
significant digit of the stream of octets first. The fields are
interpreted as follows:
c_magic Identifies the archive as being a transportable
archive by containing the identifying value
"070707".
c_dev,c_ino Contains values that uniquely identify the file within
the archive (that is, no files contain the same pair
of
c_dev and
c_ino values unless they are links to the
same file). The values are determined in an
unspecified manner.
c_mode Contains the file type and access permissions as
defined in the following table.
Directories, FIFOs, symbolic links, and regular files
are supported on a system conforming to volume
IEEE Std 1003.1-200x; additional values defined previously
are reserved for compatibility with existing systems.
Additional file types can be supported. Such files
should not be written to archives intended to be
transported to other systems.
File Permissions Name Value Indicates
C_IRUSR 000400 by owner
C_IWUSR 000200 by owner
C_IXUSR 000100 by owner
C_IRGRP 000040 by group
CW_IWFGP 000020 by group
CW_IXGRP 000010 by group
CW_IROTH 000004 by others
CW_IWOTH 000002 by others
CW_IXOTH 000001 by others
CW_ISUID 004000 Set
uid W_ISGID 002000 Set
gid W_ISVTX 001000 Reserved
File Type Name Value Indicates
C_ISDIR 040000 Directory
C_ISFIFO 010000 FIFO
C_ISREG 0100000 Regular file
C_ISLNK 0120000 Symbolic link
C_ISBLK 060000 Block special file
C_ISCHR 020000 Character special file
C_ISSOCK 0140000 Socket
C_ISCTG 0110000 Reserved
c_uid Contains the user ID of the owner.
c_gid Contains the group ID of the group
c_nlink Contains a number greater than or equal to the number
of links in the archive referencing the file. If the
-a option is used to append to a
cpio archive,
pax does need not to account for the files in the existing
part of the archive when calculating the
c_nlink values for the appended part of the archive. It does
also need not alter the
c_nlink values in the existing
part of the archive if additional files with the same
c_dev and
c-ino values are appended to the archive.
c_rdev Contains implementation-defined information for
character or block special files.
c_mtime Contains the latest time of modification of the file
at the time the archive was created.
c_namesize Contains the length of the pathname, including the
terminating NULL character.
c_filesize Contains the length of the file in octets. This is the
length of the data section following the header
structure.
cpio Filename
The
c_name field contains the pathname of the file. The length of
this field in octets is the value of
c_namesize. If a filename is
found on the medium that would create an invalid pathname, it is
implementation-defined whether the data from the file is stored on
the file hierarchy and under what name it is stored. All characters
are represented in the
ISO/IEC 646: 1991 standard IRV. For maximum
portability between implementations, names should be selected from
characters represented by the portable filename character set as
octets with the most significant bit zero. If an implementation
supports the use of characters outside the portable filename
character set in names for files, users, and groups, one or more
implementation-defined encodings of these characters are provided for
interchange purposes.
pax does not create filenames on the local
system that cannot be accessed by way of the procedures described in
volume
IEEE Std 1003.1-200x. If a filename is found on the medium
that would create an invalid filename, it is implementation-defined
whether the data from the file is stored on the local file system and
under what name it is stored.
pax can choose to ignore these files as
long as it produces an error indicating that the file is being
ignored.
cpio File Data
Following
c_name, there is
c_filesize octets of data. Interpretation
of such data occurs in a manner dependent on the file. If
c_filesize is zero, no data is contained in
c_filedata . When restoring from an
archive:
o If the user does not have the appropriate privilege to
create a file of the specified type,
pax ignores the entry
and writes an error message to standard error.
o Only regular files have data to be restored. Presuming a
regular file meets any selection criteria that might be
imposed on the format-reading utility by the user, such
data is restored.
o If a user does not have appropriate privilege to set a
particular
mode flag, the flag is ignored. Some of the
mode flags in the archive format are not mentioned in
volume
IEEE Std 1003.1-200x. If the implementation does
not support those flags, they can be ignored.
cpio Special Entries
FIFO special files, directories, and the trailer are recorded with
c_filesize equal to zero. For other special files,
c_filesize is
unspecified in volume
IEEE Std 1003.1-200x. The header for the next
file entry in the archive are written directly after the last octet
of the file entry preceding it. A header denoting the filename
trailer indicates the end of the archive; the contents of octets in
the last block of the archive following such a header are undefined.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-------------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-------------------+
|Interface Stability | Committed |
+--------------------+-------------------+
|Standard | See
standards(7). |
+--------------------+-------------------+
SEE ALSO
chmod(1),
cpio(1),
ed(1),
printf(1),
tar(1),
lseek(2),
mkdir(2),
stat(2),
write(2),
archives.h(3HEAD),
attributes(7),
environ(7),
fnmatch(7),
formats(7),
fsattr(7),
largefile(7),
regex(7),
standards(7) IEEE Std 1003.1-200x,
ISO/IEC 646: 1991,
ISO POSIX-2:1993 Standard June 13, 2021 PAX(1)