pax man page on Oracle

Man page or keyword search:  
man Server   33470 pages
apropos Keyword Search (all sections)
Output format
Oracle logo
[printable version]

PAX(1P)			   POSIX Programmer's Manual		       PAX(1P)

PROLOG
       This  manual  page is part of the POSIX Programmer's Manual.  The Linux
       implementation of this interface may differ (consult the	 corresponding
       Linux  manual page for details of Linux behavior), or the interface may
       not be implemented on Linux.

NAME
       pax - portable archive interchange

SYNOPSIS
       pax [-cdnv][-H|-L][-f archive][-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][-p string]...[-s replstr]...
	      [file...] directory

DESCRIPTION
       The pax utility shall read, write, and write lists of  the  members  of
       archive files and copy directory hierarchies. A variety of archive for‐
       mats shall be supported; see the -x format option.

       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 section.

       list   In  list	mode (when neither -r nor -w are specified), pax shall
	      write the names of the members of the archive file read from the
	      standard	input, with pathnames matching the specified patterns,
	      to standard output. If a named file is of	 type  directory,  the
	      file hierarchy rooted at that file shall be listed as well.

       read   In  read	mode  (when -r is specified, but -w is not), pax shall
	      extract the members of the archive file read from	 the  standard
	      input,  with  pathnames  matching	 the specified patterns. If an
	      extracted file is of type directory, the file  hierarchy	rooted
	      at  that	file  shall  be extracted as well. The extracted files
	      shall be created performing pathname resolution with the	direc‐
	      tory 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 shall not be considered an error. If an attempt is made to
       extract	a FIFO when the FIFO already exists, this shall not be consid‐
       ered 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 (when -w is specified, but -r is not), pax shall
	      write 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, shall be read from the  standard
	      input.  A	 file of type directory shall include all of the files
	      in the file hierarchy rooted at the file.

       copy   In copy mode (when both -r and -w are specified), pax shall copy
	      the file operands to the destination directory.

       If  no  file  operands  are specified, a list of files to copy, one per
       line, shall be read from the standard input. A file of  type  directory
       shall  include  all  of	the  files in the file hierarchy rooted at the
       file.

       The effect of the copy shall be as if the copied files were written  to
       an  archive file and then subsequently extracted, except that there may
       be hard links between the original and the copied files. If the	desti‐
       nation  directory  is  a subdirectory of one of the files to be copied,
       the results are unspecified. If the destination directory is a file  of
       a   type	  not	defined	  by   the   System   Interfaces   volume   of
       IEEE Std 1003.1-2001, the results  are  implementation-defined;	other‐
       wise,  it shall be an error for the file named by the directory operand
       not to exist, not be writable by the user, or not be  a	file  of  type
       directory.

       In  read	 or  copy  modes, if intermediate directories are necessary to
       extract an archive member, pax shall perform actions equivalent to  the
       mkdir()	 function   defined   in   the	System	Interfaces  volume  of
       IEEE Std 1003.1-2001, called with the following arguments:

	* The intermediate directory used as the path argument

	* The value of the  bitwise-inclusive  OR  of  S_IRWXU,	 S_IRWXG,  and
	  S_IRWXO as the mode argument

       If  any	specified pattern or file operands are not matched by at least
       one file or archive member, pax shall write  a  diagnostic  message  to
       standard error for each one that did not match and exit with a non-zero
       exit status.

       The archive formats described in the EXTENDED DESCRIPTION section shall
       be  automatically  detected on input. The default output archive format
       shall be implementation-defined.

       A single archive can span multiple files. The pax utility shall	deter‐
       mine,  in  an implementation-defined manner, what file to read or write
       as the next file.

       If the selected archive format supports	the  specification  of	linked
       files,  it  shall  be an error if these files cannot be linked when the
       archive is extracted. For archive formats that do not store  file  con‐
       tents 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
       shall be restored from the original file, or a diagnostic message shall
       be displayed with the name of a file that can be used  to  extract  the
       data.  In traversing directories, pax shall detect 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 shall write a
       diagnostic message to standard error and shall terminate.

OPTIONS
       The pax utility	shall  conform	to  the	 Base  Definitions  volume  of
       IEEE Std 1003.1-2001,  Section  12.2, Utility Syntax Guidelines, except
       that the order of presentation of the -o, -p, and -s options is signif‐
       icant.

       The following options shall be supported:

       -r     Read an archive file from standard input.

       -w     Write files to the standard output in the specified archive for‐
	      mat.

       -a     Append files to the end of the archive.  It  is  implementation-
	      defined  which  devices  on  the system support appending. Addi‐
	      tional   file   formats	unspecified   by   this	  volume    of
	      IEEE Std 1003.1-2001 may impose restrictions on appending.

       -b  blocksize
	      Block  the  output at a positive decimal integer number of bytes
	      per write to the archive file. Devices and archive  formats  may
	      impose restrictions on blocking. Blocking shall be automatically
	      determined on input. Conforming applications shall not specify a
	      blocksize	 value larger than 32256. Default blocking when creat‐
	      ing archives depends on the archive format. (See the  -x	option
	      below.)

       -c     Match  all file or archive members except those specified by the
	      pattern or file operands.

       -d     Cause files of type directory being copied or  archived  or  ar‐
	      chive  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
	      Specify  the pathname 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 spec‐
	      ified on the command line, pax shall archive 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
	      shall archive the file referenced by the link, using the name of
	      the link. The default behavior shall be to archive the  symbolic
	      link itself.

       -i     Interactively  rename files or archive members. For each archive
	      member matching a pattern operand or file matching a file	 oper‐
	      and, a prompt shall be written to the file /dev/tty.  The prompt
	      shall contain the name of the file or archive  member,  but  the
	      format  is otherwise unspecified. A line shall then be read from
	      /dev/tty. If this line is blank,	the  file  or  archive	member
	      shall  be skipped. If this line consists of a single period, the
	      file or archive member shall be processed with  no  modification
	      to its name. Otherwise, its name shall be replaced with the con‐
	      tents of the line. The pax utility shall immediately exit 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 writ‐
	      ing.

       The  results  of extracting a hard link to a file that has been renamed
       during extraction are unspecified.

       -k     Prevent the overwriting of existing files.

       -l     (The letter ell.) In copy mode, hard links shall be 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 shall be to the file referenced by the symbolic	 link.
	      If  specified  when  neither -H nor -L is specified, when a sym‐
	      bolic link is encountered, the  implementation  shall  create  a
	      hard  link  to the symbolic link in the source file hierarchy or
	      copy the symbolic link to the destination.

       -L     If a symbolic link referencing a file of type directory is spec‐
	      ified on the command line or encountered during the traversal of
	      a file hierarchy, pax shall archive 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 shall archive the file
	      referenced by the link, using the name of the link. The  default
	      behavior shall be to archive the symbolic link itself.

       -n     Select  the first archive member that matches each pattern oper‐
	      and.  No more than one archive member shall be matched for  each
	      pattern  (although  members  of type directory shall still match
	      the file hierarchy rooted at that file).

       -o  options
	      Provide information to the implementation to  modify  the	 algo‐
	      rithm  for  extracting  or  writing  files. The value of options
	      shall consist 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  shall be a string that would be a
       valid portable filename as described in the Base Definitions volume  of
       IEEE Std 1003.1-2001, Section 3.276, Portable Filename Character Set.

       Note:
	      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  shall  con‐
       sist  of	 zero  or more characters; within value, the application shall
       precede any literal comma with a backslash, which shall be 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 shall be 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 shall take precedence
       and the earlier shall be silently ignored. The following keyword values
       of options shall be supported for the file formats as indicated:

       delete=pattern

	      (Applicable  only	 to  the -x pax format.) When used in write or
	      copy mode, pax shall omit from extended header records  that  it
	      produces	any keywords matching the string pattern. When used in
	      read or list mode, pax shall ignore any  keywords	 matching  the
	      string  pattern  in  the extended header records. In both cases,
	      matching shall be performed using the pattern matching  notation
	      described	 in  Patterns Matching a Single Character and Patterns
	      Matching Multiple Characters . For example:

		     -o delete=security.*

	      would suppress security-related information.  See	 pax  Extended
	      Header for extended header record keyword usage.

       exthdr.name=string

	      (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 produced under the circumstances
	      described in pax Header Block . The name shall be	 the  contents
	      of string, after the following character substitutions have been
	      made:

		    string
		    Includes:	Replaced By:
		    %d		The directory name of the file, equiva‐
				lent to the result of the dirname util‐
				ity on the translated pathname.
		    %f		The filename of the file, equivalent to
				the result of the basename utility on
				the translated pathname.
		    %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  shall  use  the
	      following default value:

		     %d/PaxHeaders.%p/%f

       globexthdr.name=string

	      (Applicable  only	 to  the -x pax format.) When used in write or
	      copy mode with the appropriate options, pax shall create	global
	      extended	header	records	 with ustar header blocks that will be
	      treated as regular files by previous versions of pax. This  key‐
	      word  allows user control over the name that is written into the
	      ustar header blocks for global extended header records. The name
	      shall  be	 the contents of string, after the following character
	      substitutions have been made:

		    string
		    Includes:	Replaced By:
		    %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 shall use the
	      following default value:

		     $TMPDIR/GlobalHead.%p.%n

	      where  $	TMPDIR	represents the value of the TMPDIR environment
	      variable. If TMPDIR is not set, pax shall use /tmp.

       invalid=action

	      (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 shall be recognized by pax:

		      * In  read  or  copy  mode, a filename or link name that
			contains character encodings invalid in	 the  destina‐
			tion  hierarchy.  (For	example,  the name may contain
			embedded NULs.)

		      * In read or copy mode, a filename or link name that  is
			longer	than  the  maximum  allowed in the destination
			hierarchy (for either  a  pathname  component  or  the
			entire pathname).

		      * In  list  mode,	 any character string value (filename,
			link name, user name, and so on) that cannot be	 writ‐
			ten in the codeset and current locale of the implemen‐
			tation.

	      The following mutually-exclusive values of the  action  argument
	      are supported:

	      bypass
		     In	 read or copy mode, pax shall bypass the file, causing
		     no change to the destination hierarchy. In list mode, pax
		     shall  write all requested valid values for the file, but
		     its method for writing invalid values is unspecified.

	      rename
		     In read or copy mode, pax shall act as if the  -i	option
		     were  in  effect  for  each file with invalid filename or
		     link name values, allowing the user to provide a replace‐
		     ment  name	 interactively. In list mode, pax shall behave
		     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  format  to the codeset and current locale of the
		     implementation, pax shall use the actual  UTF-8  encoding
		     for the name.

	      write
		     In read or copy mode, pax shall write the file, translat‐
		     ing or truncating the name, regardless  of	 whether  this
		     may overwrite an existing file with a valid name. In list
		     mode, pax shall behave identically to the bypass action.

	      If no -o invalid= option is specified, pax shall act  as	if  -o
	      invalid=	bypass	were  specified.  Any  overwriting of existing
	      files that may be allowed by the -o invalid=  actions  shall  be
	      subject to permission ( -p) and modification time ( -u) restric‐
	      tions, and shall be suppressed if the -k option is  also	speci‐
	      fied.

       linkdata

	      (Applicable only to the -x pax format.) In write mode, pax shall
	      write 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	 .  To	avoid  ambiguity,  the
	      listopt=	format	shall be the only or final keyword= value pair
	      in a -o option-argument; all characters in the remainder of  the
	      option-argument  shall  be considered part of the format string.
	      When multiple -o listopt= format options are specified, the for‐
	      mat  strings  shall be considered a single, concatenated string,
	      evaluated in command line order.

       times

	      (Applicable only to the -x pax format.) When used	 in  write  or
	      copy  mode,  pax	shall include atime, ctime, and mtime extended
	      header records for each file. See pax Extended Header File Times
	      .

       In  addition  to these keywords, if the -x pax format is specified, any
       of the keywords and values defined in pax  Extended  Header,  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 shall
	      be 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 shall act as if they had been at the begin‐
	      ning of  the  archive  as	 typeflag  g  global  extended	header
	      records.

       keyword:=value

	      When used in write or copy mode, these keyword/value pairs shall
	      be included as records at the beginning of a typeflag x extended
	      header  for  each	 file. (This shall be 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 key‐
	      word/value pairs shall act as if they were included  as  records
	      at  the  end  of each extended header; thus, they shall 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 will be forced to a new value for all files read
	      from the archive.

       The precedence of -o keywords over various fields  in  the  archive  is
       described in pax Extended Header Keyword Precedence .

       -p  string
	      Specify  one  or	more file characteristic options (privileges).
	      The string option-argument shall be  a  string  specifying  file
	      characteristics  to  be retained or discarded on extraction. The
	      string shall consist of the specification characters a, e, m, o,
	      and p . Other implementation-defined characters can be included.
	      Multiple characteristics can be  concatenated  within  the  same
	      string  and multiple -p options can be specified. The meaning of
	      the specification characters are as follows:

       a
	      Do not preserve file access times.

       e
	      Preserve the user ID, group ID, file mode	 bits  (see  the  Base
	      Definitions  volume of IEEE Std 1003.1-2001, Section 3.168, File
	      Mode Bits), access time, modification time, and any other imple‐
	      mentation-defined file characteristics.

       m
	      Do not preserve file modification times.

       o
	      Preserve the user ID and group ID.

       p
	      Preserve	the  file mode bits. Other implementation-defined file
	      mode attributes may be preserved.

       In the preceding list, "preserve" indicates that an attribute stored in
       the  archive  shall be given to the extracted file, subject to the per‐
       missions of the invoking process. The access and modification times  of
       the  file  shall	 be  preserved	unless otherwise specified with the -p
       option or not stored in the archive. All attributes that are  not  pre‐
       served  shall  be determined as part of the normal file creation action
       (see File Read, Write, and Creation ).

       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 shall not
       set the S_ISUID and S_ISGID bits of the file mode.

       If the preservation of any of these items fails	for  any  reason,  pax
       shall  write  a	diagnostic message to standard error.  Failure to pre‐
       serve these items shall affect the final exit  status,  but  shall  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	 shall
       take precedence. For example, if -p eme is specified, file modification
       times are preserved.

       -s  replstr
	      Modify file or archive member names named by pattern or file op‐
	      erands  according	 to the substitution expression replstr, using
	      the syntax of the ed utility.  The  concepts  of	"address"  and
	      "line"  are  meaningless	in the context of the pax utility, and
	      shall not be supplied. The format shall be:

	      -s /old/new/[gp]

       where as in ed, old is a basic regular expression and new  can  contain
       an  ampersand,  '\n' (where n is a digit) backreferences, or subexpres‐
       sion matching. The old string shall also be permitted to contain	 <new‐
       line>s.

       Any  non-null  character	 can be used as a delimiter ( '/' shown here).
       Multiple -s expressions can be  specified;  the	expressions  shall  be
       applied	in  the order specified, terminating with the first successful
       substitution. The optional trailing 'g' is as defined in the  ed	 util‐
       ity.  The optional trailing 'p' shall cause successful substitutions to
       be written to standard error. File or archive member names that substi‐
       tute  to the empty string shall be ignored when reading and writing ar‐
       chives.

       -t     When reading files from the file system, and if the user has the
	      permissions required by utime() to do so, set the access time of
	      each file read to the access time that it had before being  read
	      by pax.

       -u     Ignore files that are older (having a less recent file modifica‐
	      tion time) than a pre-existing file or archive member  with  the
	      same name. In read mode, an archive member with the same name as
	      a file in the file system shall be extracted if the archive mem‐
	      ber  is newer than the file. In write mode, an archive file mem‐
	      ber with the same name as a file in the  file  system  shall  be
	      superseded  if  the file is newer than the archive member. If -a
	      is also specified, this is accomplished by appending to the  ar‐
	      chive; otherwise, it is unspecified whether this is accomplished
	      by actual replacement in the archive or by appending to the  ar‐
	      chive. In copy mode, the file in the destination hierarchy shall
	      be 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 hier‐
	      archy is newer.

       -v     In list mode, produce a verbose table of contents (see the  STD‐
	      OUT section). Otherwise, write archive member pathnames to stan‐
	      dard error (see the STDERR section).

       -x  format
	      Specify the output archive format. The pax utility shall support
	      the following formats:

       cpio
	      The  cpio	 interchange format; see the EXTENDED DESCRIPTION sec‐
	      tion.  The default blocksize for this format for character  spe‐
	      cial  archive files shall be 5120. Implementations shall support
	      all blocksize values less than or equal to 32256 that are multi‐
	      ples of 512.

       pax
	      The  pax	interchange  format; see the EXTENDED DESCRIPTION sec‐
	      tion.  The default blocksize for this format for character  spe‐
	      cial  archive files shall be 5120. Implementations shall support
	      all blocksize values less than or equal to 32256 that are multi‐
	      ples of 512.

       ustar
	      The  tar	interchange  format; see the EXTENDED DESCRIPTION sec‐
	      tion.  The default blocksize for this format for character  spe‐
	      cial archive files shall be 10240. Implementations shall support
	      all blocksize values less than or equal to 32256 that are multi‐
	      ples of 512.

       Implementation-defined  formats	shall  specify a default block size as
       well as any other block sizes supported for character  special  archive
       files.

       Any attempt to append to an archive file in a format different from the
       existing archive format shall cause pax to exit immediately with a non-
       zero exit status.

       In  copy	 mode, if no -x format is specified, pax shall behave as if -x
       pax were specified.

       -X     When traversing the file hierarchy specified by a pathname,  pax
	      shall  not descend into directories that have a different device
	      ID   (   st_dev;	 see   the   System   Interfaces   volume   of
	      IEEE Std 1003.1-2001, stat()).

       The options that operate on the names of files or archive members ( -c,
       -i, -n, -s, -u, and -v) shall interact as follows. In  read  mode,  the
       archive	members	 shall be selected based on the user-specified pattern
       operands as modified by the -c, -n, and -u options. Then, any -s and -i
       options	shall  modify, in that order, the names of the selected files.
       The -v option shall write names resulting from these modifications.

       In write mode, the files shall be selected based on the	user-specified
       pathnames  as  modified	by  the -n and -u options. Then, any -s and -i
       options shall modify, in that order, the names of these selected files.
       The -v option shall write names resulting from these modifications.

       If  both	 the -u and -n options are specified, pax shall 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
       shall be applied for each selected file. The pax utility shall append a
       <newline> to the listopt output for  each  selected  file.  The	format
       argument shall be used as the format string described in the Base Defi‐
       nitions volume of IEEE Std 1003.1-2001, Chapter 5,  File	 Format	 Nota‐
       tion,  with  the	 exceptions  1.	  through  5.  defined in the EXTENDED
       DESCRIPTION section of printf, plus the following exceptions:

       6.     The sequence ( keyword) can occur	 before	 a  format  conversion
	      specifier.  The  conversion  argument is defined by the value of
	      keyword. The implementation shall	 support  the  following  key‐
	      words:

	       * Any  of  the  Field  Name  entries  in ustar Header Block and
		 Octet-Oriented cpio Archive Entry .  The  implementation  may
		 support  the cpio keywords without the leading c_ in addition
		 to the form required by Values for cpio c_mode Field .

	       * Any keyword defined for the extended header in	 pax  Extended
		 Header .

	       * 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 shall be the value from
       the applicable header field or extended header,	without	 any  trailing
       NULs.

       All  keyword  values  used  as conversion arguments shall be 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, shall be 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	shall be mtime and the default subformat shall
	      be:

	      %b %e %H:%M %Y

       8.     An additional conversion specifier character, M, shall  be  used
	      to  specify  the file mode string as defined in ls Standard Out‐
	      put.  If ( keyword) is omitted, the mode keyword shall be	 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, shall  be  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 shall be equivalent
	      to %(keyword)u. If not applicable, and (	keyword)  is  omitted,
	      then this conversion shall be equivalent to <space>.

       10.    An  additional  conversion specifier character, F, shall be used
	      to specify a pathname. 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 shall be concatenated
       together, each separated by a '/' . The default shall be ( path) if the
       keyword	path  is  defined;  otherwise,	the default shall be ( prefix,
       name).

       11.    An additional conversion specifier character, L, shall  be  used
	      to  specify  a symbolic line expansion. If the current file is a
	      symbolic link, then %L shall expand to:

	      "%s -> %s", <value of keyword>, <contents of link>

       Otherwise, the %L conversion specification shall be the	equivalent  of
       %F .

OPERANDS
       The following operands shall be supported:

       directory
	      The destination directory pathname for copy mode.

       file   A pathname of a file to be copied or archived.

       pattern
	      A	 pattern  matching one or more pathnames of archive members. A
	      pattern must be given in the  name-generating  notation  of  the
	      pattern  matching notation in Pattern Matching Notation, includ‐
	      ing the filename expansion rules in Patterns Used	 for  Filename
	      Expansion	 .  The	 default,  if  no  pattern is specified, is to
	      select all members in the archive.

STDIN
       In write mode, the standard input shall be used only if no  file	 oper‐
       ands  are specified. It shall be a text file containing a list of path‐
       names, one per line, without leading or trailing <blank>s.

       In list and read modes, if -f is	 not  specified,  the  standard	 input
       shall be an archive file.

       Otherwise, the standard input shall not be used.

INPUT FILES
       The  input file named by the archive option-argument, or standard input
       when the archive is read from there, shall be a file formatted  accord‐
       ing to one of the specifications in the EXTENDED DESCRIPTION section or
       some other implementation-defined format.

       The file /dev/tty shall be used to write prompts and read responses.

ENVIRONMENT VARIABLES
       The following environment variables shall affect the execution of pax:

       LANG   Provide a default value for the  internationalization  variables
	      that  are	 unset	or  null.  (See the Base Definitions volume of
	      IEEE Std 1003.1-2001, Section  8.2,  Internationalization	 Vari‐
	      ables  for the precedence of internationalization variables used
	      to determine the values of locale categories.)

       LC_ALL If set to a non-empty string value, override the values  of  all
	      the other internationalization variables.

       LC_COLLATE

	      Determine	 the  locale  for  the behavior of ranges, equivalence
	      classes, and multi-character collating elements used in the pat‐
	      tern  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_MES‐
	      SAGES category.

       LC_CTYPE
	      Determine the locale for	the  interpretation  of	 sequences  of
	      bytes  of	 text  data as characters (for example, single-byte as
	      opposed to multi-byte characters in arguments and input  files),
	      the  behavior  of character classes used in the extended regular
	      expression defined for the yesexpr locale keyword in the LC_MES‐
	      SAGES category, and pattern matching.

       LC_MESSAGES
	      Determine the locale for the processing of affirmative responses
	      that should be used to affect the format and contents  of	 diag‐
	      nostic messages written to standard error.

       LC_TIME
	      Determine	 the format and contents of date and time strings when
	      the -v option is specified.

       NLSPATH
	      Determine the location of message catalogs for the processing of
	      LC_MESSAGES .

       TMPDIR Determine	 the pathname that provides part of the default global
	      extended header record file, as described for the -o globexthdr=
	      keyword 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 shall be used.

ASYNCHRONOUS EVENTS
       Default.

STDOUT
       In write mode, if -f is not specified, the standard output shall be the
       archive formatted  according  to	 one  of  the  specifications  in  the
       EXTENDED DESCRIPTION section, or some other implementation-defined for‐
       mat (see -x format).

       In list mode, when the -o  listopt=  format  has	 been  specified,  the
       selected	 archive members shall be written to standard output using the
       format described under List Mode Format Specifications . In  list  mode
       without	the  -o	 listopt=  format option, the table of contents of the
       selected archive members shall be 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 shall be written to standard output	 using
       the following formats.

       For  pathnames  representing  hard links to previous members of the ar‐
       chive:

	      "%s == %s\n", <ls -l listing>, <linkname>

       For all other pathnames:

	      "%s\n", <ls -l listing>

       where <ls  -l listing> shall be the format specified by the ls  utility
       with  the  -l  option.  When  writing  pathnames	 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 num‐
       ber of <blank>-separated fields shall be written.

       In list mode, standard output shall not be buffered more than a line at
       a time.

STDERR
       If  -v  is specified in read, write, or copy modes, pax shall write the
       pathnames it processes to the standard error output using the following
       format:

	      "%s\n", <pathname>

       These  pathnames shall be written as soon as processing is begun on the
       file or archive member, and shall be flushed  to	 standard  error.  The
       trailing	 <newline>,  which  shall not be 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 shall be written to standard error in the fol‐
       lowing 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 may be written to standard error.

       In  all	formats,  for  both  standard output and standard error, it is
       unspecified how non-printable characters in pathnames or link names are
       written.

       When pax is in read mode or list mode, using the -x pax archive format,
       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,  pax
       shall  write  a diagnostic message to standard error, shall process the
       file as described for the -o invalid= option, and  then	shall  process
       the next file in the archive.

OUTPUT FILES
       In  read mode, the extracted output files shall be of the archived file
       type. In copy mode, the copied output files shall be the	 type  of  the
       file  being  copied.  In either mode, existing files in the destination
       hierarchy shall be overwritten only when all permission ( -p),  modifi‐
       cation time ( -u), and invalid-value ( -o invalid=) tests allow it.

       In write mode, the output file named by the -f option-argument shall be
       a file formatted according to one of the specifications in the EXTENDED
       DESCRIPTION section, or some other implementation-defined format.

EXTENDED DESCRIPTION
   pax Interchange Format
       A  pax archive tape or file produced in the -x pax format shall contain
       a series of blocks. The physical layout of the archive shall be identi‐
       cal  to	the  ustar format described in ustar Interchange Format . Each
       file archived shall be represented by the following sequence:

	* An optional header block with extended header records.  This	header
	  block	 is of the form described in pax Header Block, with a typeflag
	  value of x or g. The	extended  header  records,  described  in  pax
	  Extended  Header,  shall  be	included  as  the data for this header
	  block.

	* A header block that describes the file. Any fields in the  preceding
	  optional  extended  header  shall  override the associated fields in
	  this header block for this file.

	* Zero or more blocks that contain the contents of the file.

       At the end of the archive file  there  shall  be	 two  512-byte	blocks
       filled with binary zeros, interpreted as an end-of-archive indicator.

       A  schematic  of an example archive with global extended header records
       and two actual files is shown in pax Format Archive Example  .  In  the
       example,	 the second file in the archive has no extended header preced‐
       ing it, presumably because it has no need for extended attributes.

			 Figure: pax Format Archive Example

   pax Header Block
       The pax header block shall be  identical	 to  the  ustar	 header	 block
       described in ustar Interchange Format, except that two additional type‐
       flag values are defined:

       x      Represents extended header records for the following file in the
	      archive (which shall have its own ustar header block).  The for‐
	      mat of these extended header records shall be  as	 described  in
	      pax Extended Header .

       g      Represents  global  extended  header  records  for the following
	      files in the  archive.  The  format  of  these  extended	header
	      records  shall  be  as  described	 in pax Extended Header . Each
	      value shall affect all subsequent files  that  do	 not  override
	      that value in their own extended header record and until another
	      global extended header record is reached that  provides  another
	      value  for  the same field. The typeflag g global headers should
	      not be used with interchange media  that	could  suffer  partial
	      data loss in transporting the archive.

       For  both  of  these  types,  the  size	field shall be the size of the
       extended header records in octets. The other fields in the header block
       are not meaningful to this version of the pax utility. However, if this
       archive is read by a pax utility	 conforming  to	 the  ISO POSIX-2:1993
       standard,  the  header  block  fields are used to create a regular file
       that contains the extended header records as  data.  Therefore,	header
       block field values should be selected to provide reasonable file access
       to this regular file.

       A further difference from the ustar header block is  that  data	blocks
       for  files  of  typeflag 1 (the digit one) (hard link) may be included,
       which means that the size field may be greater than zero. Archives cre‐
       ated  by	 pax -o linkdata shall include 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 following file (or files; see the descrip‐
       tion  of the typeflag g header block) or override values in the follow‐
       ing header block(s), as indicated in the following list of keywords.

       An extended header shall consist of one	or  more  records,  each  con‐
       structed as follows:

	      "%d %s=%s\n", <length>, <keyword>, <value>

       The   extended  header  records	shall  be  encoded  according  to  the
       ISO/IEC 10646-1:2000 standard (UTF-8).  The  <length>  field,  <blank>,
       equals sign, and <newline> shown shall be limited to the portable char‐
       acter set, as encoded in UTF-8. The <keyword> and <value> fields can be
       any UTF-8 characters. The <length> field shall be the decimal length of
       the extended header record in octets, including the trailing <newline>.

       The <keyword> field shall be one of the entries from the following list
       or a keyword provided as an implementation extension. Keywords consist‐
       ing entirely of lowercase letters, digits, and periods are reserved for
       future standardization. A keyword shall not include an equals sign. (In
       the following list, the notations "file(s)" or "block(s)"  is  used  to
       acknowledge  that  a  keyword affects the following 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 shall apply only when such a record has not  already
       been provided through the use of the -o option. When used in copy mode,
       pax shall behave as if an archive  had  been  created  with  applicable
       extended header records and then extracted.)

       atime  The  file	 access	 time for the following file(s), equivalent to
	      the value of the st_atime member of the  stat  structure	for  a
	      file, as described by the stat() function. The access time shall
	      be  restored  if	the  process  has  the	appropriate  privilege
	      required	to  do	so.  The  format  of  the  <value> shall be as
	      described in pax Extended Header File Times .

       charset
	      The name of the character set used to encode  the	 data  in  the
	      following	 file(s).  The	entries	 in  the  following  table are
	      defined to refer to known standards;  additional	names  may  be
	      agreed on between the originator and recipient.

		   <value>		    Formal Standard
		   ISO-IR 646 1990	    ISO/IEC 646:1990
		   ISO-IR 8859 1 1998	    ISO/IEC 8859-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 1998	    ISO/IEC 8859-4:1998
		   ISO-IR 8859 5 1999	    ISO/IEC 8859-5:1999
		   ISO-IR 8859 6 1999	    ISO/IEC 8859-6:1999
		   ISO-IR 8859 7 1987	    ISO/IEC 8859-7:1987
		   ISO-IR 8859 8 1999	    ISO/IEC 8859-8:1999
		   ISO-IR 8859 9 1999	    ISO/IEC 8859-9:1999
		   ISO-IR 8859 10 1998	    ISO/IEC 8859-10:1998
		   ISO-IR 8859 13 1998	    ISO/IEC 8859-13:1998
		   ISO-IR 8859 14 1998	    ISO/IEC 8859-14:1998
		   ISO-IR 8859 15 1999	    ISO/IEC 8859-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-2001,	it  shall  not
       translate the file data into any other encoding. The BINARY entry indi‐
       cates unencoded binary data.

       When used in write or copy mode, it is  implementation-defined  whether
       pax includes a charset extended header record for a file.

       comment
	      A	 series of characters used as a comment. All characters in the
	      <value> field shall be ignored by pax.

       ctime  The file creation time for the following file(s), equivalent  to
	      the  value  of  the  st_ctime member of the stat structure for a
	      file, as described by the stat()	function.  The	creation  time
	      shall  be	 restored if the process has the appropriate privilege
	      required to do so.  The  format  of  the	<value>	 shall	be  as
	      described in pax Extended Header File Times .

       gid    The  group  ID  of  the group that owns the file, expressed as a
	      decimal number using digits from the ISO/IEC 646:1991  standard.
	      This record shall override the gid field in the following header
	      block(s). When used in write or copy mode, pax shall  include  a
	      gid  extended  header  record  for  each	file whose group ID is
	      greater than 2097151 (octal 7777777).

       gname  The group of the file(s), formatted as a group name in the group
	      database.	  This	record shall override the gid and gname fields
	      in the following header block(s), and any	 gid  extended	header
	      record.  When used in read, copy, or list mode, pax shall trans‐
	      late 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 speci‐
	      fied, the results are implementation-defined. When used in write
	      or  copy	mode, pax shall include a gname extended header record
	      for each file whose group name cannot  be	 represented  entirely
	      with the letters and digits of the portable character set.

       linkpath
	      The  pathname  of	 a  link being created to another file, of any
	      type,  previously	 archived.  This  record  shall	 override  the
	      linkname field in the following ustar header block(s).  The fol‐
	      lowing ustar header block shall determine the type of link  cre‐
	      ated.  If	 typeflag of the following header block is 1, it shall
	      be a hard link. If typeflag is 2, it shall be  a	symbolic  link
	      and  the	linkpath  value	 shall be the contents of the symbolic
	      link. The pax utility shall translate the name of the link (con‐
	      tents of the symbolic link) from the UTF-8 encoding to the char‐
	      acter set appropriate for the local file system.	When  used  in
	      write or copy mode, pax shall include a linkpath extended header
	      record for  each	link  whose  pathname  cannot  be  represented
	      entirely	with  the  members of the portable character set other
	      than NUL.

       mtime  The file modification time of the following file(s),  equivalent
	      to  the value of the st_mtime member of the stat structure for a
	      file, as described in the stat()	function.  This	 record	 shall
	      override	the  mtime field in the following header block(s). The
	      modification time shall be  restored  if	the  process  has  the
	      appropriate  privilege  required	to  do	so.  The format of the
	      <value> shall be as described in pax Extended Header File	 Times
	      .

       path   The  pathname  of the following file(s). This record shall over‐
	      ride  the	 name  and  prefix  fields  in	the  following	header
	      block(s).	 The  pax  utility shall translate the pathname of the
	      file from the UTF-8 encoding to the  character  set  appropriate
	      for the local file system.

       When  used  in  write  or  copy mode, pax shall include a path extended
       header record for  each	file  whose  pathname  cannot  be  represented
       entirely with the members of the portable character set other than NUL.

       realtime.any
	      The  keywords  prefixed  by  "realtime." are reserved for future
	      standardization.

       security.any
	      The keywords prefixed by "security."  are	 reserved  for	future
	      standardization.

       size   The  size	 of  the file in octets, expressed as a decimal number
	      using digits from the  ISO/IEC 646:1991  standard.  This	record
	      shall  override the size field in the following header block(s).
	      When used in write or  copy  mode,  pax  shall  include  a  size
	      extended	header	record for each file with a size value greater
	      than 8589934591 (octal 77777777777).

       uid    The user ID of the file owner, expressed	as  a  decimal	number
	      using  digits  from  the	ISO/IEC 646:1991 standard. This record
	      shall override the uid field in the following  header  block(s).
	      When  used  in  write  or	 copy  mode,  pax  shall include a uid
	      extended header record for each file whose owner ID  is  greater
	      than 2097151 (octal 7777777).

       uname  The  owner of the following file(s), formatted as a user name in
	      the user database. This record shall override the uid and	 uname
	      fields  in  the  following header block(s), and any uid extended
	      header record. When used in read, copy, or list mode, pax	 shall
	      translate	 the name from the UTF-8 encoding in the header record
	      to the character set appropriate for the user  database  on  the
	      receiving	 system.  If  any  of  the  UTF-8 characters cannot be
	      translated, and if the -o invalid= UTF-8 option  is  not	speci‐
	      fied, the results are implementation-defined. When used in write
	      or copy mode, pax shall include a uname extended	header	record
	      for  each	 file  whose  user name cannot be represented entirely
	      with the letters and digits of the portable character set.

       If the <value> field is zero length, it shall delete any	 header	 block
       field,  previously  entered  extended  header value, or global extended
       header value of the same name.

       If a keyword in an extended header record (or in a -o  option-argument)
       overrides  or  deletes a corresponding field in the ustar header block,
       pax shall ignore the contents of that header block field.

       Unlike the ustar header block fields, NULs shall not delimit  <value>s;
       all  characters	within	the <value> field shall be considered data for
       the field. None of the length limitations of  the  ustar	 header	 block
       fields  in  ustar  Header  Block	 shall	apply  to  the extended header
       records.

   pax Extended Header 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	 shall
       determine a file attribute in the following sequence:

	1. If -o delete= keyword-prefix is used, the affected attributes shall
	   be determined from step 7., if applicable, or ignored otherwise.

	2. If -o keyword:= is used, the affected attributes shall be ignored.

	3. If -o keyword := value is used, the	affected  attribute  shall  be
	   assigned the value.

	4. If  there  is  a  typeflag  x  extended header record, the affected
	   attribute shall be  assigned	 the  <value>.	When  extended	header
	   records  conflict,  the  last  one  given  in the header shall take
	   precedence.

	5. If -o keyword = value is used,  the	affected  attribute  shall  be
	   assigned the value.

	6. If  there  is  a  typeflag  g  global  extended  header record, the
	   affected attribute shall  be	 assigned  the	<value>.  When	global
	   extended  header records conflict, the last one given in the global
	   header shall take precedence.

	7. Otherwise, the attribute shall be determined from the ustar	header
	   block.

   pax Extended Header File Times
       The  pax	 utility shall write 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 Inter‐
       change 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	shall  be formatted as a decimal representation of the time in
       seconds since the Epoch. If a period ( '.' ) decimal point character is
       present, the digits to the right of the point shall represent the units
       of a subsecond timing granularity, 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, the pax utility shall truncate the time of a file to
       the greatest value that is not greater than the input header file time.
       In write or copy mode, the pax utility shall output a time  exactly  if
       it  can be represented exactly as a decimal number, and otherwise shall
       generate only enough digits so that the same time shall be recovered if
       the  file is extracted on a system whose underlying implementation sup‐
       ports the same time granularity.

   ustar Interchange Format
       A ustar archive tape or file shall contain a series of logical records.
       Each  logical record shall be a fixed-size logical record of 512 octets
       (see below). Although this format may be thought of as being stored  on
       9-track	industry-standard  12.7 mm (0.5 in) magnetic tape, other types
       of transportable media are not excluded.	 Each file archived  shall  be
       represented  by	a  header logical record that describes the file, fol‐
       lowed by zero or more logical records that give	the  contents  of  the
       file. At the end of the archive file there shall be two 512-octet logi‐
       cal records filled with binary zeros, interpreted as an	end-of-archive
       indicator.

       The  logical  records  may  be  grouped for physical I/O operations, as
       described under the -b blocksize and -x ustar options.  Each  group  of
       logical	records	 may  be written with a single operation equivalent to
       the write() function.  On magnetic tape, the result of this write shall
       be  a  single tape physical block. The last physical block shall always
       be the full size, so logical records after the two zero logical records
       may contain undefined data.

       The header logical record shall be structured as shown in the following
       table. All lengths and offsets are in decimal.

			      Table: 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 shall be 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 shall be provided for interchange
       purposes.

       However, the pax utility shall never create filenames on the local sys‐
       tem   that   cannot   be	 accessed  via	the  procedures	 described  in
       IEEE Std 1003.1-2001. 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. The pax utility may 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 character on the archive medium shall be
       stored contiguously.

       The fields magic, uname, and gname are character	 strings  each	termi‐
       nated  by  a  NUL  character. The fields name, linkname, and prefix are
       NUL-terminated character strings except	when  all  characters  in  the
       array contain non-NUL characters including the last character. The ver‐
       sion 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> or
       NUL characters.

       The name and the prefix fields shall produce the pathname of the	 file.
       A  new  pathname shall be formed, if prefix is not an empty string (its
       first character is not NUL), by concatenating prefix (up to  the	 first
       NUL  character),	 a  slash character, and name; otherwise, name is used
       alone. In either case, name is terminated at the first  NUL  character.
       If  prefix  begins  with	 a NUL character, it shall be ignored. In this
       manner, pathnames of at most 256 characters  can	 be  supported.	 If  a
       pathname	 does not fit in the space provided, pax shall notify the user
       of the error, and shall not store any part of the file-header or	 data-
       on the medium.

       The  linkname  field, described below, shall not use the prefix to pro‐
       duce a pathname. As such, a linkname is limited to 100  characters.  If
       the  name does not fit in the space provided, pax shall notify the user
       of the error, and shall not attempt to store the link on the medium.

       The mode field provides 12 bits encoded in the  ISO/IEC 646:1991	 stan‐
       dard  octal  digit representation. The encoded bits shall represent the
       following values:

			       Table: ustar mode Field

       Bit Value IEEE 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  shall  be ignored. Some of the mode bits in the
       archive	format	are  not  mentioned  elsewhere	in  this   volume   of
       IEEE Std 1003.1-2001.  If  the  implementation  does  not support those
       bits, they may 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 shall be specified as zero. If the typeflag field
       is set to specify a file of type 5 (directory), the size field shall be
       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  this	volume
       of IEEE Std 1003.1-2001, and no data logical records shall be stored on
       the medium. Additionally, for type 6, the size field shall  be  ignored
       when reading. If the typeflag field is set to any other value, the num‐
       ber of  logical	records	 written  following  the  header  shall	 be  (
       size+511)/512, ignoring any fraction in the result of the division.

       The  mtime field shall be 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() func‐
       tion.

       The chksum field shall be the ISO/IEC 646:1991 standard IRV representa‐
       tion  of	 the octal value of the simple sum of all octets in the header
       logical record. Each octet  in  the  header  shall  be  treated	as  an
       unsigned	 value.	 These	values	shall be 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 shall be  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 (see the previous description for size). If con‐
       version to a regular file occurs, the  pax  utility  shall  produce  an
       error  indicating  that	the conversion took place. All of the typeflag
       fields shall be coded in the ISO/IEC 646:1991 standard IRV:

       0      Represents a regular file. For backwards-compatibility, a	 type‐
	      flag value of binary zero ( '\0' ) should be recognized as mean‐
	      ing a regular file when extracting files from the	 archive.  Ar‐
	      chives written with this version of the archive file format cre‐
	      ate 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, previ‐
	      ously 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 NUL-character  terminator
	      if it is less than 100 octets in length.

       2      Represents  a  symbolic  link. The contents of the symbolic link
	      shall be stored in the linkname field.

       3,4    Represent	 character  special  files  and	 block	special	 files
	      respectively.   In  this	case  the devmajor and devminor fields
	      shall contain information defining the  device,  the  format  of
	      which  is	 unspecified  by  this volume of IEEE Std 1003.1-2001.
	      Implementations may map the device specifications to  their  own
	      local specification or may ignore the entry.

       5      Specifies	 a  directory  or  subdirectory. On systems where disk
	      allocation is performed on a directory  basis,  the  size	 field
	      shall contain the maximum number of octets (which may be rounded
	      to the nearest disk block allocation unit)  that	the  directory
	      may hold. A size field of zero indicates no such limiting.  Sys‐
	      tems that do not support limiting in this manner	should	ignore
	      the size field.

       6      Specifies a FIFO special file. Note that 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'	 to  'Z',  inclusive,  are reserved for custom
	      implementations. All other values are reserved for  future  ver‐
	      sions of IEEE Std 1003.1-2001.

       Attempts	 to archive a socket using ustar interchange format shall pro‐
       duce a diagnostic message. Handling of other file types is  implementa‐
       tion-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 NUL), the
       uname and gname fields shall contain the ISO/IEC 646:1991 standard  IRV
       representation  of the owner and group of the file, respectively (trun‐
       cated to fit, if necessary). When the file is restored by a privileged,
       protection-preserving  version of the utility, the user and group data‐
       bases shall be scanned for these names.	If found, the user  and	 group
       IDs  contained  within these files shall be used rather than the values
       contained within the uid and gid fields.

   cpio Interchange Format
       The octet-oriented cpio archive format shall be a  series  of  entries,
       each comprising a header that describes the file, the name of the file,
       and then the contents of the file.

       An archive may be recorded as a series of fixed-size blocks of  octets.
       This  blocking  shall be used only to make physical I/O more efficient.
       The last group of blocks shall always be at the full size.

       For the octet-oriented cpio archive format, the individual entry infor‐
       mation  shall  be in the order indicated and described by the following
       table; see also the <cpio.h> header.

		      Table: Octet-Oriented cpio Archive Entry

	      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
	      File Data Field Name  Length		Interpreted as
	      c_filedata	    c_filesize		Data

   cpio Header
       For each file in the archive, a header as defined previously  shall  be
       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 shall be extended to the necessary length by append‐
       ing 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 shall be interpreted as
       follows:

       c_magic
	      Identify	the  archive  as being a transportable archive by con‐
	      taining the identifying value "070707" .

       c_dev, c_ino
	      Contains values that uniquely identify the file within  the  ar‐
	      chive  (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
	      shall be determined in an unspecified manner.

       c_mode Contains	the file type and access permissions as defined in the
	      following table.

			    Table: Values for cpio c_mode Field

		   File Permissions Name  Value	   Indicates
		   C_IRUSR		  000400   Read by owner
		   C_IWUSR		  000200   Write by owner
		   C_IXUSR		  000100   Execute by owner
		   C_IRGRP		  000040   Read by group
		   C_IWGRP		  000020   Write by group
		   C_IXGRP		  000010   Execute by group
		   C_IROTH		  000004   Read by others
		   C_IWOTH		  000002   Write by others
		   C_IXOTH		  000001   Execute by others
		   C_ISUID		  004000   Set uid
		   C_ISGID		  002000   Set gid
		   C_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

       Directories, FIFOs, symbolic links, and regular	files  shall  be  sup‐
       ported  on  a system conforming to this volume of IEEE Std 1003.1-2001;
       additional values defined previously  are  reserved  for	 compatibility
       with  existing  systems.	  Additional file types may be supported; how‐
       ever, such files should not be  written	to  archives  intended	to  be
       transported to other systems.

       c_uid  Contains the user ID of the owner.

       c_gid  Contains the group ID of the group.

       c_nlink
	      Contains	the  number  of links referencing the file at the time
	      the archive was created.

       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
	      NUL character.

       c_filesize
	      Contains	the  length  of	 the file in octets. This shall be the
	      length of the data section following the header structure.

   cpio Filename
       The c_name field shall contain 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 path‐
       name, 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	shall  be 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 shall be provided for interchange
       purposes. However, the pax utility shall never create filenames on  the
       local  system that cannot be accessed via the procedures described pre‐
       viously in this volume of IEEE Std 1003.1-2001. If a filename is	 found
       on  the medium that would create an invalid filename, it is implementa‐
       tion-defined whether the data from the file is stored on the local file
       system  and under what name it is stored. The pax utility may 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 shall be c_filesize octets of data. Interpreta‐
       tion of such data occurs in a manner dependent on the file. If  c_file‐
       size is zero, no data shall be contained in c_filedata.

       When restoring from an archive:

	* If the user does not have the appropriate privilege to create a file
	  of the specified type, pax shall ignore the entry and write an error
	  message to standard error.

	* Only	regular	 files	have  data to be restored. Presuming a regular
	  file meets any selection criteria that might be imposed on the  for‐
	  mat-reading utility by the user, such data shall be restored.

	* If  a	 user  does not have appropriate privilege to set a particular
	  mode flag, the flag shall be ignored. Some of the mode flags in  the
	  archive  format  are	not  mentioned	elsewhere  in  this  volume of
	  IEEE Std 1003.1-2001. If the implementation does not	support	 those
	  flags, they may be ignored.

   cpio Special Entries
       FIFO special files, directories, and the trailer shall be recorded with
       c_filesize equal to  zero.  For	other  special	files,	c_filesize  is
       unspecified by this volume of IEEE Std 1003.1-2001.  The header for the
       next file entry in the archive shall be written directly after the last
       octet  of  the  file entry preceding it. A header denoting the filename
       TRAILER!!! shall indicate the end  of  the  archive;  the  contents  of
       octets  in  the	last  block of the archive following such a header are
       undefined.

EXIT STATUS
       The following exit values shall be returned:

	0     All files were processed successfully.

       >0     An error occurred.

CONSEQUENCES OF 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	shall  be written to standard error and a non-zero exit status
       shall be returned, but processing shall continue. In the case where pax
       cannot  create  a  link	to a file, pax shall 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 may have only partially extracted the file or
       (if the -n option was not specified) may 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  may
       have  additional	 bits  from  the S_IRWXU mask set as well as incorrect
       modification and access times.

       The following sections are informative.

APPLICATION USAGE
       The -p  (privileges)  option  was  invented  to	reconcile  differences
       between historical tar and cpio implementations. In particular, the two
       utilities use -m in diametrically opposed ways. The -p option also pro‐
       vides  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 may 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 pre‐
	      serve all aspects of the files as they are recorded in  the  ar‐
	      chive.   The e flag is the sum of o and p, and other implementa‐
	      tion-defined 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 pathname per line format of standard input precludes  pathnames
       containing  <newline>s.	Although  such	pathnames violate the portable
       filename guidelines, they may exist  and	 their	presence  may  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 volume  of  IEEE Std 1003.1-2001.  Specifi‐
       cally,  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 may fail if per‐
       missions on the first version of the file do not permit it to be	 over‐
       written.

       The  cpio  and  ustar  formats  can only support files up to 8589934592
       bytes (8 * 2^30) in size.

EXAMPLES
       The following command:

	      pax -w -f /dev/rmt/1m .

       copies the contents of the current directory to tape  drive  1,	medium
       density (assuming historical System V device naming procedures-the his‐
       torical BSD device name would be /dev/rmt9).

       The following commands:

	      mkdir newdirpax -rw olddir newdir

       copy the olddir directory hierarchy to newdir.

	      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.

       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 1492 /usr/foo/bar

       Using the options:

	      -o listopt='%L\t%(size)D\n%.7' \
	      -o listopt='(name)s\n%(ctime)T\n%T'

       overrides the default output description in Standard Output and instead
       writes:

	      /usr/foo/bar -> /tmp   1492
	      /usr/fo
	      Jan 12 1991
	      Jan 31 15:53

RATIONALE
       The  pax	 utility was new for the ISO POSIX-2:1993 standard.  It repre‐
       sents a peaceful compromise between advocates of the historical tar and
       cpio utilities.

       A  fundamental  difference between cpio and tar was in the way directo‐
       ries were treated. The cpio utility did not treat  directories  differ‐
       ently  from  other  files,  and	to select a directory and its contents
       required that each file in the hierarchy be explicitly  specified.  For
       tar, a directory matched every file in the file hierarchy it rooted.

       The  pax	 utility  offers  both interfaces; by default, directories map
       into the file hierarchy they root. The -d option causes pax to skip any
       file  not  explicitly  referenced,  as cpio historically did. The tar -
       style behavior was chosen as the default because it was	believed  that
       this  was  the  more  common usage and because tar is the more commonly
       available interface, as it was historically provided on both  System  V
       and BSD implementations.

       The   data   interchange	  format   specification  in  this  volume  of
       IEEE Std 1003.1-2001 requires that processes with  "appropriate	privi‐
       leges"  shall always restore the ownership and permissions of extracted
       files exactly as archived. If  viewed  from  the	 historic  equivalence
       between	superuser and "appropriate privileges", there are two problems
       with this requirement.  First, users running as superusers may  unknow‐
       ingly set dangerous permissions on extracted files. Second, it is need‐
       lessly limiting, in that superusers cannot extract files and  own  them
       as  superuser  unless  the  archive  was	 created by the superuser. (It
       should be noted that restoration of ownerships and permissions for  the
       superuser, by default, is historical practice in cpio, but not in tar.)
       In order to avoid these two problems,  the  pax	specification  has  an
       additional  "privilege" mechanism, the -p option. Only a pax invocation
       with the privileges needed, and which has the -p option set using the e
       specification  character,  has  the  "appropriate privilege" to restore
       full ownership and permission information.

       Note also that this volume of IEEE Std 1003.1-2001  requires  that  the
       file  ownership	and access permissions shall be set, on extraction, in
       the same fashion as the creat() function when provided  with  the  mode
       stored  in  the	archive. This means that the file creation mask of the
       user is applied to the file permissions.

       Users should note that directories may be created by pax while extract‐
       ing  files  with permissions that are different from those that existed
       at the time the archive was created. When extracting sensitive informa‐
       tion  into  a  directory	 hierarchy  that  no  longer exists, users are
       encouraged to set their file creation  mask  appropriately  to  protect
       these files during extraction.

       The  table  of contents output is written to standard output to facili‐
       tate pipeline processing.

       An early proposal had hard links displaying for all pathnames. This was
       removed	because	 it complicates the output of the case where -v is not
       specified and does not  match  historical  cpio	usage.	The  hard-link
       information is available in the -v display.

       The  description	 of  the -l option allows implementations to make hard
       links to symbolic links.	 IEEE Std 1003.1-2001 does not specify any way
       to create a hard link to a symbolic link, but many implementations pro‐
       vide this capability as an extension. If there are hard links  to  sym‐
       bolic  links when an archive is created, the implementation is required
       to archive the hard link in the archive (unless -H or -L is specified).
       When  in	 read  mode  and in copy mode, implementations supporting hard
       links to symbolic links should use them when appropriate.

       The archive formats inherited from the POSIX.1-1990 standard have  cer‐
       tain  restrictions  that have been brought along from historical usage.
       For example, there are restrictions on the length of  pathnames	stored
       in  the archive. When pax is used in copy( -rw) mode (copying directory
       hierarchies), the ability to use extensions  from  the  -x  pax	format
       overcomes these restrictions.

       The default blocksize value of 5120 bytes for cpio was selected because
       it is one of the standard block-size values for cpio, set when  the  -B
       option  is  specified.  (The other default block-size value for cpio is
       512 bytes, and this was considered to be too small.) The default	 block
       value  of 10240 bytes for tar was selected because that is the standard
       block-size value for BSD tar. The maximum block	size  of  32256	 bytes
       (2**15-512 bytes) is the largest multiple of 512 bytes that fits into a
       signed 16-bit tape controller transfer register. There are known	 limi‐
       tations	in  some  historical  systems that would prevent larger blocks
       from being accepted. Historical values were chosen to improve  compati‐
       bility with historical scripts using dd or similar utilities to manipu‐
       late archives. Also, default block sizes for any file type  other  than
       character   special   file   has	 been  deleted	from  this  volume  of
       IEEE Std 1003.1-2001 as unimportant and not likely to affect the struc‐
       ture of the resulting archive.

       Implementations	are  permitted to modify the block-size value based on
       the archive format or the device to which the archive is being written.
       This  is to provide implementations with the opportunity to take advan‐
       tage of special types of devices, and it should not be used  without  a
       great  deal  of	consideration as it almost certainly decreases archive
       portability.

       The intended use of the -n option was to permit extraction  of  one  or
       more files from the archive without processing the entire archive. This
       was viewed by the standard developers as offering  significant  perfor‐
       mance  advantages  over	historical  implementations.  The -n option in
       early proposals had three effects; the first was to cause special char‐
       acters in patterns to not be treated specially. The second was to cause
       only the first file that matched a pattern to be extracted.  The	 third
       was  to	cause pax to write a diagnostic message to standard error when
       no file was found matching a specified pattern. Only the second	behav‐
       ior  is	retained by this volume of IEEE Std 1003.1-2001, for many rea‐
       sons. First, it is in general not acceptable for	 a  single  option  to
       have  multiple  effects.	 Second,  the ability to make pattern matching
       characters act as normal characters is useful for parts	of  pax	 other
       than  file  extraction.	Third, a finer degree of control over the spe‐
       cial characters is useful because users may wish to  normalize  only  a
       single  special	character  in  a single filename. Fourth, given a more
       general escape mechanism, the previous behavior of the -n option can be
       easily  obtained using the -s option or a sed script.  Finally, writing
       a diagnostic message when a pattern specified by the user is  unmatched
       by any file is useful behavior in all cases.

       In this version, the -n was removed from the copy mode synopsis of pax;
       it is inapplicable because there are no pattern operands	 specified  in
       this mode.

       There   is   another   method   than   pax   for	 copying  subtrees  in
       IEEE Std 1003.1-2001 described as part of the cp utility. Both  methods
       are  historical	practice: cp provides a simpler, more intuitive inter‐
       face, while pax offers a finer granularity of  control.	Each  provides
       additional functionality to the other; in particular, pax maintains the
       hard-link structure of the hierarchy while  cp  does  not.  It  is  the
       intention of the standard developers that the results be similar (using
       appropriate option combinations in both utilities). The results are not
       required	 to  be	 identical; there seemed insufficient gain to applica‐
       tions to balance the difficulty of implementations having to  guarantee
       that the results would be exactly identical.

       A  single  archive  may	span  more than one file. It is suggested that
       implementations provide informative messages to the  user  on  standard
       error whenever the archive file is changed.

       The -d option (do not create intermediate directories not listed in the
       archive) found in early proposals was originally provided as a  comple‐
       ment to the historic -d option of cpio.	It has been deleted.

       The -s option in early proposals specified a subset of the substitution
       command from the ed utility. As there was no reason for only  a	subset
       to  be  supported,  the -s option is now compatible with the current ed
       specification. Since the delimiter can be any non-null  character,  the
       following usage with single spaces is valid:

	      pax -s " foo bar " ...

       The  -t	description  is	 worded	 so as to note that this may cause the
       access time update caused by some other activity	 (which	 occurs	 while
       the file is being read) to be overwritten.

       The  default  behavior of pax with regard to file modification times is
       the same as historical implementations of tar. It is not the historical
       behavior of cpio.

       Because	the  -i	 option uses /dev/tty, utilities without a controlling
       terminal are not able to use this option.

       The -y option, found in early proposals, has  been  deleted  because  a
       line  containing a single period for the -i option has equivalent func‐
       tionality. The special lines for the -i option (a single period and the
       empty line) are historical practice in cpio.

       In early drafts, a -e charmap option was included to increase portabil‐
       ity of files between systems using different coded character sets. This
       option  was omitted because it was apparent that consensus could not be
       formed for it. In this version, the use of UTF-8 should be an  adequate
       substitute.

       The  -k	option	was  added to address international concerns about the
       dangers involved in the character set transformations  of  -e  (if  the
       target  character  set  were  different	from the source, the filenames
       might be transformed into names matching existing files) and  also  was
       made  more  general  to	protect files transferred between file systems
       with different {NAME_MAX} values (truncating a filename	on  a  smaller
       system  might  also inadvertently overwrite existing files). As stated,
       it prevents any overwriting, even if the target file is older than  the
       source.	This  version  adds  more granularity of options to solve this
       problem by introducing the -o invalid=  option-specifically  the	 UTF-8
       action. (Note that an existing file that is named with a UTF-8 encoding
       is still subject to overwriting in this case. The -k option closes that
       loophole.)

       Some   of  the  file  characteristics  referenced  in  this  volume  of
       IEEE Std 1003.1-2001 might not be supported by  some  archive  formats.
       For  example,  neither the tar nor cpio formats contain the file access
       time. For this reason, the e specification character has been provided,
       intended	 to cause all file characteristics specified in the archive to
       be retained.

       It is required that  extracted  directories,  by	 default,  have	 their
       access  and modification times and permissions set to the values speci‐
       fied in the archive. This has obvious problems in that the  directories
       are  almost certainly modified after being extracted and that directory
       permissions may not permit file creation.  One possible solution is  to
       create  directories with the mode specified in the archive, as modified
       by the umask of the user, with sufficient  permissions  to  allow  file
       creation. After all files have been extracted, pax would then reset the
       access and modification times and permissions as necessary.

       The list-mode formatting	 description  borrows  heavily	from  the  one
       defined	by the printf utility. However, since there is no separate op‐
       erand list to get conversion arguments,	the  format  was  extended  to
       allow  specifying  the  name  of the conversion argument as part of the
       conversion specification.

       The T conversion specifier allows time fields to be displayed in any of
       the date formats. Unlike the ls utility, pax does not adjust the format
       when the date is less than six months in the past. This	makes  parsing
       the output more predictable.

       The   D	conversion  specifier  handles	the  ability  to  display  the
       major/minor or file size, as with ls, by using %-8(size)D.

       The L conversion specifier handles the ls display for symbolic links.

       Conversion specifiers were added to generate existing known types  used
       for ls.

   pax Interchange Format
       The  new	 POSIX data interchange format was developed primarily to sat‐
       isfy international concerns that the ustar and  cpio  formats  did  not
       provide for file, user, and group names encoded in characters outside a
       subset of the ISO/IEC 646:1991 standard. The standard developers	 real‐
       ized  that this new POSIX data interchange format should be very exten‐
       sible because there were other requirements they foresaw	 in  the  near
       future:

	* Support international character encodings and locale information

	* Support security information (ACLs, and so on)

	* Support future file types, such as realtime or contiguous files

	* Include data areas for implementation use

	* Support  systems with words larger than 32 bits and timers with sub‐
	  second granularity

       The following were not goals for this format because these  are	better
       handled	by separate utilities or are inappropriate for a portable for‐
       mat:

	* Encryption

	* Compression

	* Data translation between locales and codesets

	* inode storage

       The format chosen to support the goals is an  extension	of  the	 ustar
       format.	Of the two formats previously available, only the ustar format
       was selected for extensions because:

	* It was easier to extend in an	 upwards-compatible  way.  It  offered
	  version  flags  and  header  block  type fields with room for future
	  standardization. The cpio format, while possessing a	more  flexible
	  file naming methodology, could not be extended without breaking some
	  theoretical implementation or using a dummy filename that could be a
	  legitimate filename.

	* Industry  experience since the original " tar wars" fought in devel‐
	  oping the ISO POSIX-1 standard has clearly  been  in	favor  of  the
	  ustar	 format, which is generally the default output format selected
	  for pax implementations on new systems.

       The new format was designed with one additional goal in	mind:  reason‐
       able  behavior when an older tar or pax utility happened to read an ar‐
       chive. Since the POSIX.1-1990 standard mandated that a  "format-reading
       utility"	 had  to  treat unrecognized typeflag values as regular files,
       this allowed the format to include all the extended  information	 in  a
       pseudo-regular  file  that  preceded each real file. An option is given
       that allows the archive creator to set up reasonable  names  for	 these
       files on the older systems. Also, the normative text suggests that rea‐
       sonable file access values be used for this ustar header block.	Making
       these  header  files  inaccessible  for convenient reading and deleting
       would not be reasonable. File permissions of 600 or 700 are suggested.

       The ustar typeflag field was used to accommodate the  additional	 func‐
       tionality  of  the  new format rather than magic or version because the
       POSIX.1-1990 standard (and, by reference, the previous version of pax),
       mandated the behavior of the format-reading utility when it encountered
       an unknown typeflag, but was silent about the other two fields.

       Early proposals of the first revision to IEEE Std 1003.1-2001 contained
       a  proposed  archive  format  that  was based on compatibility with the
       standard for tape files (ISO 1001, similar to the format used  histori‐
       cally  on  many	mainframes  and minicomputers). This format was overly
       complex	and  required  considerable  overhead  in  volume  and	header
       records. Furthermore, the standard developers felt that it would not be
       acceptable to the community  of	POSIX  developers,  so	it  was	 later
       changed	to  be a format more closely related to historical practice on
       POSIX systems.

       The prefix and name split of pathnames in ustar	was  replaced  by  the
       single path extended header record for simplicity.

       The  concept  of	 a global extended header ( typeflag g) was controver‐
       sial. If this were applied to an archive	 being	recorded  on  magnetic
       tape,  a	 few unreadable blocks at the beginning of the tape could be a
       serious problem; a utility attempting to extract as many files as  pos‐
       sible  from  a  damaged	archive	 could lose a large percentage of file
       header information in this case.	 However, if the  archive  were	 on  a
       reliable	 medium,  such	as a CD-ROM, the global extended header offers
       considerable potential size reductions by eliminating redundant	infor‐
       mation.	Thus, the text warns against using the global method for unre‐
       liable media and provides a method for implanting global information in
       the  extended  header  for  each	 file,	rather	than in the typeflag g
       records.

       No facility for data translation or filtering on a  per-file  basis  is
       included	 because the standard developers could not invent an interface
       that would allow this in an efficient manner.  If  a  filter,  such  as
       encryption  or  compression,  is	 to be applied to all the files, it is
       more efficient to apply the filter to the entire archive	 as  a	single
       file. The standard developers considered interfaces that would invoke a
       shell script for each file going into or out of the  archive,  but  the
       system overhead in this approach was considered to be too high.

       One such approach would be to have filter= records that give a pathname
       for an executable. When the program is invoked, the  file  and  archive
       would be open for standard input/output and all the header fields would
       be available as environment variables or	 command-line  arguments.  The
       standard	 developers  did  discuss  such schemes, but they were omitted
       from IEEE Std 1003.1-2001 due to	 concerns  about  excessive  overhead.
       Also,  the program itself would need to be in the archive if it were to
       be used portably.

       There is currently no  portable	means  of  identifying	the  character
       set(s)  used for a file in the file system. Therefore, pax has not been
       given a mechanism to generate charset records automatically.  The  only
       portable means of doing this is for the user to write the archive using
       the -o charset= string command line option. This assumes	 that  all  of
       the  files  in  the archive use the same encoding. The "implementation-
       defined" text is included to allow for a system that can	 identify  the
       encodings used for each of its files.

       The  table of standards that accompanies the charset record description
       is acknowledged to be very limited. Only a limited number of  character
       set standards is reasonable for maximal interchange.  Any character set
       is, of course, possible by  prior  agreement.  It  was  suggested  that
       EBCDIC  be  listed,  but	 it was omitted because it is not defined by a
       formal standard. Formal standards, and then only those with  reasonably
       large  followings,  can be included here, simply as a matter of practi‐
       cality. The <value>s represent names of officially registered character
       sets in the format required by the ISO 2375:1985 standard.

       The  normal  comma  or <blank>-separated list rules are not followed in
       the case of keyword options to  allow  ease  of	argument  parsing  for
       getopts.

       Further	information on character encodings is in pax Archive Character
       Set Encoding/Decoding .

       The standard developers have reserved keyword  name  space  for	vendor
       extensions. It is suggested that the format to be used is:

	      VENDOR.keyword

       where VENDOR is the name of the vendor or organization in all uppercase
       letters. It is further suggested that the keyword following the	period
       be named differently than any of the standard keywords so that it could
       be used for future standardization, if  appropriate,  by	 omitting  the
       VENDOR prefix.

       The  <length>  field in the extended header record was included to make
       it simpler to step through the records, even if a  record  contains  an
       unknown	format (to a particular pax) with complex interactions of spe‐
       cial characters. It also provides a minor integrity  checkpoint	within
       the records to aid a program attempting to recover files from a damaged
       archive.

       There are no extended header versions  of  the  devmajor	 and  devminor
       fields because the unspecified format ustar header field should be suf‐
       ficient. If they are not, vendor-specific extended  keywords  (such  as
       VENDOR.devmajor) should be used.

       Device  and i-number labeling of files was not adopted from cpio; files
       are interchanged strictly on a symbolic name basis, as in ustar.

       Just as with the ustar format descriptions, the	new  format  makes  no
       special arrangements for multi-volume archives. Each of the pax archive
       types is assumed to be inside a single POSIX file  and  splitting  that
       file  over  multiple  volumes  (diskettes, tape cartridges, and so on),
       processing their labels, and mounting each in the proper	 sequence  are
       considered  to  be  implementation  details  that  cannot  be described
       portably.

       The pax format is intended for interchange, not only for	 backup	 on  a
       single  (family	of)  systems.  It is not as densely packed as might be
       possible for backup:

	* It contains information as coded characters that could be  coded  in
	  binary.

	* It  identifies extended records with name fields that could be omit‐
	  ted in favor of a fixed-field layout.

	* It translates names into a portable  character  set  and  identifies
	  locale-related  information,	both of which are probably unnecessary
	  for backup.

       The requirements on restoring from an archive  are  slightly  different
       from  the  historical wording, allowing for non-monolithic privilege to
       bring forward as much as possible. In particular,  attributes  such  as
       "high  performance  file"  might be broadly but not universally granted
       while set-user-ID or chown() might be much more restricted.   There  is
       no implication in IEEE Std 1003.1-2001 that the security information be
       honored after it is restored to the file hierarchy, in  spite  of  what
       might  be  improperly  inferred by the silence on that topic. That is a
       topic for another standard.

       Links are recorded in the fashion described here because a link can  be
       to any file type. It is desirable in general to be able to restore part
       of an archive selectively and restore all of those files completely. If
       the  data  is  not  associated with each link, it is not possible to do
       this. However, the data associated with a file can be large,  and  when
       selective  restoration is not needed, this can be a significant burden.
       The archive is structured so that files that have  no  associated  data
       can  always  be	restored by the name of any link name of any link, and
       the user may choose whether data is recorded with each  instance	 of  a
       file  that  contains  data.  The format permits mixing of both types of
       links in a single archive; this can be done for special needs, and  pax
       is  expected  to interpret such archives on input properly, despite the
       fact that there is no pax option that would force this  mixed  case  on
       output.	(When  -o linkdata is used, the output must contain the dupli‐
       cate data, but the implementation is free to include it or omit it when
       -o linkdata is not used.)

       The  time  values  are  included	 as  extended header records for those
       implementations needing more than the eleven octal  digits  allowed  by
       the  ustar  format. Portable file timestamps cannot be negative. If pax
       encounters a file with a negative timestamp in copy or write  mode,  it
       can reject the file, substitute a non-negative timestamp, or generate a
       non-portable timestamp with a leading '-' . Even though some  implemen‐
       tations	can  support  finer  file-time granularities than seconds, the
       normative text requires	support	 only  for  seconds  since  the	 Epoch
       because the ISO POSIX-1 standard states them that way. The ustar format
       includes only mtime; the new format adds atime and ctime for  symmetry.
       The  atime  access time restored to the file system will be affected by
       the -p a and -p e options.  The ctime  creation	time  (actually	 inode
       modification time) is described with "appropriate privilege" so that it
       can be ignored when writing to the file system. POSIX does not  provide
       a  portable  means to change file creation time. Nothing is intended to
       prevent a non-portable implementation of pax from restoring the value.

       The gid, size, and uid extended header records were included  to	 allow
       expansion  beyond  the  sizes  specified in the regular tar header. New
       file system architectures are emerging that will exhaust	 the  12-digit
       size  field.  There are probably not many systems requiring more than 8
       digits for user and group IDs, but  the	extended  header  values  were
       included	 for  completeness,  allowing overrides for all of the decimal
       values in the tar header.

       The standard developers intended to describe the effective  results  of
       pax with regard to file ownerships and permissions; implementations are
       not restricted in timing or sequencing the restoration  of  such,  pro‐
       vided the results are as specified.

       Much  of	 the  text  describing the extended headers refers to use in "
       write or copy modes". The copy mode references are due to the normative
       text:  "The  effect  of	the  copy shall be as if the copied files were
       written to an archive file and then subsequently extracted ...".	 There
       is  certainly  no  way  to  test whether pax is actually generating the
       extended headers in copy mode, but the effects must be as if it had.

   pax Archive Character Set Encoding/Decoding
       There is a need to exchange archives of files between systems  of  dif‐
       ferent  native codesets. Filenames, group names, and user names must be
       preserved to the fullest extent possible when an archive is read on the
       receiving  platform. Translation of the contents of files is not within
       the scope of the pax utility.

       There will also be the need to represent characters that are not avail‐
       able  on the receiving platform. These unsupported characters cannot be
       automatically folded to the local set of characters due to  the	chance
       of  collisions.	This  could  result  in overwriting previous extracted
       files from the archive or pre-existing files on the system.

       For these reasons, the codeset used to represent characters within  the
       extended header records of the pax archive must be sufficiently rich to
       handle all commonly used character sets. The fields requiring  transla‐
       tion  include,  at  a  minimum, filenames, user names, group names, and
       link pathnames. Implementations may wish	 to  have  localized  extended
       keywords that use non-portable characters.

       The standard developers considered the following options:

	* The  archive	creator	 specifies the well-defined name of the source
	  codeset. The receiver must then recognize the codeset name and  per‐
	  form the appropriate translations to the destination codeset.

	* The  archive	creator includes within the archive the character map‐
	  ping table for the source codeset used  to  encode  extended	header
	  records. The receiver must then read the character mapping table and
	  perform the appropriate translations to the destination codeset.

	* The archive creator translates the extended header  records  in  the
	  source codeset into a canonical form. The receiver must then perform
	  the appropriate translations to the destination codeset.

       The approach that incorporates the name of the source codeset poses the
       problem	of codeset name registration, and makes the archive useless to
       pax archive decoders that do not recognize that codeset.

       Because parts of an archive may be corrupted, the  standard  developers
       felt  that  including  the  character map of the source codeset was too
       fragile. The loss of this one key component could result in making  the
       entire  archive	useless.  (The	difference between this and the global
       extended header decision was that the latter has a workaround-duplicat‐
       ing  extended  header records on unreliable media-but this would be too
       burdensome for large character set maps.)

       Both of the above approaches also put an undue burden on	 the  pax  ar‐
       chive  receiver	to handle the cross-product of all source and destina‐
       tion codesets.

       To simplify the translation from the source codeset  to	the  canonical
       form  and from the canonical form to the destination codeset, the stan‐
       dard developers decided that the internal representation	 should	 be  a
       stateless  encoding.  A	stateless encoding is one where each codepoint
       has the same meaning, without regard to the decoder being in a specific
       state.  An  example of a stateful encoding would be the Japanese Shift-
       JIS; an example of a stateless encoding would be	 the  ISO/IEC 646:1991
       standard (equivalent to 7-bit ASCII).

       For these reasons, the standard developers decided to adopt a canonical
       format for the representation of file information strings. The obvious,
       well-endorsed  candidate is the ISO/IEC 10646-1:2000 standard (based in
       part on Unicode), which can be used to represent the characters of vir‐
       tually  all  standardized  character sets. The standard developers ini‐
       tially agreed upon using UCS2 (16-bit Unicode) as the  internal	repre‐
       sentation.  This	 repertoire of characters provides a sufficiently rich
       set to represent all commonly-used codesets.

       However, the standard developers found that the 16-bit  Unicode	repre‐
       sentation  had some problems. It forced the issue of standardizing byte
       ordering. The 2-byte length of each character made the extended	header
       records	twice as long for the case of strings coded entirely from his‐
       torical 7-bit ASCII. For these reasons, the standard  developers	 chose
       the UTF-8 defined in the ISO/IEC 10646-1:2000 standard. This multi-byte
       representation encodes UCS2 or UCS4 characters reliably and determinis‐
       tically,	 eliminating  the need for a canonical byte ordering. In addi‐
       tion, NUL octets and other characters possibly confusing to POSIX  file
       systems	do not appear, except to represent themselves. It was realized
       that certain national codesets take up more space after	the  encoding,
       due  to their placement within the UCS range; it was felt that the use‐
       fulness of the encoding of the names outweighs the disadvantage of size
       increase for file, user, and group names.

       The encoding of UTF-8 is as follows:

	      UCS4 Hex Encoding	 UTF-8 Binary Encoding

	      00000000-0000007F	 0xxxxxxx
	      00000080-000007FF	 110xxxxx 10xxxxxx
	      00000800-0000FFFF	 1110xxxx 10xxxxxx 10xxxxxx
	      00010000-001FFFFF	 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
	      00200000-03FFFFFF	 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
	      04000000-7FFFFFFF	 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

       where  each  'x' represents a bit value from the character being trans‐
       lated.

   ustar Interchange Format
       The description of the ustar format reflects numerous enhancements over
       pre-1988	 versions  of  the  historical	tar utility. The goal of these
       changes was not only to provide the  functional	enhancements  desired,
       but  also  to  retain  compatibility between new and old versions. This
       compatibility has been retained.	 Archives written using	 the  old  ar‐
       chive format are compatible with the new format.

       Implementors  should  be	 aware	that  the previous file format did not
       include a mechanism to archive directory type files. For	 this  reason,
       the  convention	of  using  a filename ending with slash was adopted to
       specify a directory on the archive.

       The total size of the name and prefix fields have been set to meet  the
       minimum	requirements for {PATH_MAX}. If a pathname will fit within the
       name field, it is recommended that the pathname be stored there without
       the use of the prefix field. Although the name field is known to be too
       small to contain {PATH_MAX} characters, the value was  not  changed  in
       this version of the archive file format to retain backwards-compatibil‐
       ity, and instead the prefix was introduced. Also, because of  the  ear‐
       lier  version  of the format, there is no way to remove the restriction
       on the linkname field being limited in size to just that	 of  the  name
       field.

       The  size  field	 is  required  to  be meaningful in all implementation
       extensions, although it could be zero. This is  required	 so  that  the
       data blocks can always be properly counted.

       It  is  suggested  that	if device special files need to be represented
       that cannot be represented in the standard  format,  that  one  of  the
       extension  types	 (  A- Z) be used, and that the additional information
       for the special file be represented as data and	be  reflected  in  the
       size field.

       Attempting  to  restore	a  special file type, where it is converted to
       ordinary data and conflicts with an existing filename, need not be spe‐
       cially  detected by the utility. If run as an ordinary user, pax should
       not be able to overwrite the entries in, for example, /dev in any  case
       (whether	 the  file  is	converted to another type or not). If run as a
       privileged user, it should be able to do so, and it would be considered
       a bug if it did not.  The same is true of ordinary data files and simi‐
       larly named special files; it is impossible to anticipate the needs  of
       the user (who could really intend to overwrite the file), so the behav‐
       ior should be predictable (and thus regular) and rely on the protection
       system as required.

       The  value 7 in the typeflag field is intended to define how contiguous
       files can be stored in a ustar archive.	IEEE Std 1003.1-2001 does  not
       require	the  contiguous file extension, but does define a standard way
       of archiving such files so that all conforming  systems	can  interpret
       these  file  types  in  a meaningful and consistent manner. On a system
       that does not support extended file types, the pax  utility  should  do
       the best it can with the file and go on to the next.

       The file protection modes are those conventionally used by the ls util‐
       ity. This is extended beyond the usage in the ISO POSIX-2  standard  to
       support the "shared text" or "sticky" bit. It is intended that the con‐
       formance document should not document anything beyond the existence  of
       and  support  of	 such a mode. Further extensions are expected to these
       bits, particularly with overloading the	set-user-ID  and  set-group-ID
       flags.

   cpio Interchange Format
       The  reference to appropriate privilege in the cpio format refers to an
       error on standard output; the ustar format  does	 not  make  comparable
       statements.

       The  model  for	this  format  was the historical System V cpio -c data
       interchange format. This model documents the portable  version  of  the
       cpio  format  and  not  the  binary version.  It has the flexibility to
       transfer data of any type described within IEEE Std 1003.1-2001, yet is
       extensible  to  transfer	 data  types  specific	to  extensions	beyond
       IEEE Std 1003.1-2001  (for  example,  contiguous	 files).  Because   it
       describes  existing  practice,  there  is  no  question	of maintaining
       upwards-compatibility.

   cpio Header
       There has been some concern that the size of the	 c_ino	field  of  the
       header  is too small to handle those systems that have very large inode
       numbers. However, the c_ino field in the header is used strictly	 as  a
       hard-link  resolution mechanism for archives. It is not necessarily the
       same value as the inode number of the file in the location  from	 which
       that file is extracted.

       The name c_magic is based on historical usage.

   cpio Filename
       For  most  historical  implementations  of the cpio utility, {PATH_MAX}
       octets can be used to describe the pathname without the addition of any
       other  header  fields  (the  NUL	 character  would  be included in this
       count). {PATH_MAX} is the minimum value for pathname  size,  documented
       as  256	bytes. However, an implementation may use c_namesize to deter‐
       mine the exact length of the pathname. With the current description  of
       the  <cpio.h>  header,  this  pathname size can be as large as a number
       that is described in six octal digits.

       Two values are documented under the c_mode field values to provide  for
       extensibility for known file types:

       0110 000
	      Reserved	for contiguous files. The implementation may treat the
	      rest of the information for this archive like  a	regular	 file.
	      If  this	file  type is undefined, the implementation may create
	      the file as a regular file.

       This provides for extensibility of the cpio format while	 allowing  for
       the  ability to read old archives. Files of an unknown type may be read
       as "regular files" on some implementations.  On a system that does  not
       support	extended file types, the pax utility should do the best it can
       with the file and go on to the next.

FUTURE DIRECTIONS
       None.

SEE ALSO
       Shell Command Language, cp, ed, getopts, ls, printf(), the Base Defini‐
       tions  volume  of IEEE Std 1003.1-2001, <cpio.h>, the System Interfaces
       volume of IEEE Std 1003.1-2001, chown(),	 creat(),  mkdir(),  mkfifo(),
       stat(), utime(), write()

COPYRIGHT
       Portions	 of  this text are reprinted and reproduced in electronic form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       --  Portable  Operating	System	Interface (POSIX), The Open Group Base
       Specifications Issue 6, Copyright (C) 2001-2003	by  the	 Institute  of
       Electrical  and	Electronics  Engineers, Inc and The Open Group. In the
       event of any discrepancy between this version and the original IEEE and
       The  Open Group Standard, the original IEEE and The Open Group Standard
       is the referee document. The original Standard can be  obtained	online
       at http://www.opengroup.org/unix/online.html .

IEEE/The Open Group		     2003			       PAX(1P)
[top]

List of man pages available for Oracle

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net