svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
pax(1)
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]... directory
DESCRIPTION
pax reads, writes, and writes lists of the members of archive files and
copies directory hierarchies. A variety of archive formats are sup‐
ported. 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 hier‐
archy 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 per‐
missions) 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, enter‐
ing a previously visited directory that is an ancestor of the last file
visited. When it detects an infinite loop, pax writes a diagnostic mes‐
sage 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 out‐
put (write mode).
-H
If a symbolic link referencing a file of type directory is speci‐
fied 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 referenc‐
ing a file of any other file type which pax can normally archive is
specified on the command line, then pax archives the file refer‐
enced 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 ar‐
chive member is processed with no modification to its name. Other‐
wise, its name is replaced with the contents of the line. pax imme‐
diately exits with a non-zero exit status if end-of-file is encoun‐
tered 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 implemen‐
tation 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 speci‐
fied 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 spec‐
ified 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 sym‐
bolic 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 key‐
words 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 pat‐
tern. 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 substitu‐
tions 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 follow‐
ing 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 follow‐
ing 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 destina‐
tion 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 destina‐
tion 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:
binary
In write mode, pax generates a hdrcharset=BINARY extended
header record for each file with a filename, link name,
group name, owner name, or any other field in an extended
header record that cannot be translated to the UTF-8 code‐
set, allowing the archive to contain the files with unen‐
coded extended header record values. In read or copy mode,
pax uses the values specified in the header without trans‐
lation, regardless of whether this may overwrite an exist‐
ing file with a valid name. In list mode, pax behaves iden‐
tically to the bypass action.
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
When 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 for‐
mat to the codeset and current locale of the implementa‐
tion. pax uses the actual UTF-8 encoding for the name. If a
hdrcharset extended header record is in effect for this
file, the character set specified by that record shall be
used instead of UTF-8. If a hdrcharset=BINARY extended
header record is in effect for this file, no translation
shall be performed.
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 identi‐
cally 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 sub‐
ject to permission (-p) and modification time (-u) restric‐
tions, 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 con‐
tents produced when the -v option is specified in list mode.
(See List Mode Format Specifications below.) To avoid ambigu‐
ity, 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 exten‐
sions, 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 character‐
istics to be retained or discarded on extraction. The string con‐
sists of the specification characters a, e, m, o, and p. Multiple
characteristics can be concatenated within the same string and mul‐
tiple -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 per‐
missions 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-argu‐
ments 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 op‐
erands 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 con‐
tain 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 success‐
ful 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 modifica‐
tion 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 sys‐
tem 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 mem‐
ber. 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 for‐
mat.
-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 charac‐
ter 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. Implemen‐
tations 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 han‐
dle 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-speci‐
fied 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 for‐
mat 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 for‐
mats(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 exten‐
sion 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 Out‐
put. 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 applica‐
ble, in an implementation-defined format. If not applicable,
and (keyword) is specified, then this conversion is equiva‐
lent 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 pre‐
ceded by a sequence of comma-separated keywords:
(keyword[,keyword] ... )
The values for all the keywords that are non-null are con‐
catenated, each separated by a '/'. The default is (path) if
the keyword path is defined. Otherwise, the default is (pre‐
fix,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 mem‐
bers. A pattern must conform to the pattern matching nota‐
tion 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 ar‐
chive 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 com‐
mand 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 cor‐
rect information, although the correct number of blank-char‐
acter-separated fields is 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 NEW‐
LINE 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 trail‐
ing 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 for‐
mat, 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 accord‐
ing 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 can‐
not 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 diagnos‐
tic 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 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 porta‐
ble filename guidelines, they can exist and their presence can inhibit
usage of pax within shell scripts. This problem is inherited from his‐
torical 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 privi‐
leges.
In read mode, implementations are permitted to overwrite files when the
archive has multiple members with the same name. This can fail if per‐
missions on the first version of the file do not permit it to be over‐
written.
When using the -x xustar and -x -pax archive formats, if the underly‐
ing 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 re-created
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.
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 Direc‐
tory
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 time zone used to calculate date and time strings
when the -v option is specified. If TZ is unset or null, an unspec‐
ified default time zone 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 exam‐
ple, the second file in the archive has no extended header preceding
it, presumably because it has no need for extended attributes.
tab(); lw(2.68i) lw(2.82i) lw(2.68i) lw(2.82i) DescriptionBlock Global
Extended Headerustar Header [typeflag=g] Global Extended Header Data
File 1: Extended Header is includedustar Header [typeflag=x] Extended
Header Data [typeflag=0] ustar Header Data for File 1 File 2: No
Extended Header is includedustar Header [typeflag=0] Data for File2 End
of Archive IndicatorBlock 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 cre‐
ated 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 key‐
words. 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. If there is a hdrcharset extended header in effect for a file,
the value field for any gname, linkpath, path, and uname extended
header records shall be encoded using the character set specified by
the hdrcharset extended header record; otherwise, the value field shall
be encoded using UTF-8. The value field for all other keywords speci‐
fied by POSIX.1-2008 shall be encoded using UTF-8.
keyword is one of the entries from the following list or a keyword pro‐
vided as an implementation extension. Keywords consisting entirely of
lowercase letters, digits, and periods are reserved for future stan‐
dardization. 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 speci‐
fied 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.
tab(); lw(2.75i) lw(2.75i) valueFormal Standard ISO-IR 646
1990ISO/IEC646:1990 ISO-IR 8859 1 1998ISO/IEC8859-1:1998 ISO-IR
8859 2 1999ISO/IEC 8859-2:1999 ISO-IR 8859 3 1999ISO/IEC
8859-3:1999 ISO-IR 8859 4 1999ISO/IEC8859-4:1998 ISO-IR 8859 5
1999ISO/IEC8859-5-1999 ISO-IR 8859 6 1999ISO/IEC8859-6-1999 ISO-IR
8859 7 1987ISO/IEC8859-7:1987 ISO-IR 8859 8 1999ISO/IEC8859-8:1999
ISO-IR 8859 9 1999ISO/IEC8859-9:1999 ISO-IR 8859 10
1998ISO/IEC8859-10:1999 ISO-IR 8859 13 1998ISO/IEC8859-13:1998 ISO-
IR 8859 14 1998ISO/IEC8859-14:1998 ISO-IR 8859 15
1999ISO/IEC8859-15:1999 ISO-IR 10646 2000ISO/IEC 10646:2000 ISO-IR
10646 2000 UTF-8ISO/IEC 10646,UTF-8 encoding BINARYNone
The encoding is included in an extended header for information
only; when pax is used as described in IEEE Std 1003.1-2008, 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 deci‐
mal 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 appropri‐
ate 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.
hdrcharset
The name of the character set used to encode the value field of the
gname, linkpath, path, and uname pax extended header records. The
entries below are defined to refer to known standards. Additional
names may be agreed between the originator and the recipient.
value
Formal Standard
ISO-IR106462000UTF-8
ISO/IEC 10646, UTF-8 encoding
BINARY
None
If no hdrcharset extended header record is specified, the default
character set used to encode all values in extended header records
shall be the ISO/IEC 10646-1:2000 standard UTF-8 encoding.
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 sym‐
bolic link. pax translates the name of the link (contents of the
symbolic link) from the UTF-8 encoding to the character set appro‐
priate 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 sym‐
bolic link. pax translates the name of the link (contents of the
symbolic link) from the UTF-8 encoding to the character set appro‐
priate 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 standard‐
ization.
security.any
The keywords prefixed by security are reserved for future standard‐
ization.
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 ISO/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 appro‐
priate 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 deter‐
mines 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 other‐
wise.
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 oth‐
erwise 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-stan‐
dard 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 ta‐
ble. All lengths and offsets are in decimal.
Table 1 ustar Header Block
tab(); lw(1.83i) lw(1.83i) lw(1.83i) lw(1.83i) lw(1.83i) lw(1.83i)
Field NameOctet OffsetLength (in Octets) name0100 mode1008 uid1088
gid1168 size12412 mtime13612 chksum1488 typeflag1561 linkname157100
magic2576 version2632 uname26532 gname29732 devmajor3298 devminor3378
prefix345155
All characters in the header logical record is represented in the coded
character set of the ISO/IEC 646: 1991 standard. For maximum portabil‐
ity 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-2008. 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 contigu‐
ously.
The fields magic, uname and gname are character strings, each of which
is terminated by a NULL character. The fields name, linkname, and pre‐
fix 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 stan‐
dard 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 termi‐
nated 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 charac‐
ter is not NULL), by concatenating prefix (up to the first NULL charac‐
ter), 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 representa‐
tion. The encoded bits represent the following values in the ustar
mode field:
tab(); lw(0.58i) lw(1.65i) lw(3.27i) Bit ValueIEEE Std 1003.1-2001 Bit‐
Description 04000S_ISUIDSet UID on execution 02000S_ISGIDSet GID on
execution 01000reservedReserved for future standardization 00400S_IRUS‐
RRead permission for file owner class 00200S_IWUSRWrite permission for
file owner class 00100S_IXUSRT{ Execute/search permission for file
owner class T} 00040S_IRGRPRead permission for file group class
00020S_IWGRPWrite permission for file group class 00010S_IXGRPT{ Exe‐
cute/search permission for file group class T} 00004S_IROTHRead permis‐
sion for file other class 00002S_IWOTHWrite permission for file other
class 00001S_IXOTHT{ Execute/search permission for file other class T}
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-2008. 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 inter‐
preted 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-2008, and no data logical records is stored on the medium. Addi‐
tionally, 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 logi‐
cal 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 regu‐
lar 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 respec‐
tively. 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-2008. 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 allo‐
cation 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 sup‐
port limiting in this manner should ignore the size field.
6
Specifies a FIFO special file. The archiving of a FIFO file ar‐
chives the existence of this file and not its contents.
7
Reserved to represent a file to which an implementation has associ‐
ated 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 implemen‐
tations. All other values are reserved for future versions of IEEE
Std 1003.1-2008.
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 rep‐
resentation of the owner and group of the file, respectively (truncated
to fit, if necessary). When the file is restored by a privileged, pro‐
tection-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 con‐
tents 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 infor‐
mation are in the order indicated and described by the following table:
Octet-Oriented cpio Archive Entry. See the cpio.h header for additional
details.
tab(); lw(1.83i) lw(1.83i) lw(1.83i) Header Field NameLength (in
Octets)Interpreted as c_magic6Octal number c_dev6Octal number
c_ino6Octal number c_mode6Octal number c_uid6Octal number c_gid6Octal
number c_nlink6Octal number c_rdev6Octal number c_mtime11Octal number
c_namesize6Octal number c_filesize11Octal number
tab(); lw(1.83i) lw(1.83i) lw(1.83i) Filename Field NameLengthInter‐
preted as c_namec_namesizePathname string
tab(); lw(1.83i) lw(1.83i) lw(1.83i) Filename Field NameLengthInter‐
preted as c_filedatac_filesizeData
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 contain‐
ing 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-2008; 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.
tab(); lw(1.83i) lw(1.83i) lw(1.83i) File Permissions NameVal‐
ueIndicates C_IRUSR000400by owner C_IWUSR000200by owner
C_IXUSR000100by owner C_IRGRP000040by group CW_IWFGP000020by group
CW_IXGRP000010by group CW_IROTH000004by others CW_IWOTH000002by
others CW_IXOTH000001by others CW_ISUID004000Set uid
W_ISGID002000Set gid W_ISVTX001000Reserved
tab(); lw(1.83i) lw(1.83i) lw(1.83i) File Type NameValueIndicates
C_ISDIR040000Directory C_ISFIFO010000FIFO C_ISREG0100000Regular
file C_ISLNK0120000Symbolic link C_ISBLK060000Block special file
C_ISCHR020000Character special file C_ISSOCK0140000Socket
C_ISCTG0110000Reserved
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 ar‐
chive 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 imple‐
mentations, 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-2008. 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 ar‐
chive:
o If the user does not have the appropriate privilege to cre‐
ate 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 par‐
ticular mode flag, the flag is ignored. Some of the mode
flags in the archive format are not mentioned in volume IEEE
Std 1003.1-2008. 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-2008. 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:
tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
TRIBUTE VALUE _ Availabilitysystem/core-os _ Interface StabilityCommit‐
ted _ StandardSee 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), regex(7), standards(7)
IEEE Std 1003.1-2008, ISO/IEC 646: 1991, ISO POSIX-2:1993 Standard
Oracle Solaris 11.4 3 Nov 2021 pax(1)