The version cpio(1) documented here is the GNU
version.
The cpio(1) utility copies files into or out of a cpio or
tar archive, which is a file that contains other files and
information about them, such as the file name, owner, timestamps,
and access permissions. The archive can be another file on the
disk, a magnetic tape, or a pipe.
The cpio(1) utility has the following three operating
modes:
-o
In copy-out mode, cpio(1) copies files into an
archive. It reads a list of file names, one per line, on the
standard input, and writes the archive onto the standard output.
You can generate the list of file names with the find(1)
command. To minimize problems with permissions on directories that
you can neither write to nor search, give find(1) the
-depth option.
-i
In copy-in mode, cpio(1) copies files out of an
archive or lists the archive contents. It reads the archive from
the standard input. Any non-option command-line arguments are shell
globbing patterns. Only those files in the archive whose names
match one or more of those patterns are copied from the archive.
Unlike how it is interpreted in the shell, an initial period
(.) in a file name does match a wildcard at the start of a
pattern, and a slash (/) in a file name can match wildcards.
If no patterns are given, all files are extracted.
-p
In copy-pass mode, cpio(1) copies files from one
directory tree to another, combining the copy-out and copy-in steps
without actually using an archive. It reads the list of files to
copy from the standard input. The directory into which it will copy
files is given as a non-option argument.
The cpio(1) utility supports the following archive
formats:
binary, old ASCII, new ASCII, crc, HPUX binary, HPUX old ASCII,
old tar, and POSIX.1 tar
(See -H for the keywords to specify each format.)
The binary format is obsolete because it encodes information
about the files in a way that is not portable between different
computer architectures. The old ASCII format is portable between
different architectures, but should not be used on file systems
with more than 65536 i-nodes.
The new ASCII format is portable between different architectures
and can be used on any size file system. It is not supported by all
versions of cpio(1), however. Currently, it is only
supported by GNU and System V R4.
The Cyclical Redundancy Check (CRC) format is like the new ASCII
format, but it also contains a checksum for each file, which
cpio(1) calculates when creating an archive, and verifies
when the file is extracted from the archive.
The HPUX formats are provided for compatibility with the HPUX
implementation of cpio(1), which stores device files
differently from the GNU implementation.
The tar format is provided for compatibility with the
tar(1) program. It cannot be used to archive files with
names longer than 100 characters, and cannot be used to archive
"special" (block or character devices) files. The POSIX.1 tar
format cannot be used to archive files with names containing more
than 255 characters (fewer than 255 unless they have a slash
(/) in just the right place).
By default, cpio(1) creates binary format archives for
compatibility with older cpio(1) programs. When extracting
from archives, cpio(1) automatically recognizes which kind
of archive it is reading and can read archives created on computers
with a different byte-order.
Some of the options to cpio(1) apply only to certain
operating modes; see the SYNOPSIS section for a list of which
options are allowed in which modes.
In copy-out and copy-pass modes, read a list of file names
terminated by a null character instead of a newline, so that files
whose names contain newlines can be archived. GNU find
produces a list of null-terminated file names.
-a, --reset-access-time
Reset the access times of files after reading them so that it
does not look like they have just been read.
-A, --append
Append to an existing archive. Only works in copy-out mode. The
archive must be a disk file specified with the -O or
(--file) option.
-b, --swap
In copy-in mode, swap both halfwords of words and bytes of
halfwords in the data. Equivalent to -sS. Use this option to
convert 32-bit integers between big-endian and little-endian
computers.
-B
Set the I/O block size to 5120 bytes. Initially, the block size
is 512 bytes.
--block-size=block-size
Set the I/O block size to block-size * 512 bytes.
-c
Use the old portable (ASCII) archive format.
-Cio-size, --io-size=io-size
Set the I/O block size to io-size bytes.
-d, --make-directories
Create leading directories where needed.
-Efile, --pattern-file=file
In copy-in mode, read additional patterns specifying file names
to extract or list from file. The lines of file are
treated as if they had been non-option arguments to
cpio(1).
-f, --nonmatching
Copy only those files that do not match any of the given
patterns.
-F, --file=archive
The archive file name to use instead of standard input or
output.
--force-local
With -F, -I, or -O, take the archive file
name to be a local file even if it contains a colon (:),
which would ordinarily indicate a remote host name.
-Hformat, --format=format
Use archive format format. The valid formats are listed
below; the same names are also recognized in all uppercase. The
default in copy-in mode is to automatically detect the archive
format; the default in copy-out mode is bin.
bin
The obsolete binary format.
odc
The old (POSIX.1) portable format.
newc
The new (SVR4) portable format, which supports file systems
having more than 65536 i-nodes.
crc
The new (SVR4) portable format with a checksum added.
tar
The old tar format.
ustar
The POSIX.1 tar format. Also recognizes GNU tar(1)
archives, which are similar but not identical.
hpbin
The obsolete binary format used by the HPUX implementation of
cpio(1), which stores device files differently from the GNU
implementation.
hpodc
The portable format used by the HPUX implementation of
cpio(1), which stores device files differently from the GNU
implementation.
-i, --extract
Run in copy-in mode.
-Iarchive
Archive file name to use instead of standard input.
-k
Ignored; for compatibility with other versions of
cpio(1).
-l, --link
Link files instead of copying them, when possible.
-L, --dereference
De-reference symbolic links (copy the files that they point to
instead of copying the links).
-m, --preserve-modification-time
Retain previous file modification times when creating
files.
-Mmessage, --message=message
When the end of a volume of the backup media (such as a tape or
a floppy disk) is reached, print message to prompt the user
to insert a new volume. If message contains the string "%d",
it is replaced by the current volume number (starting at 1).
-n, --numeric-uid-gid
In the verbose table of contents listing, show numeric user
identifier (UID) and group identifier (GID) instead of translating
them into names.
--no-absolute-filenames
In copy-in mode, create all files relative to the current
directory, even if they have an absolute file name in the
archive.
--no-preserve-owner
In copy-in mode and copy-pass mode, do not change the ownership
of the files; leave them owned by the user extracting them. This is
the default for non-root users. It prevents users on System V from
inadvertently giving files away.
-o, --create
Run in copy-out mode.
-Oarchive
Archive file name to use instead of standard output.
--only-verify-crc
When reading a cycle redundancy check (CRC) format archive in
copy-in mode, only verify the CRCs of each file in the archive; do
not extract the files.
-p, --pass-through
Run in copy-pass mode.
--quiet
Do not print the number of blocks copied.
-r, --rename
Interactively rename files.
-R [user][:|.[group]],
--owner [user][:|.[group]]
In copy-out and copy-pass modes, set the ownership of all files
created to the specified user and/or group. Either the user or the
group, or both, must be present. If the group is omitted, but the
colon (:) or period (.) separator is given, use the
given user's login group. Only the superuser can change the
ownership of the files.
--sparse
In copy-out and copy-pass modes, write files with large blocks
of zeros as sparse files.
-s, --swap-bytes
In copy-in mode, swap the bytes of each halfword (pair of
bytes) in the files.
-S, --swap-halfwords
In copy-in mode, swap the halfwords of each word (four bytes)
in the files.
-t, --list
Print a table of contents of the input.
-u, --unconditional
Replace all files, without asking whether to replace existing
newer files with older files.
-v, --verbose
List the files processed; or with -t, give an ls
-l style table of contents listing. In a verbose table of
contents of a ustar archive, user and group names in the archive
that do not exist on the local system are replaced by the names
that correspond locally to the numeric UID and GID stored in the
archive.
-V,--dot
Print a period (.) for each file processed.
--version
Print the cpio(1) program version number and exit.