Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > C


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


cpio — copy file archives in and out; duplicate directory trees


cpio -o [-e extarg] [achvxABC]

cpio -i[bcdfmrstuvxBPRSU6] [pattern...]

cpio -p [-e extarg] [adlmruvxU] directory


The cpio command saves and restores archives of files on magnetic tape, other devices, or a regular file, and copies files from one directory to another while replicating the directory tree structure. When cpio completes processing the files, it reports the number of blocks written.

cpio -o

(copy out, export) Read standard input to obtain a list of path names, and copy those files to standard output together with path name and status information. The output is padded to a 512-byte boundary.

cpio -i

(copy in, import) Extract files from standard input, which is assumed to be the result of a previous cpio -o.

If pattern..., is specified, only the files with names that match a pattern according to the rules of Pattern Matching Notation (see regexp(5)) are selected. A leading ! on a pattern indicates that only those names that do not match the remainder of the pattern should be selected. Multiple patterns can be specified. The patterns are additive. If no pattern is specified, the default is * (select all files). See the f option, as well.

Extracted files are conditionally created and copied into the current directory tree, as determined by the options described below. The permissions of the files match the permissions of the original files when the archive was created by cpio -o unless the U option is used. File owner and group are that of the current user unless the user has appropriate privileges, in which case cpio retains the owner and group of the files of the previous cpio -o.

cpio -p

(pass through) Read standard input to obtain a list of path names of files which are then conditionally created and copied into the destination directory tree as determined by the options described below. directory must exist. Destination path names are interpreted relative to directory.

With the -p option, when handling a link, only the link is passed and no data blocks are actually read or written. This is especially noteworthy with cpio -pl, where it is very possible that all the files are created as links, such that no blocks are written and "0 blocks" is reported by cpio. (See below for a description of the -l option.)


cpio recognizes the following options, which can be appended as appropriate to -i, -o, and -p. White space and hyphens are not permitted between these options and -i, -o, or -p.


Reset access times of input files after they are copied.


Swap both bytes and half-words. Use only with -i. See the P option for details; see also the s and S options.


Write or read header information in ASCII character form for portability.


Create directories as needed.

-e extarg

Specifies the handling of any extent attributes of the file(s) to be archived or copied. extarg takes one of the following values.


Archive or copy the file and issue a warning message if extent attributes cannot be preserved.


Do not issue a warning message even if extent attributes cannot be preserved.


Any file(s) with extent attributes will not be archived and a warning message will be issued.

When using the -o option, extent attributes are not preserved in the archive. Furthermore, the -p option will not preserve extent attributes if the files are being copied to a file system that does not support extent attributes. If -e is not specified, the default value for extarg is warn.


Copy in all files except those selected by pattern....


Follow symbolic links as though they were normal files or directories. Normally, cpio archives the link.


Whenever possible, link files rather than copying them. This option does not destroy existing files. Use only with -p.


Retain previous file modification time. This option does not affect directories that are being copied.


Rename files interactively. If the user types a null line, the file is skipped.


Swap all bytes of the file. Use only with -i. See the P option for details; see also the s and S options.


Print only a table of contents of the input. No files are created, read, or copied.


Copy unconditionally (normally, an older file does not replace a newer file with the same name).


Print a list of file names as they are processed. When used with the t option, the table of contents has the format:

numeric-mode owner-name blocks date-time filename

where numeric-mode is the file privileges in numeric format, owner-name is the name of the file owner, blocks is the size of the file in 512-byte blocks, date-time is the date and time the file was last modified, and filename is the path name of the file as recorded in the archive.


Save or restore device special files. Since mknod() is used to recreate these files on a restore, -ix and -px can be used only by users with appropriate privileges (see mknod(2)). This option is intended for intrasystem (backup) use only. Restoring device files from previous versions of the OS, or from different systems can be very dangerous. cpio may prevent the restoration of certain device files from the archive.


Suppress warning messages regarding optional access control list entries. cpio does not back up optional access control list entries in a file's access control list (see acl(5)). Normally, a warning message is printed for each file that has optional access control list entries.


Block input/output at 5120 bytes to the record (does not apply to cpio -p). This option is meaningful only with data directed to or from devices that support variable-length records such as magnetic tape.


Have cpio checkpoint itself at the start of each volume. If cpio is writing to a streaming tape drive with immediate-report mode enabled and a write error occurs, it normally aborts and exits with return code 2. With this option specified, cpio instead automatically restarts itself from the checkpoint and rewrites the current volume. Alternatively, if cpio is not writing to such a device and a write error occurs, cpio normally continues with the next volume. With this option specified, however, the user can choose to either ignore the error or rewrite the current volume.


Read a file written on a PDP-11 or VAX system (with byte-swapping) that did not use the c option. Use only with -i. Files copied in this mode are not changed. Non-ASCII files are likely to need further processing to be readable. This processing often requires knowledge of file contents, and thus cannot always be done by this program. The b, s, and S options can be used when swapping all the bytes on the tape (rather than just in the headers) is appropriate. In general, text is best processed with P and binary data with one of the other options.


Resynchronize automatically when cpio goes "out of phase", (see the DIAGNOSTICS section).


Swap all half-words in the file. Use only with -i. See the P option for details; see also the b and s options.


Use the process's file-mode creation mask (see umask(2)) to modify the mode of files created, in the same manner as creat(2).


Process a UNIX Sixth-Edition-format file. Use only with -i.

Note that cpio archives created using a raw device file must be read using a raw device file.

When the end of the tape is reached, cpio prompts the user for a new special file and continues.

If you want to pass one or more metacharacters to cpio without the shell expanding them, be sure to precede each of them with a backslash (\).

Device files written with the -ox option (such as /dev/tty03) do not transport to other implementations of HP-UX.


Environment Variables

LC_COLLATE determines the collating sequence used in evaluating pattern matching notation for file name generation.

LC_CTYPE determines the interpretation of text as single and/or multi-byte characters, and the characters matched by character class expressions in pattern matching notation.

LC_TIME determines the format and content of date and time strings output when listing the contents of an archive with the v option.

LANG determines the language in which messages are displayed.

If LC_COLLATE, LC_CTYPE, or LC_TIME is not specified in the environment or is set to the empty string, the value of LANG is used as a default for each unspecified or empty variable. If LANG is not specified or is set to the empty string, a default of "C" (see lang(5)) is used instead of LANG. If any internationalization variable contains an invalid setting, cpio behaves as if all internationalization variables are set to "C". See environ(5).

International Code Set Support

Single- and multibyte character code sets are supported.


cpio returns the following exit codes:


Successful completion. Review standard error for files that could not be transferred.


Error during resynchronization. Some files may not have been recovered.


Out-of-phase error. A file header is corrupt or in the wrong format.


Out of phase--get help

Perhaps the "c" option should[n't] be used

cpio -i could not read the header of an archived file. The header is corrupt or it was written in a different format. Without the R option, cpio returns an exit code of 2.

If no file name has been displayed yet, the problem may be the format. Try specifying a different header format option: null for standard format; c for ASCII; b, s, P, or S, for one of the byte-swapping formats; or 6 for UNIX Sixth Edition.

Otherwise, a header may be corrupt. Use the R option to have cpio attempt to resynchronize the file automatically. Resynchronizing means that cpio tries to find the next good header in the archive file and continues processing from there. If cpio tries to resynchronize from being out of phase, it returns an exit code of 1.

Other diagnostic messages are self-explanatory.


Copy the contents of a directory into a tape archive:

ls | cpio -o > /dev/rtape/tape4QIC150

Duplicate a directory hierarchy:

cd olddir find . -depth -print | cpio -pd newdir

The trivial case

find . -depth -print | cpio -oB >/dev/rtape/tape4QIC150

can be handled more efficiently by:

find . -cpio /dev/rtape/tape4QIC150


Because of industry standards and interoperability goals, cpio does not support the archival of files larger than 2 GB or files that have user/group IDs greater than 60 K. Files with user/group IDs greater than 60 K are archived and restored under the user/group ID of the current process.

Do not redirect the output of cpio to a named cpio archive file residing in the same directory as the original files belonging to that cpio archive. This can cause loss of data.

cpio strips any leading ./ characters in the list of file names piped to it.

Path names are restricted to PATH_MAX characters (see <limits.h> and limits(5)). If there are too many unique linked files, the program runs out of memory to keep track of them. Thereafter, linking information is lost. Only users with appropriate privileges can copy special files.

cpio tapes written on HP machines with the -ox[c] options can sometimes mislead (non-HP) versions of cpio that do not support the x option. If a non-HP (or non-AT&T) version of cpio happens to be modified so that the (HP) cpio recognizes it as a device special file, a spurious device file might be created.

If /dev/tty is not accessible, cpio issues a complaint and exits.

The -pd option does not create the directory typed on the command line.

The -idr option does not make empty directories.

The -plu option does not link files to existing files.

POSIX defines a file named TRAILER!!! as an end-of-archive marker. Consequently, if a file of that name is contained in a group of files being written by cpio -o, the file is interpreted as end-of-archive, and no remaining files are copied. The recommended practice is to avoid naming files anything that resembles an end-of-archive file name.

To create a POSIX-conforming cpio archive, the c option must be used. To read a POSIX-conforming cpio archive, the c option must be used and the b, s, S, and 6 options should not be used. If the user does not have appropriate privileges, the U option must also be used to get POSIX-conforming behavior when reading an archive. Users with appropriate privileges should not use this option to get POSIX-conforming behavior.


If the path given to cpio contains a symbolic link as the last element, this link is traversed and path name resolution continues. cpio uses the symbolic link's target, rather than that of the link.


cpio: SVID2, SVID3, XPG2, XPG3

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.