cpio(1)
NAME
cpio − copy file archives in and out
SYNTAX
cpio −o [ aBckv ]
cpio −i [ bBcdfkmrsStuv6 ] [ patterns ]
cpio −p [ adklmuv ] directory
DESCRIPTION
The cpio command is a filter designed to let you copy files to or from an archive. The cpio command differs from the ar command in that cpio lets you archive any kind of file, while ar is limited to program object files.
The cpio command has three function keys, each with its own set of options.
−oCopy out. Reads the standard input to obtain a list of path names and copies those files onto the standard output together with path name and status information.
−iCopy in. Extracts files from the standard input, which is assumed to be the product of a previous cpio −o, and places them into the user’s current directory tree. For files with the same name, the newer file replaces the older file unless the −u option is used.
Only files with names that match patterns are selected. The patterns are specified using the notation for names described in sh(1). In patterns, the slash for directories (/) is included in searches using meta-characters. For example, suppose the archive contains the file filep and the pathname information in the archive indicates that the directory below contains the file file2p. This command copies both files into the user’s current directory:
cpio -i *p < /dev/rmt0l
Multiple patterns may be specified and if no patterns are specified, the default for patterns is ∗ (that is, select all files). The extracted files are conditionally created and copied into the current directory tree based upon the options described below.
−pPass. Reads the standard input to obtain a list of path names of files that are conditionally created. This list of files is copied into the destination directory tree based upon the options used. For files with the same name, the newer file replaces the older file unless the −u option is used.
OPTIONS
aRetain original access times of input files, even after they have been copied. Normally, the read(s) used in the copy update the copied file’s access time.
bSwap both bytes and halfwords.
BInput/output is to be blocked 5,120 bytes to the record. This option is meaningful only with data directed to or from /dev/rmt?h or /dev/rmt?l .
cWrite (−o function key) or read (−i function key) header information in ASCII character form for portability between different types of UNIX systems.
dCreate any directories noted in the archive on the standard output.
fCopy in all files except those in patterns.
kEnable symbolic link handling. Use with the −i, −o, and −p options.
lLink files rather than copying them whenever possible.
mRetain previous file modification time. This option does not work on directories or symbolic links that are being copied; the directory is always reset to show the access time when the copy was made.
rInteractively rename files. If you respond with a null line, the file is skipped (not copied). Use only with the −i option.
sSwap bytes.
SSwap halfwords.
tPrint a table of contents of the input. No files are created.
uCopy unconditionally. (Otherwise, an older file will not replace a newer file with the same name).
vCauses a verbose listing of file names transferred to be printed. When used with the t option, the table of contents looks like the output of an ls −l command. For further information, see ls(1).
6Process a file with the UNIX System Sixth Edition format.
EXAMPLES
This example shows how to copy the contents of the user’s current directory into an archive.
ls | cpio -o > /dev/rmt0l
This example shows how to duplicate a directory hierarchy.
cd olddir
find . -print | cpio -pdl newdir
This example shows how to copy all files and directories with names containing the characters "chapter" in user smith’s home directory and underlying directories.
find ~smith -name ’*chapter*’ -print | cpio -o > /dev/rmt0h
This example shows the results of using the r option with the −i function key.
ls | cpio -ir > ~smith/newdir
Rename <file1>
newnamefile1
Rename <file2>
<RETURN>
Skipped
Rename <file3>
newnamefile3
In some cases, the −cpio option of the find(1) command can be used more effectively than pipes and redirects using cpio. For instance, the following example
file . -print | cpio -oB > /dev/rmt0l
can be handled more efficiently by:
find . -cpio /dev/rmt0l
To copy the contents of a directory (with symbolic link handling enabled) to the tape drive, type:
ls | cpio -ok > /dev/rmt0h
To restore the archived files back into a directory, type:
cpio -ik < /dev/rmt0h
To move files from the old directory to the new directory including symbolic links, type:
cd olddir
ls | cpio -pdk newdir
RESTRICTIONS
Path names are restricted to 128 characters.
When there are too many unique linked files, the program runs out of memory and cannot trace them and linking information is lost.
Only the superuser can copy special files.
The cpio command does not handle symbolic links.