cpio - copy files to and from archives


cpio {-o|--create} [-0acvABLV] [-C bytes]
	 [-H format] [-M message]
	 [-O [[user@]host:]archive]
	 [-F [[user@]host:]archive]
	 [--format=format] [--message=message]
	 [--null] [--reset-access-time] [--verbose]
	 [--dot] [--append] [--block-size=blocks]
	 [--dereference] [--io-size=bytes] [--quiet]
	 [--force-local] [--help] [--version]
	 < name-list [> archive]

cpio {-i|--extract} [-bcdfmnrtsuvBSV] [-C bytes]
	 [-E file] [-H format] [-M message]
	 [-R [user][:.][group]] [-I [[user@]host:]archive]
	 [-F [[user@]host:]archive]
	 [--make-directories] [--nonmatching]
	 [--preserve-modification-time] [--numeric-uid-gid]
	 [--rename] [--list] [--swap-bytes]
	 [--swap] [--dot] [--unconditional] [--verbose]
	 [--block-size=blocks] [--swap-halfwords]
	 [--io-size=bytes] [--pattern-file=file] [--format=format]
	 [--owner=[user][:.][group]] [--no-preserve-owner]
	 [--message=message] [--force-local] [--no-absolute-filenames]
	 [--sparse] [--only-verify-crc] [--quiet]
	 [--help] [--version] [pattern...] [< archive]

cpio {-p|--pass-through} [-0adlmuvV] [-R [user][:.][group]]
	 [--null] [--reset-access-time] [--make-directories]
	 [--link] [--quiet] [--preserve-modification-time]
	 [--unconditional] [--verbose] [--dot] [--dereference]
	 [--owner=[user][:.][group]] [--no-preserve-owner]
	 [--sparse] [--help] [--version]
	 destination-directory < name-list


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:

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


-0, --null
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.
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.
Use the old portable (ASCII) archive format.
-C io-size, --io-size=io-size
Set the I/O block size to io-size bytes.
-d, --make-directories
Create leading directories where needed.
-E file, --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.
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.
-H format, --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.
The obsolete binary format.
The old (POSIX.1) portable format.
The new (SVR4) portable format, which supports file systems having more than 65536 i-nodes.
The new (SVR4) portable format with a checksum added.
The old tar format.
The POSIX.1 tar format. Also recognizes GNU tar(1) archives, which are similar but not identical.
The obsolete binary format used by the HPUX implementation of cpio(1), which stores device files differently from the GNU implementation.
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.
-I archive
Archive file name to use instead of standard input.
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.
-M message, --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.
In copy-in mode, create all files relative to the current directory, even if they have an absolute file name in the archive.
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.
-O archive
Archive file name to use instead of standard output.
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.
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.
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.
Print the cpio(1) program version number and exit.


The cpio(1) utility exists with status 0 on successful completion, and status >0 if an error occurred.