xref: /openbsd/bin/pax/pax.1 (revision 3d8817e4)
1.\"	$OpenBSD: pax.1,v 1.61 2010/09/19 20:55:25 jmc Exp $
2.\"	$NetBSD: pax.1,v 1.3 1995/03/21 09:07:37 cgd Exp $
3.\"
4.\" Copyright (c) 1992 Keith Muller.
5.\" Copyright (c) 1992, 1993
6.\"	The Regents of the University of California.  All rights reserved.
7.\"
8.\" This code is derived from software contributed to Berkeley by
9.\" Keith Muller of the University of California, San Diego.
10.\"
11.\" Redistribution and use in source and binary forms, with or without
12.\" modification, are permitted provided that the following conditions
13.\" are met:
14.\" 1. Redistributions of source code must retain the above copyright
15.\"    notice, this list of conditions and the following disclaimer.
16.\" 2. Redistributions in binary form must reproduce the above copyright
17.\"    notice, this list of conditions and the following disclaimer in the
18.\"    documentation and/or other materials provided with the distribution.
19.\" 3. Neither the name of the University nor the names of its contributors
20.\"    may be used to endorse or promote products derived from this software
21.\"    without specific prior written permission.
22.\"
23.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33.\" SUCH DAMAGE.
34.\"
35.\"	@(#)pax.1	8.4 (Berkeley) 4/18/94
36.\"
37.Dd $Mdocdate: September 19 2010 $
38.Dt PAX 1
39.Os
40.Sh NAME
41.Nm pax
42.Nd read and write file archives and copy directory hierarchies
43.Sh SYNOPSIS
44.Bk -words
45.Nm pax
46.Op Fl 0cdjnOvz
47.Op Fl E Ar limit
48.Op Fl f Ar archive
49.Op Fl G Ar group
50.Op Fl s Ar replstr
51.Op Fl T Ar range
52.Op Fl U Ar user
53.Op Ar pattern ...
54.Nm pax
55.Fl r
56.Op Fl 0cDdijknOuvYZz
57.Op Fl E Ar limit
58.Op Fl f Ar archive
59.Op Fl G Ar group
60.Op Fl o Ar options
61.Op Fl p Ar string
62.Op Fl s Ar replstr
63.Op Fl T Ar range
64.Op Fl U Ar user
65.Op Ar pattern ...
66.Nm pax
67.Fl w
68.Op Fl 0adHijLOPtuvXz
69.Op Fl B Ar bytes
70.Op Fl b Ar blocksize
71.Op Fl f Ar archive
72.Op Fl G Ar group
73.Op Fl o Ar options
74.Op Fl s Ar replstr
75.Op Fl T Ar range
76.Op Fl U Ar user
77.Op Fl x Ar format
78.Op Ar
79.Nm pax
80.Fl rw
81.Op Fl 0DdHijkLlnOPtuvXYZ
82.Op Fl G Ar group
83.Op Fl p Ar string
84.Op Fl s Ar replstr
85.Op Fl T Ar range
86.Op Fl U Ar user
87.Op Ar
88.Ar directory
89.Ek
90.Sh DESCRIPTION
91.Nm
92will read, write, and list the members of an archive file
93and will copy directory hierarchies.
94.Nm
95operation is independent of the specific archive format
96and supports a wide variety of different archive formats.
97A list of supported archive formats can be found under the description of the
98.Fl x
99option.
100.Pp
101The presence of the
102.Fl r
103and the
104.Fl w
105options specifies which of the following functional modes
106.Nm
107will operate under:
108.Em list , read , write ,
109and
110.Em copy .
111.Bl -tag -width 6n
112.It \*(Ltnone\*(Gt
113.Em List .
114.Nm
115will write to standard output
116a table of contents of the members of the archive file read from
117standard input, whose pathnames match the specified
118.Ar pattern
119arguments.
120The table of contents contains one filename per line
121and is written using single line buffering.
122.It Fl r
123.Em Read .
124.Nm
125extracts the members of the archive file read from the standard input,
126with pathnames matching the specified
127.Ar pattern
128arguments.
129The archive format and blocking is automatically determined on input.
130When an extracted file is a directory, the entire file hierarchy
131rooted at that directory is extracted.
132All extracted files are created relative to the current file hierarchy.
133The setting of ownership, access and modification times, and file mode of
134the extracted files are discussed in more detail under the
135.Fl p
136option.
137.It Fl w
138.Em Write .
139.Nm
140writes an archive containing the
141.Ar file
142operands to standard output
143using the specified archive format.
144When no
145.Ar file
146operands are specified, a list of files to copy with one per line is read from
147standard input.
148When a
149.Ar file
150operand is also a directory, the entire file hierarchy rooted
151at that directory will be included.
152.It Fl rw
153.Em Copy .
154.Nm
155copies the
156.Ar file
157operands to the destination
158.Ar directory .
159When no
160.Ar file
161operands are specified, a list of files to copy with one per line is read from
162the standard input.
163When a
164.Ar file
165operand is also a directory the entire file
166hierarchy rooted at that directory will be included.
167The effect of the
168.Em copy
169is as if the copied files were written to an archive file and then
170subsequently extracted, except that there may be hard links between
171the original and the copied files (see the
172.Fl l
173option below).
174.Pp
175.Sy Warning :
176The destination
177.Ar directory
178must not be one of the
179.Ar file
180operands or a member of a file hierarchy rooted at one of the
181.Ar file
182operands.
183The result of a
184.Em copy
185under these conditions is unpredictable.
186.El
187.Pp
188While processing a damaged archive during a
189.Em read
190or
191.Em list
192operation,
193.Nm
194will attempt to recover from media defects and will search through the archive
195to locate and process the largest number of archive members possible (see the
196.Fl E
197option for more details on error handling).
198.Pp
199The
200.Ar directory
201operand specifies a destination directory pathname.
202If the
203.Ar directory
204operand does not exist, or it is not writable by the user,
205or it is not of type directory,
206.Nm
207will exit with a non-zero exit status.
208.Pp
209The
210.Ar pattern
211operand is used to select one or more pathnames of archive members.
212Archive members are selected using the pattern matching notation described
213by
214.Xr glob 3 .
215When the
216.Ar pattern
217operand is not supplied, all members of the archive will be selected.
218When a
219.Ar pattern
220matches a directory, the entire file hierarchy rooted at that directory will
221be selected.
222When a
223.Ar pattern
224operand does not select at least one archive member,
225.Nm
226will write these
227.Ar pattern
228operands in a diagnostic message to standard error
229and then exit with a non-zero exit status.
230.Pp
231The
232.Ar file
233operand specifies the pathname of a file to be copied or archived.
234When a
235.Ar file
236operand does not select at least one archive member,
237.Nm
238will write these
239.Ar file
240operand pathnames in a diagnostic message to standard error
241and then exit with a non-zero exit status.
242.Pp
243The options are as follows:
244.Bl -tag -width Ds
245.It Fl 0
246Use the NUL
247.Pq Ql \e0
248character as a pathname terminator, instead of newline
249.Pq Ql \en .
250This applies only to the pathnames read from standard input in
251the write and copy modes,
252and to the pathnames written to standard output in list mode.
253This option is expected to be used in concert with the
254.Fl print0
255function in
256.Xr find 1
257or the
258.Fl 0
259flag in
260.Xr xargs 1 .
261.It Fl a
262Append the given
263.Ar file
264operands
265to the end of an archive that was previously written.
266If an archive format is not specified with a
267.Fl x
268option, the format currently being used in the archive will be selected.
269Any attempt to append to an archive in a format different from the
270format already used in the archive will cause
271.Nm
272to exit immediately
273with a non-zero exit status.
274The blocking size used in the archive volume where writing starts
275will continue to be used for the remainder of that archive volume.
276.Pp
277.Sy Warning :
278Many storage devices are not able to support the operations necessary
279to perform an append operation.
280Any attempt to append to an archive stored on such a device may damage the
281archive or have other unpredictable results.
282Tape drives in particular are more likely to not support an append operation.
283An archive stored in a regular file system file or on a disk device will
284usually support an append operation.
285.It Fl B Ar bytes
286Limit the number of bytes written to a single archive volume to
287.Ar bytes .
288The
289.Ar bytes
290limit can end with
291.Sq Li m ,
292.Sq Li k ,
293or
294.Sq Li b
295to specify multiplication by 1048576 (1M), 1024 (1K) or 512, respectively.
296A pair of
297.Ar bytes
298limits can be separated by
299.Sq Li x
300to indicate a product.
301.Pp
302.Em Warning :
303Only use this option when writing an archive to a device which supports
304an end of file read condition based on last (or largest) write offset
305(such as a regular file or a tape drive).
306The use of this option with a floppy or hard disk is not recommended.
307.It Fl b Ar blocksize
308When
309.Em writing
310an archive,
311block the output at a positive decimal integer number of
312bytes per write to the archive file.
313The
314.Ar blocksize
315must be a multiple of 512 bytes with a maximum of 64512 bytes.
316Archive block sizes larger than 32256 bytes violate the
317.Tn POSIX
318standard and will not be portable to all systems.
319A
320.Ar blocksize
321can end with
322.Sq Li k
323or
324.Sq Li b
325to specify multiplication by 1024 (1K) or 512, respectively.
326A pair of
327.Ar blocksizes
328can be separated by
329.Sq Li x
330to indicate a product.
331A specific archive device may impose additional restrictions on the size
332of blocking it will support.
333When blocking is not specified, the default
334.Ar blocksize
335is dependent on the specific archive format being used (see the
336.Fl x
337option).
338.It Fl c
339Match all file or archive members
340.Em except
341those specified by the
342.Ar pattern
343and
344.Ar file
345operands.
346.It Fl D
347This option is the same as the
348.Fl u
349option, except that the file inode change time is checked instead of the
350file modification time.
351The file inode change time can be used to select files whose inode information
352(e.g., UID, GID, etc.) is newer than a copy of the file in the destination
353.Ar directory .
354.It Fl d
355Cause files of type directory being copied or archived, or archive members of
356type directory being extracted, to match only the directory file or archive
357member and not the file hierarchy rooted at the directory.
358.It Fl E Ar limit
359Limit the number of consecutive read faults while trying to read a flawed
360archive to
361.Ar limit .
362With a positive
363.Ar limit ,
364.Nm
365will attempt to recover from an archive read error and will
366continue processing starting with the next file stored in the archive.
367A
368.Ar limit
369of 0 will cause
370.Nm
371to stop operation after the first read error is detected on an archive volume.
372A
373.Ar limit
374of
375.Li NONE
376will cause
377.Nm
378to attempt to recover from read errors forever.
379The default
380.Ar limit
381is a small positive number of retries.
382.Pp
383.Em Warning :
384Using this option with
385.Li NONE
386should be used with extreme caution as
387.Nm
388may get stuck in an infinite loop on a very badly flawed archive.
389.It Fl f Ar archive
390Specify
391.Ar archive
392as the pathname of the input or output archive, overriding the default
393standard input (for
394.Em list
395and
396.Em read )
397or standard output
398(for
399.Em write ) .
400A single archive may span multiple files and different archive devices.
401When required,
402.Nm
403will prompt for the pathname of the file or device of the next volume in the
404archive.
405.It Fl G Ar group
406Select a file based on its
407.Ar group
408name, or when starting with a
409.Cm # ,
410a numeric GID.
411A
412.Ql \e
413can be used to escape the
414.Cm # .
415Multiple
416.Fl G
417options may be supplied and checking stops with the first match.
418.It Fl H
419Follow only command-line symbolic links while performing a physical file
420system traversal.
421.It Fl i
422Interactively rename files or archive members.
423For each archive member matching a
424.Ar pattern
425operand or each file matching a
426.Ar file
427operand,
428.Nm
429will prompt to
430.Pa /dev/tty
431giving the name of the file, its file mode, and its modification time.
432.Nm
433will then read a line from
434.Pa /dev/tty .
435If this line is blank, the file or archive member is skipped.
436If this line consists of a single period, the
437file or archive member is processed with no modification to its name.
438Otherwise, its name is replaced with the contents of the line.
439.Nm
440will immediately exit with a non-zero exit status if
441.Dv EOF
442is encountered when reading a response or if
443.Pa /dev/tty
444cannot be opened for reading and writing.
445.It Fl j
446Use bzip2 to compress (decompress) the archive while writing (reading).
447The bzip2 utility must be installed separately.
448Incompatible with
449.Fl a .
450.It Fl k
451Do not overwrite existing files.
452.It Fl L
453Follow all symbolic links to perform a logical file system traversal.
454.It Fl l
455(The lowercase letter
456.Dq ell . )
457Link files.
458In the
459.Em copy
460mode
461.Pq Fl r Fl w ,
462hard links are made between the source and destination file hierarchies
463whenever possible.
464.It Fl n
465Select the first archive member that matches each
466.Ar pattern
467operand.
468No more than one archive member is matched for each
469.Ar pattern .
470When members of type directory are matched, the file hierarchy rooted at that
471directory is also matched (unless
472.Fl d
473is also specified).
474.It Fl O
475Force the archive to be one volume.
476If a volume ends prematurely,
477.Nm
478will not prompt for a new volume.
479This option can be useful for
480automated tasks where error recovery cannot be performed by a human.
481.It Fl o Ar options
482Information to modify the algorithm for extracting or writing archive files
483which is specific to the archive format specified by
484.Fl x .
485In general,
486.Ar options
487take the form:
488.Ar name Ns = Ns Ar value .
489.Pp
490The following options are available for the old
491.Bx
492.Em tar
493format:
494.Pp
495.Bl -tag -width Ds -compact
496.It Cm nodir
497.It Cm write_opt=nodir
498When writing archives, omit the storage of directories.
499.El
500.It Fl P
501Do not follow symbolic links, perform a physical file system traversal.
502This is the default mode.
503.It Fl p Ar string
504Specify one or more file characteristic options (privileges).
505The
506.Ar string
507option-argument is a string specifying file characteristics to be retained or
508discarded on extraction.
509The string consists of the specification characters
510.Cm a , e , m , o ,
511and
512.Cm p .
513Multiple characteristics can be concatenated within the same string
514and multiple
515.Fl p
516options can be specified.
517The meanings of the specification characters are as follows:
518.Bl -tag -width 2n
519.It Cm a
520Do not preserve file access times.
521By default, file access times are preserved whenever possible.
522.It Cm e
523.Dq Preserve everything ,
524the user ID, group ID, file mode bits,
525file access time, and file modification time.
526This is intended to be used by
527.Em root ,
528someone with all the appropriate privileges, in order to preserve all
529aspects of the files as they are recorded in the archive.
530The
531.Cm e
532flag is the sum of the
533.Cm o
534and
535.Cm p
536flags.
537.It Cm m
538Do not preserve file modification times.
539By default, file modification times are preserved whenever possible.
540.It Cm o
541Preserve the user ID and group ID.
542.It Cm p
543.Dq Preserve
544the file mode bits.
545This is intended to be used by a
546.Em user
547with regular privileges who wants to preserve all aspects of the file other
548than the ownership.
549The file times are preserved by default, but two other flags are offered to
550disable this and use the time of extraction instead.
551.El
552.Pp
553In the preceding list,
554.Sq preserve
555indicates that an attribute stored in the archive is given to the
556extracted file, subject to the permissions of the invoking
557process.
558Otherwise the attribute of the extracted file is determined as
559part of the normal file creation action.
560If neither the
561.Cm e
562nor the
563.Cm o
564specification character is specified, or the user ID and group ID are not
565preserved for any reason,
566.Nm
567will not set the
568.Dv S_ISUID
569.Em ( setuid )
570and
571.Dv S_ISGID
572.Em ( setgid )
573bits of the file mode.
574If the preservation of any of these items fails for any reason,
575.Nm
576will write a diagnostic message to standard error.
577Failure to preserve these items will affect the final exit status,
578but will not cause the extracted file to be deleted.
579If the file characteristic letters in any of the string option-arguments are
580duplicated or conflict with each other, the one(s) given last will take
581precedence.
582For example, if
583.Fl p Ar eme
584is specified, file modification times are still preserved.
585.It Fl r
586Read an archive file from standard input
587and extract the specified
588.Ar file
589operands.
590If any intermediate directories are needed in order to extract an archive
591member, these directories will be created as if
592.Xr mkdir 2
593was called with the bitwise inclusive
594.Tn OR
595of
596.Dv S_IRWXU , S_IRWXG ,
597and
598.Dv S_IRWXO
599as the mode argument.
600When the selected archive format supports the specification of linked
601files and these files cannot be linked while the archive is being extracted,
602.Nm
603will write a diagnostic message to standard error
604and exit with a non-zero exit status at the completion of operation.
605.It Fl s Ar replstr
606Modify the archive member names according to the substitution expression
607.Ar replstr ,
608using the syntax of the
609.Xr ed 1
610utility regular expressions.
611.Ar file
612or
613.Ar pattern
614arguments may be given to restrict the list of archive members to those
615specified.
616.Pp
617The format of these regular expressions is:
618.Pp
619.Dl /old/new/[gp]
620.Pp
621As in
622.Xr ed 1 ,
623.Ar old
624is a basic regular expression (see
625.Xr re_format 7 )
626and
627.Ar new
628can contain an ampersand
629.Pq Ql & ,
630.Ql \e Ns Em n
631(where
632.Em n
633is a digit) back-references,
634or subexpression matching.
635The
636.Ar old
637string may also contain newline characters.
638Any non-null character can be used as a delimiter
639.Po
640.Ql /
641is shown here
642.Pc .
643Multiple
644.Fl s
645expressions can be specified.
646The expressions are applied in the order they are specified on the
647command line, terminating with the first successful substitution.
648.Pp
649The optional trailing
650.Cm g
651continues to apply the substitution expression to the pathname substring,
652which starts with the first character following the end of the last successful
653substitution.
654The first unsuccessful substitution stops the operation of the
655.Cm g
656option.
657The optional trailing
658.Cm p
659will cause the final result of a successful substitution to be written to
660standard error in the following format:
661.Pp
662.D1 Em original-pathname No \*(Gt\*(Gt Em new-pathname
663.Pp
664File or archive member names that substitute to the empty string
665are not selected and will be skipped.
666.It Fl T Ar range
667Allow files to be selected based on a file modification or inode change
668time falling within the specified time range.
669The range has the format:
670.Sm off
671.Bd -filled -offset indent
672.Op Ar from_date
673.Op \&, Ar to_date
674.Op / Oo Cm c Oc Op Cm m
675.Ed
676.Sm on
677.Pp
678The dates specified by
679.Ar from_date
680to
681.Ar to_date
682are inclusive.
683If only a
684.Ar from_date
685is supplied, all files with a modification or inode change time
686equal to or younger are selected.
687If only a
688.Ar to_date
689is supplied, all files with a modification or inode change time
690equal to or older will be selected.
691When the
692.Ar from_date
693is equal to the
694.Ar to_date ,
695only files with a modification or inode change time of exactly that
696time will be selected.
697.Pp
698When
699.Nm
700is in the
701.Em write
702or
703.Em copy
704mode, the optional trailing field
705.Oo Cm c Oc Ns Op Cm m
706can be used to determine which file time (inode change, file modification or
707both) are used in the comparison.
708If neither is specified, the default is to use file modification time only.
709The
710.Cm m
711specifies the comparison of file modification time (the time when
712the file was last written).
713The
714.Cm c
715specifies the comparison of inode change time (the time when the file
716inode was last changed; e.g., a change of owner, group, mode, etc).
717When
718.Cm c
719and
720.Cm m
721are both specified, then the modification and inode change times are
722both compared.
723.Pp
724The inode change time comparison is useful in selecting files whose
725attributes were recently changed or selecting files which were recently
726created and had their modification time reset to an older time (as what
727happens when a file is extracted from an archive and the modification time
728is preserved).
729Time comparisons using both file times is useful when
730.Nm
731is used to create a time based incremental archive (only files that were
732changed during a specified time range will be archived).
733.Pp
734A time range is made up of six different fields and each field must contain two
735digits.
736The format is:
737.Pp
738.Dl [[[[[cc]yy]mm]dd]HH]MM[.SS]
739.Pp
740Where
741.Ar cc
742is the first two digits of the year (the century),
743.Ar yy
744is the last two digits of the year,
745the first
746.Ar mm
747is the month (from 01 to 12),
748.Ar dd
749is the day of the month (from 01 to 31),
750.Ar HH
751is the hour of the day (from 00 to 23),
752.Ar MM
753is the minute (from 00 to 59),
754and
755.Ar SS
756is the seconds (from 00 to 59).
757The minute field
758.Ar MM
759is required, while the other fields are optional and must be added in the
760following order:
761.Ar HH , dd , mm ,
762.Ar yy , cc .
763.Pp
764The
765.Ar SS
766field may be added independently of the other fields.
767Time ranges are relative to the current time, so
768.Ic -T 1234/cm
769would select all files with a modification or inode change time
770of 12:34 PM today or later.
771Multiple
772.Fl T
773time range can be supplied and checking stops with the first match.
774.It Fl t
775Reset the access times of any file or directory read or accessed by
776.Nm
777to be the same as they were before being read or accessed by
778.Nm pax .
779.It Fl U Ar user
780Select a file based on its
781.Ar user
782name, or when starting with a
783.Cm # ,
784a numeric UID.
785A
786.Ql \e
787can be used to escape the
788.Cm # .
789Multiple
790.Fl U
791options may be supplied and checking stops with the first match.
792.It Fl u
793Ignore files that are older (having a less recent file modification time)
794than a pre-existing file or archive member with the same name.
795During
796.Em read ,
797an archive member with the same name as a file in the file system will be
798extracted if the archive member is newer than the file.
799During
800.Em write ,
801a file system member with the same name as an archive member will be
802written to the archive if it is newer than the archive member.
803During
804.Em copy ,
805the file in the destination hierarchy is replaced by the file in the source
806hierarchy or by a link to the file in the source hierarchy if the file in
807the source hierarchy is newer.
808.It Fl v
809During a
810.Em list
811operation, produce a verbose table of contents using the format of the
812.Xr ls 1
813utility with the
814.Fl l
815option.
816For pathnames representing a hard link to a previous member of the archive,
817the output has the format:
818.Pp
819.Dl Em ls -l listing Li == Em link-name
820.Pp
821For pathnames representing a symbolic link, the output has the format:
822.Pp
823.Dl Em ls -l listing Li =\*(Gt Em link-name
824.Pp
825Where
826.Em ls -l listing
827is the output format specified by the
828.Xr ls 1
829utility when used with the
830.Fl l
831option.
832Otherwise for all the other operational modes
833.Po Em read , write , No and Em copy
834.Pc ,
835pathnames are written and flushed to standard error
836without a trailing newline
837as soon as processing begins on that file or
838archive member.
839The trailing newline
840is not buffered and is written only after the file has been read or written.
841.It Fl w
842Write files to the standard output
843in the specified archive format.
844When no
845.Ar file
846operands are specified, standard input
847is read for a list of pathnames with one per line without any leading or
848trailing
849.Aq blanks .
850.It Fl X
851When traversing the file hierarchy specified by a pathname,
852do not descend into directories that have a different device ID.
853See the
854.Li st_dev
855field as described in
856.Xr stat 2
857for more information about device IDs.
858.It Fl x Ar format
859Specify the output archive format, with the default format being
860.Cm ustar .
861.Nm
862currently supports the following formats:
863.Bl -tag -width "sv4cpio"
864.It Cm bcpio
865The old binary cpio format.
866The default blocksize for this format is 5120 bytes.
867This format is not very portable and should not be used when other formats
868are available.
869Inode and device information about a file (used for detecting file hard links
870by this format), which may be truncated by this format, is detected by
871.Nm
872and is repaired.
873.It Cm cpio
874The extended cpio interchange format specified in the
875.St -p1003.2
876standard.
877The default blocksize for this format is 5120 bytes.
878Inode and device information about a file (used for detecting file hard links
879by this format), which may be truncated by this format, is detected by
880.Nm
881and is repaired.
882.It Cm sv4cpio
883The System V release 4 cpio.
884The default blocksize for this format is 5120 bytes.
885Inode and device information about a file (used for detecting file hard links
886by this format), which may be truncated by this format, is detected by
887.Nm
888and is repaired.
889.It Cm sv4crc
890The System V release 4 cpio with file CRC checksums.
891The default blocksize for this format is 5120 bytes.
892Inode and device information about a file (used for detecting file hard links
893by this format), which may be truncated by this format, is detected by
894.Nm
895and is repaired.
896.It Cm tar
897The old
898.Bx
899tar format as found in
900.Bx 4.3 .
901The default blocksize for this format is 10240 bytes.
902Pathnames stored by this format must be 100 characters or less in length.
903Only
904.Em regular
905files,
906.Em hard links , soft links ,
907and
908.Em directories
909will be archived (other file system types are not supported).
910For backwards compatibility with even older tar formats, a
911.Fl o
912option can be used when writing an archive to omit the storage of directories.
913This option takes the form:
914.Pp
915.Dl Fl o Cm write_opt=nodir
916.It Cm ustar
917The extended tar interchange format specified in the
918.St -p1003.2
919standard.
920The default blocksize for this format is 10240 bytes.
921Filenames stored by this format must be 100 characters or less in length;
922the total pathname must be 256 characters or less.
923.El
924.Pp
925.Nm
926will detect and report any file that it is unable to store or extract
927as the result of any specific archive format restrictions.
928The individual archive formats may impose additional restrictions on use.
929Typical archive format restrictions include (but are not limited to):
930file pathname length, file size, link pathname length, and the type of the
931file.
932.It Fl Y
933This option is the same as the
934.Fl D
935option, except that the inode change time is checked using the
936pathname created after all the file name modifications have completed.
937.It Fl Z
938This option is the same as the
939.Fl u
940option, except that the modification time is checked using the
941pathname created after all the file name modifications have completed.
942.It Fl z
943Use
944.Xr gzip 1
945to compress (decompress) the archive while writing (reading).
946Incompatible with
947.Fl a .
948.El
949.Pp
950The options that operate on the names of files or archive members
951.Po Fl c ,
952.Fl i ,
953.Fl j ,
954.Fl n ,
955.Fl s ,
956.Fl u ,
957.Fl v ,
958.Fl D ,
959.Fl G ,
960.Fl T ,
961.Fl U ,
962.Fl Y ,
963and
964.Fl Z
965.Pc
966interact as follows.
967.Pp
968When extracting files during a
969.Em read
970operation, archive members are
971.Sq selected ,
972based only on the user specified pattern operands as modified by the
973.Fl c ,
974.Fl n ,
975.Fl u ,
976.Fl D ,
977.Fl G ,
978.Fl T ,
979.Fl U
980options.
981Then any
982.Fl s
983and
984.Fl i
985options will modify in that order, the names of these selected files.
986Then the
987.Fl Y
988and
989.Fl Z
990options will be applied based on the final pathname.
991Finally, the
992.Fl v
993option will write the names resulting from these modifications.
994.Pp
995When archiving files during a
996.Em write
997operation, or copying files during a
998.Em copy
999operation, archive members are
1000.Sq selected ,
1001based only on the user specified pathnames as modified by the
1002.Fl n ,
1003.Fl u ,
1004.Fl D ,
1005.Fl G ,
1006.Fl T ,
1007and
1008.Fl U
1009options (the
1010.Fl D
1011option only applies during a copy operation).
1012Then any
1013.Fl s
1014and
1015.Fl i
1016options will modify in that order, the names of these selected files.
1017Then during a
1018.Em copy
1019operation the
1020.Fl Y
1021and the
1022.Fl Z
1023options will be applied based on the final pathname.
1024Finally, the
1025.Fl v
1026option will write the names resulting from these modifications.
1027.Pp
1028When one or both of the
1029.Fl u
1030or
1031.Fl D
1032options are specified along with the
1033.Fl n
1034option, a file is not considered selected unless it is newer
1035than the file to which it is compared.
1036.Sh ENVIRONMENT
1037.Bl -tag -width Fl
1038.It Ev TMPDIR
1039Path in which to store temporary files.
1040.El
1041.Sh EXIT STATUS
1042The
1043.Nm
1044utility exits with one of the following values:
1045.Pp
1046.Bl -tag -width Ds -offset indent -compact
1047.It 0
1048All files were processed successfully.
1049.It 1
1050An error occurred.
1051.El
1052.Sh EXAMPLES
1053Copy the contents of the current directory to the device
1054.Pa /dev/rst0 :
1055.Pp
1056.Dl $ pax -w -f /dev/rst0 \&.
1057.Pp
1058Give the verbose table of contents for an archive stored in
1059.Pa filename :
1060.Pp
1061.Dl $ pax -v -f filename
1062.Pp
1063This sequence of commands will copy the entire
1064.Pa olddir
1065directory hierarchy to
1066.Pa newdir :
1067.Bd -literal -offset indent
1068$ mkdir newdir
1069$ cd olddir
1070$ pax -rw . ../newdir
1071.Ed
1072.Pp
1073Extract files from the archive
1074.Pa a.pax .
1075Files rooted in
1076.Pa /usr
1077are extracted relative to the current working directory;
1078all other files are extracted to their unmodified path.
1079.Pp
1080.Dl $ pax -r -s ',^/usr/,,' -f a.pax
1081.Pp
1082This can be used to interactively select the files to copy from the
1083current directory to
1084.Pa dest_dir :
1085.Pp
1086.Dl $ pax -rw -i \&. dest_dir
1087.Pp
1088Extract all files from the archive
1089.Pa a.pax
1090which are owned by
1091.Em root
1092with group
1093.Em bin
1094and preserve all file permissions:
1095.Pp
1096.Dl "$ pax -r -pe -U root -G bin -f a.pax"
1097.Pp
1098Update (and list) only those files in the destination directory
1099.Pa /backup
1100which are older (less recent inode change or file modification times) than
1101files with the same name found in the source file tree
1102.Pa home :
1103.Pp
1104.Dl "$ pax -r -w -v -Y -Z home /backup"
1105.Sh DIAGNOSTICS
1106Whenever
1107.Nm
1108cannot create a file or a link when reading an archive or cannot
1109find a file when writing an archive, or cannot preserve the user ID,
1110group ID, or file mode when the
1111.Fl p
1112option is specified, a diagnostic message is written to standard error
1113and a non-zero exit status will be returned, but processing will continue.
1114In the case where
1115.Nm
1116cannot create a link to a file,
1117.Nm
1118will not create a second copy of the file.
1119.Pp
1120If the extraction of a file from an archive is prematurely terminated by
1121a signal or error,
1122.Nm
1123may have only partially extracted a file the user wanted.
1124Additionally, the file modes of extracted files and directories
1125may have incorrect file bits, and the modification and access times may be
1126wrong.
1127.Pp
1128If the creation of an archive is prematurely terminated by a signal or error,
1129.Nm
1130may have only partially created the archive, which may violate the specific
1131archive format specification.
1132.Pp
1133If while doing a
1134.Em copy ,
1135.Nm
1136detects a file is about to overwrite itself, the file is not copied,
1137a diagnostic message is written to standard error
1138and when
1139.Nm
1140completes it will exit with a non-zero exit status.
1141.Sh SEE ALSO
1142.Xr cpio 1 ,
1143.Xr tar 1
1144.Sh STANDARDS
1145The
1146.Nm
1147utility is compliant with the
1148.St -p1003.1-2008
1149specification.
1150.Pp
1151The flags
1152.Op Fl 0BDEGjOPTUYZz ,
1153the archive formats
1154.Em bcpio ,
1155.Em sv4cpio ,
1156.Em sv4crc ,
1157.Em tar ,
1158and the flawed archive handling during
1159.Em list
1160and
1161.Em read
1162operations
1163are extensions to that specification.
1164.Sh AUTHORS
1165Keith Muller at the University of California, San Diego.
1166