Copy file archives from or to tape or disk, or to another location on the local machine. Each of the three flags -i, -o, or -p accepts different options.
-i, --extract [options] [patterns]
Copy in (extract) from an archive files whose names match selected patterns. Each pattern can include Bourne shell filename metacharacters. (Patterns should be quoted or escaped so that they are interpreted by cpio, not by the shell.) If pattern is omitted, all files are copied in. Existing files are not overwritten by older versions from the archive unless -u is specified.
-o, --create [options]
Copy out to an archive a list of files whose names are given on the standard input.
-p, --pass-through [options] directory
Copy (pass) files to another directory on the same system. Destination pathnames are interpreted relative to the named directory.
Comparison of valid options
Options available to the -i, -o, and -p flags are shown here (the - is omitted for clarity):
i: bcdf mnrtsuv B SVCEHMR IF
o: 0a c vABL VC HM O F
p: 0a d lm uv L V R
Expect list of filenames to be terminated with null, not newline. This allows files with a newline in their names to be included.
Reset access times of input files after reading them.
Append files to an existing archive, which must be a disk file. Specify this archive with -O or -F.
Swap bytes and half-words to convert between big-endian and little-endian 32-bit integers.
Block input or output using 5120 bytes per record (default is 512 bytes per record).
Set input or output block size to size × 512 bytes.
Read or write header information as ASCII characters; useful when source and destination machines are different types.
Like -B, but block size can be any positive integer n.
Create directories as needed.
Extract from the archives filenames that match patterns in file.
Reverse the sense of copying; copy all files except those that match patterns.
Use file as the archive, not stdin or stdout. file can reside on another machine, if given in the form user@hostname:file (where user@ is optional).
Assume that file (provided by -F, -I, or -O) is a local file, even if it contains a colon (:) indicating a remote file.
Use type format. Default for copy-out is bin; default for copy-in is autodetection of the format. Valid formats (all caps also accepted) are:
Old (POSIX.1) portable format.
New (SVR4) portable format.
New (SVR4) portable format with checksum added.
POSIX.1 tar (also recognizes GNU tar archives).
HP-UX's binary (obsolete).
HP-UX's portable format.
Read file as an input archive. May be on a remote machine (see -F).
Ignored. For backward compatibility.
Link files instead of copying.
Follow symbolic links.
Retain previous file modification time.
Print msg when switching media, as a prompt before switching to new media. Use variable %d in the message as a numeric ID for the next medium. -M is valid only with -I or -O.
When verbosely listing contents, show user ID and group ID numerically.
Create all copied-in files relative to the current directory.
Make all copied files owned by yourself, instead of the owner of the original. Can be used only if you are a privileged user.
Archive the output to file, which may be a file on another machine (see -F).
For a CRC-format archive, verify the CRC of each file; don't actually copy the files in.
Don't print the number of blocks copied.
Rename files interactively.
-R [user] [:group] , --owner [user] [:group]
Reassign file ownership and group information to the user's login ID (privileged users only).
Swap bytes of each two-byte half-word.
Swap half-words of each four-byte word.
For copy-out and copy-pass, write files that have large blocks of zeros as sparse files.
Print a table of contents of the input (create no files). When used with the -v option, resembles output of ls -l.
Unconditional copy; old files can overwrite new ones.
Print a list of filenames processed.
Print a dot for each file read or written (this shows cpio at work without cluttering the screen).
Print version number and then exit.
Generate a list of files whose names end in .old using find; use the list as input to cpio:
find . -name "*.old" | cpio -ocBv > /dev/rst8
Restore from a tape drive all files whose names contain save (subdirectories are created if needed):