mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-12-23 01:53:46 +01:00
1174 lines
29 KiB
Groff
1174 lines
29 KiB
Groff
.\" Copyright (c) 1992 Keith Muller.
|
|
.\" Copyright (c) 1992, 1993
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" This code is derived from software contributed to Berkeley by
|
|
.\" Keith Muller of the University of California, San Diego.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed by the University of
|
|
.\" California, Berkeley and its contributors.
|
|
.\" 4. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)pax.1 8.4 (Berkeley) 4/18/94
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd April 18, 1994
|
|
.Dt PAX 1
|
|
.Os BSD 4.4
|
|
.Sh NAME
|
|
.Nm pax
|
|
.Nd read and write file archives and copy directory hierarchies
|
|
.Sh SYNOPSIS
|
|
.Nm
|
|
.Op Fl cdnv
|
|
.Bk -words
|
|
.Op Fl f Ar archive
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl s Ar replstr
|
|
.Ar ...
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl U Ar user
|
|
.Ar ...
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl G Ar group
|
|
.Ar ...
|
|
.Ek
|
|
.Bk -words
|
|
.Oo
|
|
.Fl T
|
|
.Op Ar from_date
|
|
.Op Ar ,to_date
|
|
.Oc
|
|
.Ar ...
|
|
.Ek
|
|
.Op Ar pattern ...
|
|
.Nm
|
|
.Fl r
|
|
.Op Fl cdiknuvDYZ
|
|
.Bk -words
|
|
.Op Fl f Ar archive
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl o Ar options
|
|
.Ar ...
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl p Ar string
|
|
.Ar ...
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl s Ar replstr
|
|
.Ar ...
|
|
.Ek
|
|
.Op Fl E Ar limit
|
|
.Bk -words
|
|
.Op Fl U Ar user
|
|
.Ar ...
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl G Ar group
|
|
.Ar ...
|
|
.Ek
|
|
.Bk -words
|
|
.Oo
|
|
.Fl T
|
|
.Op Ar from_date
|
|
.Op Ar ,to_date
|
|
.Oc
|
|
.Ar ...
|
|
.Ek
|
|
.Op Ar pattern ...
|
|
.Nm
|
|
.Fl w
|
|
.Op Fl dituvHLPX
|
|
.Bk -words
|
|
.Op Fl b Ar blocksize
|
|
.Ek
|
|
.Oo
|
|
.Op Fl a
|
|
.Op Fl f Ar archive
|
|
.Oc
|
|
.Bk -words
|
|
.Op Fl x Ar format
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl s Ar replstr
|
|
.Ar ...
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl o Ar options
|
|
.Ar ...
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl U Ar user
|
|
.Ar ...
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl G Ar group
|
|
.Ar ...
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl B Ar bytes
|
|
.Ek
|
|
.Bk -words
|
|
.Oo
|
|
.Fl T
|
|
.Op Ar from_date
|
|
.Op Ar ,to_date
|
|
.Op Ar /[c][m]
|
|
.Oc
|
|
.Ar ...
|
|
.Ek
|
|
.Op Ar file ...
|
|
.Nm
|
|
.Fl r
|
|
.Fl w
|
|
.Op Fl diklntuvDHLPXYZ
|
|
.Bk -words
|
|
.Op Fl p Ar string
|
|
.Ar ...
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl s Ar replstr
|
|
.Ar ...
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl U Ar user
|
|
.Ar ...
|
|
.Ek
|
|
.Bk -words
|
|
.Op Fl G Ar group
|
|
.Ar ...
|
|
.Ek
|
|
.Bk -words
|
|
.Oo
|
|
.Fl T
|
|
.Op Ar from_date
|
|
.Op Ar ,to_date
|
|
.Op Ar /[c][m]
|
|
.Oc
|
|
.Ar ...
|
|
.Ek
|
|
.Op Ar file ...
|
|
.Ar directory
|
|
.Sh DESCRIPTION
|
|
.Nm Pax
|
|
will read, write, and list the members of an archive file,
|
|
and will copy directory hierarchies.
|
|
.Nm Pax
|
|
operation is independent of the specific archive format,
|
|
and supports a wide variety of different archive formats.
|
|
A list of supported archive formats can be found under the description of the
|
|
.Fl x
|
|
option.
|
|
.Pp
|
|
The presence of the
|
|
.Fl r
|
|
and the
|
|
.Fl w
|
|
options specifies which of the following functional modes
|
|
.Nm
|
|
will operate under:
|
|
.Em list , read , write ,
|
|
and
|
|
.Em copy.
|
|
.Bl -tag -width 6n
|
|
.It <none>
|
|
.Em List .
|
|
.Nm Pax
|
|
will write to
|
|
.Dv standard output
|
|
a table of contents of the members of the archive file read from
|
|
.Dv standard input ,
|
|
whose pathnames match the specified
|
|
.Ar patterns.
|
|
The table of contents contains one filename per line
|
|
and is written using single line buffering.
|
|
.It Fl r
|
|
.Em Read .
|
|
.Nm Pax
|
|
extracts the members of the archive file read from the
|
|
.Dv standard input ,
|
|
with pathnames matching the specified
|
|
.Ar patterns.
|
|
The archive format and blocking is automatically determined on input.
|
|
When an extracted file is a directory, the entire file hierarchy
|
|
rooted at that directory is extracted.
|
|
All extracted files are created relative to the current file hierarchy.
|
|
The setting of ownership, access and modification times, and file mode of
|
|
the extracted files are discussed in more detail under the
|
|
.Fl p
|
|
option.
|
|
.It Fl w
|
|
.Em Write .
|
|
.Nm Pax
|
|
writes an archive containing the
|
|
.Ar file
|
|
operands to
|
|
.Dv standard output
|
|
using the specified archive format.
|
|
When no
|
|
.Ar file
|
|
operands are specified, a list of files to copy with one per line is read from
|
|
.Dv standard input .
|
|
When a
|
|
.Ar file
|
|
operand is also a directory, the entire file hierarchy rooted
|
|
at that directory will be included.
|
|
.It Fl r Fl w
|
|
.Em Copy .
|
|
.Nm Pax
|
|
copies the
|
|
.Ar file
|
|
operands to the destination
|
|
.Ar directory .
|
|
When no
|
|
.Ar file
|
|
operands are specified, a list of files to copy with one per line is read from
|
|
the
|
|
.Dv standard input .
|
|
When a
|
|
.Ar file
|
|
operand is also a directory the entire file
|
|
hierarchy rooted at that directory will be included.
|
|
The effect of the
|
|
.Em copy
|
|
is 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 (see the
|
|
.Fl l
|
|
option below).
|
|
.Pp
|
|
.Em Warning :
|
|
The destination
|
|
.Ar directory
|
|
must not be one of the
|
|
.Ar file
|
|
operands or a member of a file hierarchy rooted at one of the
|
|
.Ar file
|
|
operands.
|
|
The result of a
|
|
.Em copy
|
|
under these conditions is unpredictable.
|
|
.El
|
|
.Pp
|
|
While processing a damaged archive during a
|
|
.Em read
|
|
or
|
|
.Em list
|
|
operation,
|
|
.Nm
|
|
will attempt to recover from media defects and will search through the archive
|
|
to locate and process the largest number of archive members possible (see the
|
|
.Fl E
|
|
option for more details on error handling).
|
|
.Sh OPERANDS
|
|
.Pp
|
|
The
|
|
.Ar directory
|
|
operand specifies a destination directory pathname.
|
|
If the
|
|
.Ar directory
|
|
operand does not exist, or it is not writable by the user,
|
|
or it is not of type directory,
|
|
.Nm
|
|
will exit with a non-zero exit status.
|
|
.Pp
|
|
The
|
|
.Ar pattern
|
|
operand is used to select one or more pathnames of archive members.
|
|
Archive members are selected using the pattern matching notation described
|
|
by
|
|
.Xr fnmatch 3 .
|
|
When the
|
|
.Ar pattern
|
|
operand is not supplied, all members of the archive will be selected.
|
|
When a
|
|
.Ar pattern
|
|
matches a directory, the entire file hierarchy rooted at that directory will
|
|
be selected.
|
|
When a
|
|
.Ar pattern
|
|
operand does not select at least one archive member,
|
|
.Nm
|
|
will write these
|
|
.Ar pattern
|
|
operands in a diagnostic message to
|
|
.Dv standard error
|
|
and then exit with a non-zero exit status.
|
|
.Pp
|
|
The
|
|
.Ar file
|
|
operand specifies the pathname of a file to be copied or archived.
|
|
When a
|
|
.Ar file
|
|
operand does not select at least one archive member,
|
|
.Nm
|
|
will write these
|
|
.Ar file
|
|
operand pathnames in a diagnostic message to
|
|
.Dv standard error
|
|
and then exit with a non-zero exit status.
|
|
.Sh OPTIONS
|
|
.Pp
|
|
The following options are supported:
|
|
.Bl -tag -width 4n
|
|
.It Fl r
|
|
Read an archive file from
|
|
.Dv standard input
|
|
and extract the specified
|
|
.Ar files .
|
|
If any intermediate directories are needed in order to extract an archive
|
|
member, these directories will be created as if
|
|
.Xr mkdir 2
|
|
was called with the bitwise inclusive
|
|
.Dv OR
|
|
of
|
|
.Dv S_IRWXU , S_IRWXG ,
|
|
and
|
|
.Dv S_IRWXO
|
|
as the mode argument.
|
|
When the selected archive format supports the specification of linked
|
|
files and these files cannot be linked while the archive is being extracted,
|
|
.Nm
|
|
will write a diagnostic message to
|
|
.Dv standard error
|
|
and exit with a non-zero exit status at the completion of operation.
|
|
.It Fl w
|
|
Write files to the
|
|
.Dv standard output
|
|
in the specified archive format.
|
|
When no
|
|
.Ar file
|
|
operands are specified,
|
|
.Dv standard input
|
|
is read for a list of pathnames with one per line without any leading or
|
|
trailing
|
|
.Aq blanks .
|
|
.It Fl a
|
|
Append
|
|
.Ar files
|
|
to the end of an archive that was previously written.
|
|
If an archive format is not specified with a
|
|
.Fl x
|
|
option, the format currently being used in the archive will be selected.
|
|
Any attempt to append to an archive in a format different from the
|
|
format already used in the archive will cause
|
|
.Nm
|
|
to exit immediately
|
|
with a non-zero exit status.
|
|
The blocking size used in the archive volume where writing starts
|
|
will continue to be used for the remainder of that archive volume.
|
|
.Pp
|
|
.Em Warning :
|
|
Many storage devices are not able to support the operations necessary
|
|
to perform an append operation.
|
|
Any attempt to append to an archive stored on such a device may damage the
|
|
archive or have other unpredictable results.
|
|
Tape drives in particular are more likely to not support an append operation.
|
|
An archive stored in a regular file system file or on a disk device will
|
|
usually support an append operation.
|
|
.It Fl b Ar blocksize
|
|
When
|
|
.Em writing
|
|
an archive,
|
|
block the output at a positive decimal integer number of
|
|
bytes per write to the archive file.
|
|
The
|
|
.Ar blocksize
|
|
must be a multiple of 512 bytes with a maximum of 32256 bytes.
|
|
A
|
|
.Ar blocksize
|
|
can end with
|
|
.Li k
|
|
or
|
|
.Li b
|
|
to specify multiplication by 1024 (1K) or 512, respectively.
|
|
A pair of
|
|
.Ar blocksizes
|
|
can be separated by
|
|
.Li x
|
|
to indicate a product.
|
|
A specific archive device may impose additional restrictions on the size
|
|
of blocking it will support.
|
|
When blocking is not specified, the default
|
|
.Ar blocksize
|
|
is dependent on the specific archive format being used (see the
|
|
.Fl x
|
|
option).
|
|
.It Fl c
|
|
Match all file or archive members
|
|
.Em except
|
|
those specified by the
|
|
.Ar pattern
|
|
and
|
|
.Ar file
|
|
operands.
|
|
.It Fl d
|
|
Cause files of type directory being copied or archived, or archive members of
|
|
type directory being extracted, to match only the directory file or archive
|
|
member and not the file hierarchy rooted at the directory.
|
|
.It Fl f Ar archive
|
|
Specify
|
|
.Ar archive
|
|
as the pathname of the input or output archive, overriding the default
|
|
.Dv standard input
|
|
(for
|
|
.Em list
|
|
and
|
|
.Em read )
|
|
or
|
|
.Dv standard output
|
|
(for
|
|
.Em write ) .
|
|
A single archive may span multiple files and different archive devices.
|
|
When required,
|
|
.Nm
|
|
will prompt for the pathname of the file or device of the next volume in the
|
|
archive.
|
|
.It Fl i
|
|
Interactively rename files or archive members.
|
|
For each archive member matching a
|
|
.Ar pattern
|
|
operand or each file matching a
|
|
.Ar file
|
|
operand,
|
|
.Nm
|
|
will prompt to
|
|
.Pa /dev/tty
|
|
giving the name of the file, its file mode and its modification time.
|
|
.Nm Pax
|
|
will then read a line from
|
|
.Pa /dev/tty .
|
|
If this line is blank, the file or archive member is skipped.
|
|
If this line consists of a single period, the
|
|
file or archive member is processed with no modification to its name.
|
|
Otherwise, its name is replaced with the contents of the line.
|
|
.Nm Pax
|
|
will immediately exit with a non-zero exit status if
|
|
.Dv <EOF>
|
|
is encountered when reading a response or if
|
|
.Pa /dev/tty
|
|
cannot be opened for reading and writing.
|
|
.It Fl k
|
|
Do not overwrite existing files.
|
|
.It Fl l
|
|
Link files.
|
|
(The letter ell).
|
|
In the
|
|
.Em copy
|
|
mode (
|
|
.Fl r
|
|
.Fl w ) ,
|
|
hard links are made between the source and destination file hierarchies
|
|
whenever possible.
|
|
.It Fl n
|
|
Select the first archive member that matches each
|
|
.Ar pattern
|
|
operand.
|
|
No more than one archive member is matched for each
|
|
.Ar pattern .
|
|
When members of type directory are matched, the file hierarchy rooted at that
|
|
directory is also matched (unless
|
|
.Fl d
|
|
is also specified).
|
|
.It Fl o Ar options
|
|
Information to modify the algorithm for extracting or writing archive files
|
|
which is specific to the archive format specified by
|
|
.Fl x .
|
|
In general,
|
|
.Ar options
|
|
take the form:
|
|
.Cm name=value
|
|
.It Fl p Ar string
|
|
Specify one or more file characteristic options (privileges).
|
|
The
|
|
.Ar string
|
|
option-argument is a string specifying file characteristics to be retained or
|
|
discarded on extraction.
|
|
The string consists of the specification characters
|
|
.Cm a , e , m , o ,
|
|
and
|
|
.Cm p .
|
|
Multiple characteristics can be concatenated within the same string
|
|
and multiple
|
|
.Fl p
|
|
options can be specified.
|
|
The meaning of the specification characters are as follows:
|
|
.Bl -tag -width 2n
|
|
.It Cm a
|
|
Do not preserve file access times.
|
|
By default, file access times are preserved whenever possible.
|
|
.It Cm e
|
|
.Sq Preserve everything ,
|
|
the user ID, group ID, file mode bits,
|
|
file access time, and file modification time.
|
|
This is intended to be used by
|
|
.Em root ,
|
|
someone with all the appropriate privileges, in order to preserve all
|
|
aspects of the files as they are recorded in the archive.
|
|
The
|
|
.Cm e
|
|
flag is the sum of the
|
|
.Cm o
|
|
and
|
|
.Cm p
|
|
flags.
|
|
.It Cm m
|
|
Do not preserve file modification times.
|
|
By default, file modification times are preserved whenever possible.
|
|
.It Cm o
|
|
Preserve the user ID and group ID.
|
|
.It Cm p
|
|
.Sq Preserve
|
|
the file mode bits.
|
|
This intended to be used by a
|
|
.Em user
|
|
with regular privileges who wants to preserve all aspects of the file other
|
|
than the ownership.
|
|
The file times are preserved by default, but two other flags are offered to
|
|
disable this and use the time of extraction instead.
|
|
.El
|
|
.Pp
|
|
In the preceding list,
|
|
.Sq preserve
|
|
indicates that an attribute stored in the archive is given to the
|
|
extracted file, subject to the permissions of the invoking
|
|
process.
|
|
Otherwise the attribute of the extracted file is determined as
|
|
part of the normal file creation action.
|
|
If neither the
|
|
.Cm e
|
|
nor the
|
|
.Cm o
|
|
specification character is specified, or the user ID and group ID are not
|
|
preserved for any reason,
|
|
.Nm
|
|
will not set the
|
|
.Dv S_ISUID
|
|
.Em ( setuid )
|
|
and
|
|
.Dv S_ISGID
|
|
.Em ( setgid )
|
|
bits of the file mode.
|
|
If the preservation of any of these items fails for any reason,
|
|
.Nm
|
|
will write a diagnostic message to
|
|
.Dv standard error .
|
|
Failure to preserve these items will affect the final exit status,
|
|
but will not cause the extracted file to be deleted.
|
|
If the file characteristic letters in any of the string option-arguments are
|
|
duplicated or conflict with each other, the one(s) given last will take
|
|
precedence.
|
|
For example, if
|
|
.Dl Fl p Ar eme
|
|
is specified, file modification times are still preserved.
|
|
.It Fl s Ar replstr
|
|
Modify the file or archive member names specified by the
|
|
.Ar pattern
|
|
or
|
|
.Ar file
|
|
operands according to the substitution expression
|
|
.Ar replstr ,
|
|
using the syntax of the
|
|
.Xr ed 1
|
|
utility regular expressions.
|
|
The format of these regular expressions are:
|
|
.Dl /old/new/[gp]
|
|
As in
|
|
.Xr ed 1 ,
|
|
.Cm old
|
|
is a basic regular expression and
|
|
.Cm new
|
|
can contain an ampersand (&), \\n (where n is a digit) back-references,
|
|
or subexpression matching.
|
|
The
|
|
.Cm old
|
|
string may also contain
|
|
.Dv <newline>
|
|
characters.
|
|
Any non-null character can be used as a delimiter (/ is shown here).
|
|
Multiple
|
|
.Fl s
|
|
expressions can be specified.
|
|
The expressions are applied in the order they are specified on the
|
|
command line, terminating with the first successful substitution.
|
|
The optional trailing
|
|
.Cm g
|
|
continues to apply the substitution expression to the pathname substring
|
|
which starts with the first character following the end of the last successful
|
|
substitution.
|
|
The first unsuccessful substitution stops the operation of the
|
|
.Cm g
|
|
option.
|
|
The optional trailing
|
|
.Cm p
|
|
will cause the final result of a successful substitution to be written to
|
|
.Dv standard error
|
|
in the following format:
|
|
.Dl <original pathname> >> <new pathname>
|
|
File or archive member names that substitute to the empty string
|
|
are not selected and will be skipped.
|
|
.It Fl t
|
|
Reset the access times of any file or directory read or accessed by
|
|
.Nm
|
|
to be the same as they were before being read or accessed by
|
|
.Nm .
|
|
.It Fl u
|
|
Ignore files that are older (having a less recent file modification time)
|
|
than a pre-existing file or archive member with the same name.
|
|
During
|
|
.Em read ,
|
|
an archive member with the same name as a file in the file system will be
|
|
extracted if the archive member is newer than the file.
|
|
During
|
|
.Em write ,
|
|
a file system member with the same name as an archive member will be
|
|
written to the archive if it is newer than the archive member.
|
|
During
|
|
.Em copy ,
|
|
the file in the destination hierarchy is replaced by the file in the source
|
|
hierarchy or by a link to the file in the source hierarchy if the file in
|
|
the source hierarchy is newer.
|
|
.It Fl v
|
|
During a
|
|
.Em list
|
|
operation, produce a verbose table of contents using the format of the
|
|
.Xr ls 1
|
|
utility with the
|
|
.Fl l
|
|
option.
|
|
For pathnames representing a hard link to a previous member of the archive,
|
|
the output has the format:
|
|
.Dl <ls -l listing> == <link name>
|
|
For pathnames representing a symbolic link, the output has the format:
|
|
.Dl <ls -l listing> => <link name>
|
|
Where <ls -l listing> is the output format specified by the
|
|
.Xr ls 1
|
|
utility when used with the
|
|
.Fl l
|
|
option.
|
|
Otherwise for all the other operational modes (
|
|
.Em read , write ,
|
|
and
|
|
.Em copy ) ,
|
|
pathnames are written and flushed to
|
|
.Dv standard error
|
|
without a trailing
|
|
.Dv <newline>
|
|
as soon as processing begins on that file or
|
|
archive member.
|
|
The trailing
|
|
.Dv <newline> ,
|
|
is not buffered, and is written only after the file has been read or written.
|
|
.It Fl x Ar format
|
|
Specify the output archive format, with the default format being
|
|
.Ar ustar .
|
|
.Nm Pax
|
|
currently supports the following formats:
|
|
.Bl -tag -width "sv4cpio"
|
|
.It Ar cpio
|
|
The extended cpio interchange format specified in the
|
|
.St -p1003.2
|
|
standard.
|
|
The default blocksize for this format is 5120 bytes.
|
|
Inode and device information about a file (used for detecting file hard links
|
|
by this format) which may be truncated by this format is detected by
|
|
.Nm
|
|
and is repaired.
|
|
.It Ar bcpio
|
|
The old binary cpio format.
|
|
The default blocksize for this format is 5120 bytes.
|
|
This format is not very portable and should not be used when other formats
|
|
are available.
|
|
Inode and device information about a file (used for detecting file hard links
|
|
by this format) which may be truncated by this format is detected by
|
|
.Nm
|
|
and is repaired.
|
|
.It Ar sv4cpio
|
|
The System V release 4 cpio.
|
|
The default blocksize for this format is 5120 bytes.
|
|
Inode and device information about a file (used for detecting file hard links
|
|
by this format) which may be truncated by this format is detected by
|
|
.Nm
|
|
and is repaired.
|
|
.It Ar sv4crc
|
|
The System V release 4 cpio with file crc checksums.
|
|
The default blocksize for this format is 5120 bytes.
|
|
Inode and device information about a file (used for detecting file hard links
|
|
by this format) which may be truncated by this format is detected by
|
|
.Nm
|
|
and is repaired.
|
|
.It Ar tar
|
|
The old BSD tar format as found in BSD4.3.
|
|
The default blocksize for this format is 10240 bytes.
|
|
Pathnames stored by this format must be 100 characters or less in length.
|
|
Only
|
|
.Em regular
|
|
files,
|
|
.Em hard links , soft links ,
|
|
and
|
|
.Em directories
|
|
will be archived (other file system types are not supported).
|
|
For backwards compatibility with even older tar formats, a
|
|
.Fl o
|
|
option can be used when writing an archive to omit the storage of directories.
|
|
This option takes the form:
|
|
.Dl Fl o Cm write_opt=nodir
|
|
.It Ar ustar
|
|
The extended tar interchange format specified in the
|
|
.St -p1003.2
|
|
standard.
|
|
The default blocksize for this format is 10240 bytes.
|
|
Pathnames stored by this format must be 250 characters or less in length.
|
|
.El
|
|
.Pp
|
|
.Nm Pax
|
|
will detect and report any file that it is unable to store or extract
|
|
as the result of any specific archive format restrictions.
|
|
The individual archive formats may impose additional restrictions on use.
|
|
Typical archive format restrictions include (but are not limited to):
|
|
file pathname length, file size, link pathname length and the type of the file.
|
|
.It Fl B Ar bytes
|
|
Limit the number of bytes written to a single archive volume to
|
|
.Ar bytes .
|
|
The
|
|
.Ar bytes
|
|
limit can end with
|
|
.Li m ,
|
|
.Li k ,
|
|
or
|
|
.Li b
|
|
to specify multiplication by 1048576 (1M), 1024 (1K) or 512, respectively.
|
|
A pair of
|
|
.Ar bytes
|
|
limits can be separated by
|
|
.Li x
|
|
to indicate a product.
|
|
.Pp
|
|
.Em Warning :
|
|
Only use this option when writing an archive to a device which supports
|
|
an end of file read condition based on last (or largest) write offset
|
|
(such as a regular file or a tape drive).
|
|
The use of this option with a floppy or hard disk is not recommended.
|
|
.It Fl D
|
|
This option is the same as the
|
|
.Fl u
|
|
option, except that the file inode change time is checked instead of the
|
|
file modification time.
|
|
The file inode change time can be used to select files whose inode information
|
|
(e.g. uid, gid, etc.) is newer than a copy of the file in the destination
|
|
.Ar directory .
|
|
.It Fl E Ar limit
|
|
Limit the number of consecutive read faults while trying to read a flawed
|
|
archives to
|
|
.Ar limit .
|
|
With a positive
|
|
.Ar limit ,
|
|
.Nm
|
|
will attempt to recover from an archive read error and will
|
|
continue processing starting with the next file stored in the archive.
|
|
A
|
|
.Ar limit
|
|
of 0 will cause
|
|
.Nm
|
|
to stop operation after the first read error is detected on an archive volume.
|
|
A
|
|
.Ar limit
|
|
of
|
|
.Li NONE
|
|
will cause
|
|
.Nm
|
|
to attempt to recover from read errors forever.
|
|
The default
|
|
.Ar limit
|
|
is a small positive number of retries.
|
|
.Pp
|
|
.Em Warning:
|
|
Using this option with
|
|
.Li NONE
|
|
should be used with extreme caution as
|
|
.Nm
|
|
may get stuck in an infinite loop on a very badly flawed archive.
|
|
.It Fl G Ar group
|
|
Select a file based on its
|
|
.Ar group
|
|
name, or when starting with a
|
|
.Cm # ,
|
|
a numeric gid.
|
|
A '\\' can be used to escape the
|
|
.Cm # .
|
|
Multiple
|
|
.Fl G
|
|
options may be supplied and checking stops with the first match.
|
|
.It Fl H
|
|
Follow only command line symbolic links while performing a physical file
|
|
system traversal.
|
|
.It Fl L
|
|
Follow all symbolic links to perform a logical file system traversal.
|
|
.It Fl P
|
|
Do not follow symbolic links, perform a physical file system traversal.
|
|
This is the default mode.
|
|
.It Fl T Ar [from_date][,to_date][/[c][m]]
|
|
Allow files to be selected based on a file modification or inode change
|
|
time falling within a specified time range of
|
|
.Ar from_date
|
|
to
|
|
.Ar to_date
|
|
(the dates are inclusive).
|
|
If only a
|
|
.Ar from_date
|
|
is supplied, all files with a modification or inode change time
|
|
equal to or younger are selected.
|
|
If only a
|
|
.Ar to_date
|
|
is supplied, all files with a modification or inode change time
|
|
equal to or older will be selected.
|
|
When the
|
|
.Ar from_date
|
|
is equal to the
|
|
.Ar to_date ,
|
|
only files with a modification or inode change time of exactly that
|
|
time will be selected.
|
|
.Pp
|
|
When
|
|
.Nm
|
|
is in the
|
|
.Em write
|
|
or
|
|
.Em copy
|
|
mode, the optional trailing field
|
|
.Ar [c][m]
|
|
can be used to determine which file time (inode change, file modification or
|
|
both) are used in the comparison.
|
|
If neither is specified, the default is to use file modification time only.
|
|
The
|
|
.Ar m
|
|
specifies the comparison of file modification time (the time when
|
|
the file was last written).
|
|
The
|
|
.Ar c
|
|
specifies the comparison of inode change time (the time when the file
|
|
inode was last changed; e.g. a change of owner, group, mode, etc).
|
|
When
|
|
.Ar c
|
|
and
|
|
.Ar m
|
|
are both specified, then the modification and inode change times are
|
|
both compared.
|
|
The inode change time comparison is useful in selecting files whose
|
|
attributes were recently changed or selecting files which were recently
|
|
created and had their modification time reset to an older time (as what
|
|
happens when a file is extracted from an archive and the modification time
|
|
is preserved).
|
|
Time comparisons using both file times is useful when
|
|
.Nm
|
|
is used to create a time based incremental archive (only files that were
|
|
changed during a specified time range will be archived).
|
|
.Pp
|
|
A time range is made up of six different fields and each field must contain two
|
|
digits.
|
|
The format is:
|
|
.Dl [yy[mm[dd[hh]]]]mm[.ss]
|
|
Where
|
|
.Cm yy
|
|
is the last two digits of the year,
|
|
the first
|
|
.Cm mm
|
|
is the month (from 01 to 12),
|
|
.Cm dd
|
|
is the day of the month (from 01 to 31),
|
|
.Cm hh
|
|
is the hour of the day (from 00 to 23),
|
|
the second
|
|
.Cm mm
|
|
is the minute (from 00 to 59),
|
|
and
|
|
.Cm ss
|
|
is the seconds (from 00 to 59).
|
|
The minute field
|
|
.Cm mm
|
|
is required, while the other fields are optional and must be added in the
|
|
following order:
|
|
.Dl Cm hh , dd , mm , yy .
|
|
The
|
|
.Cm ss
|
|
field may be added independently of the other fields.
|
|
Time ranges are relative to the current time, so
|
|
.Dl Fl T Ar 1234/cm
|
|
would select all files with a modification or inode change time
|
|
of 12:34 PM today or later.
|
|
Multiple
|
|
.Fl T
|
|
time range can be supplied and checking stops with the first match.
|
|
.It Fl U Ar user
|
|
Select a file based on its
|
|
.Ar user
|
|
name, or when starting with a
|
|
.Cm # ,
|
|
a numeric uid.
|
|
A '\\' can be used to escape the
|
|
.Cm # .
|
|
Multiple
|
|
.Fl U
|
|
options may be supplied and checking stops with the first match.
|
|
.It Fl X
|
|
When traversing the file hierarchy specified by a pathname,
|
|
do not descend into directories that have a different device ID.
|
|
See the
|
|
.Li st_dev
|
|
field as described in
|
|
.Xr stat 2
|
|
for more information about device ID's.
|
|
.It Fl Y
|
|
This option is the same as the
|
|
.Fl D
|
|
option, except that the inode change time is checked using the
|
|
pathname created after all the file name modifications have completed.
|
|
.It Fl Z
|
|
This option is the same as the
|
|
.Fl u
|
|
option, except that the modification time is checked using the
|
|
pathname created after all the file name modifications have completed.
|
|
.El
|
|
.Pp
|
|
The options that operate on the names of files or archive members (
|
|
.Fl c ,
|
|
.Fl i ,
|
|
.Fl n ,
|
|
.Fl s ,
|
|
.Fl u ,
|
|
.Fl v ,
|
|
.Fl D ,
|
|
.Fl G ,
|
|
.Fl T ,
|
|
.Fl U ,
|
|
.Fl Y ,
|
|
and
|
|
.Fl Z )
|
|
interact as follows.
|
|
.Pp
|
|
When extracting files during a
|
|
.Em read
|
|
operation, archive members are
|
|
.Sq selected ,
|
|
based only on the user specified pattern operands as modified by the
|
|
.Fl c ,
|
|
.Fl n ,
|
|
.Fl u ,
|
|
.Fl D ,
|
|
.Fl G ,
|
|
.Fl T ,
|
|
.Fl U
|
|
options.
|
|
Then any
|
|
.Fl s
|
|
and
|
|
.Fl i
|
|
options will modify in that order, the names of these selected files.
|
|
Then the
|
|
.Fl Y
|
|
and
|
|
.Fl Z
|
|
options will be applied based on the final pathname.
|
|
Finally the
|
|
.Fl v
|
|
option will write the names resulting from these modifications.
|
|
.Pp
|
|
When archiving files during a
|
|
.Em write
|
|
operation, or copying files during a
|
|
.Em copy
|
|
operation, archive members are
|
|
.Sq selected ,
|
|
based only on the user specified pathnames as modified by the
|
|
.Fl n ,
|
|
.Fl u ,
|
|
.Fl D ,
|
|
.Fl G ,
|
|
.Fl T ,
|
|
and
|
|
.Fl U
|
|
options (the
|
|
.Fl D
|
|
option only applies during a copy operation).
|
|
Then any
|
|
.Fl s
|
|
and
|
|
.Fl i
|
|
options will modify in that order, the names of these selected files.
|
|
Then during a
|
|
.Em copy
|
|
operation the
|
|
.Fl Y
|
|
and the
|
|
.Fl Z
|
|
options will be applied based on the final pathname.
|
|
Finally the
|
|
.Fl v
|
|
option will write the names resulting from these modifications.
|
|
.Pp
|
|
When one or both of the
|
|
.Fl u
|
|
or
|
|
.Fl D
|
|
options are specified along with the
|
|
.Fl n
|
|
option, a file is not considered selected unless it is newer
|
|
than the file to which it is compared.
|
|
.Sh EXAMPLES
|
|
The command:
|
|
.Dl pax -w -f /dev/rst0 .\
|
|
copies the contents of the current directory to the device
|
|
.Pa /dev/rst0 .
|
|
.Pp
|
|
The command:
|
|
.Dl pax -v -f filename
|
|
gives the verbose table of contents for an archive stored in
|
|
.Pa filename .
|
|
.Pp
|
|
The following commands:
|
|
.Dl mkdir /tmp/foo
|
|
.Dl cd /tmp/bar
|
|
.Dl pax -rw .\ /tmp/foo
|
|
will copy the entire
|
|
.Pa /tmp/bar
|
|
directory hierarchy to
|
|
.Pa /tmp/foo .
|
|
.Pp
|
|
The command:
|
|
.Dl pax -r -s ',^//*usr//*,,' -f a.pax
|
|
reads the archive
|
|
.Pa a.pax ,
|
|
with all files rooted in ``/usr'' into the archive extracted relative to the
|
|
current directory.
|
|
.Pp
|
|
The command:
|
|
.Dl pax -rw -i .\ dest_dir
|
|
can be used to interactively select the files to copy from the current
|
|
directory to
|
|
.Pa dest_dir .
|
|
.Pp
|
|
The command:
|
|
.Dl pax -r -pe -U root -G bin -f a.pax
|
|
will extract all files from the archive
|
|
.Pa a.pax
|
|
which are owned by
|
|
.Em root
|
|
with group
|
|
.Em bin
|
|
and will preserve all file permissions.
|
|
.Pp
|
|
The command:
|
|
.Dl pax -r -w -v -Y -Z home /backup
|
|
will update (and list) only those files in the destination directory
|
|
.Pa /backup
|
|
which are older (less recent inode change or file modification times) than
|
|
files with the same name found in the source file tree
|
|
.Pa home .
|
|
.Sh STANDARDS
|
|
The
|
|
.Nm
|
|
utility is a superset of the
|
|
.St -p1003.2
|
|
standard.
|
|
The options
|
|
.Fl B ,
|
|
.Fl D ,
|
|
.Fl E ,
|
|
.Fl G ,
|
|
.Fl H ,
|
|
.Fl L ,
|
|
.Fl P ,
|
|
.Fl T ,
|
|
.Fl U ,
|
|
.Fl Y ,
|
|
.Fl Z ,
|
|
the archive formats
|
|
.Ar bcpio ,
|
|
.Ar sv4cpio ,
|
|
.Ar sv4crc ,
|
|
.Ar tar ,
|
|
and the flawed archive handling during
|
|
.Ar list
|
|
and
|
|
.Ar read
|
|
operations are extensions to the
|
|
.Tn POSIX
|
|
standard.
|
|
.Sh AUTHORS
|
|
.An Keith Muller
|
|
at the University of California, San Diego
|
|
.Sh DIAGNOSTICS
|
|
.Nm Pax
|
|
will exit with one of the following values:
|
|
.Bl -tag -width 2n
|
|
.It 0
|
|
All files were processed successfully.
|
|
.It 1
|
|
An error occurred.
|
|
.El
|
|
.Pp
|
|
Whenever
|
|
.Nm
|
|
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
|
|
.Fl p
|
|
option is specified, a diagnostic message is written to
|
|
.Dv standard error
|
|
and a non-zero exit status will be returned, but processing will continue.
|
|
In the case where pax cannot create a link to a file,
|
|
.Nm
|
|
will not create a second copy of the file.
|
|
.Pp
|
|
If the extraction of a file from an archive is prematurely terminated by
|
|
a signal or error,
|
|
.Nm
|
|
may have only partially extracted a file the user wanted.
|
|
Additionally, the file modes of extracted files and directories
|
|
may have incorrect file bits, and the modification and access times may be
|
|
wrong.
|
|
.Pp
|
|
If the creation of an archive is prematurely terminated by a signal or error,
|
|
.Nm
|
|
may have only partially created the archive which may violate the specific
|
|
archive format specification.
|
|
.Pp
|
|
If while doing a
|
|
.Em copy ,
|
|
.Nm
|
|
detects a file is about to overwrite itself, the file is not copied,
|
|
a diagnostic message is written to
|
|
.Dv standard error
|
|
and when
|
|
.Nm
|
|
completes it will exit with a non-zero exit status.
|