cpio(1) cpio(1) NAME cpio - copy file archives in and out SYNOPSIS cpio -i[bBcdfkmrsStuvTV6] [-C bufsize] [-E file] [-H hdr] [-I file [-M message]] [-R ID]] [pattern . . .] cpio -o[aABcKLvVW] [-C bufsize] [-H hdr] [-O file [-M message]] cpio -p[adlLmuvVW] [-R ID] directory DESCRIPTION The -i, -o, and -p options select the action to be performed. The following list describes each of the actions (which are mutually exclusive). cpio -i (copy in) extracts files from the standard input, which is assumed to be the product of a previous cpio -o. Only files with names that match patterns are selected. patterns are regular expressions given in the filename-generating notation of sh(1). In patterns, meta- characters ?, *, and [ . . . ] match the slash (/) character, and backslash (\) is an escape character. A ! meta-character means not. (For example, the !abc* pattern would exclude all files that begin with abc.) Multiple patterns may be specified and if no patterns are specified, the default for patterns is * (that is, select all files). Each pattern must be enclosed in double quotes; otherwise, the name of a file in the current directory might be used. Extracted files are conditionally created and copied into the current directory tree based on the options described below. The permissions of the files will be the same as those at the time of the previous cpio -o, subject to modification by the current umask value. Use a umask of 0 if you want the modes to match the original modes. The owner and group of these files will be those of the current user, unless the current user is super-user. If this is true, the permissions, owner, and group of the files will be the same as those at the time of the previous cpio -o. NOTE: If cpio -i tries to create a file that already exists and the existing file is the same age or younger (newer), cpio will output a warning message and not replace the file. (The -u option can be used to overwrite, unconditionally, the existing file.) If file names are given as absolute pathnames to cpio -o, then when the files are restored via cpio -i, they will be written to their original directories regardless of the current directory. This behavior can be circumvented by using the -r option. cpio -o (copy out) reads the standard input to obtain a list of pathnames and copies those files onto the standard output together with pathname and status information. cpio -p (pass) reads the standard input to obtain a list of pathnames of files that are conditionally created and copied into the destination directory tree based on the options described below. cpio processes supplementary code set characters, and recognizes supplementary code set characters in the message given to the \-M option (see below) according to the locale specified in the LC_CTYPE environment variable [see LANG on environ(5)]. In regular expressions, pattern searches are performed on characters, not bytes, as described on sh(1). Under the \-vt option (see below), the date is displayed according to the locale specified in the LC_TIME environment variable. The meanings of the available options are -a Reset access times of input files after they have been copied. Access times are not reset for linked files when cpio -pla is specified (mutually exclusive with -m). See NOTES (see below) for additional error information. -A Append files to an archive. The -A option requires the -O option. Valid only with archives that are files, or that are on floppy diskettes or hard disk partitions. -b Reverse the order of the bytes within each word. (Use only with the -i option.) -B Input/output is to be blocked 5120 bytes to the record. The default buffer size is device dependent when neither this nor the -C option is used. (-B does not apply to the pass option.) -c Read or write header information in ASCII character form for portability. Always use this option (or the -H option) when the origin and the destination machines are different types (mutually exclusive with -H and -6). (The -c option implies expanded device numbers, thus is not POSIX compliant) -C bufsize Input/output is to be blocked bufsize bytes to the record, where bufsize is replaced by a positive integer. The default buffer size is device dependent when neither this nor the -B option is used. (-C does not apply to the pass option.) -d Directories are to be created as needed. -E file Specify an input file (file) that contains a list of filenames to be extracted from the archive (one filename per line). -f Copy in all files except those in patterns. (See the paragraph on cpio -i for a description of patterns.) -H hdr Read or write header information in hdr format. Always use this option or the -c option when the origin and the destination machines are different types (mutually exclusive with -c and -6). Valid values for hdr are: crc or CRC ASCII header with expanded device numbers and an additional per-file checksum (Not POSIX compliant, since header format is different) ustar or USTAR IEEE/P1003 Data Interchange Standard header and format tar or TAR tar header and format odc ASCII header with small device numbers -I file Read the contents of file as an input archive. If file is a character special device, and the current medium has been completely read, replace the medium and press RETURN to continue to the next medium. The specified file can also reference a remote tape device. A remote tape device name has the form: [user@]system:/dev/??? Where system is the remote system, /dev/??? is the particular drive on the remote system (raw, rewinding, non-rewinding, etc.), and the optional user is the login name to be used on the remote system, if different from the current user's login name. This option is used only with the -i option. -k Attempt to skip corrupted file headers and I/O errors that may be encountered. If you want to copy files from a medium that is corrupted or out of sequence, this option lets you read only those files with good headers. (For cpio archives that contain other cpio archives, if an error is encountered cpio may terminate prematurely. cpio will find the next good header, which may be one for a smaller archive, and terminate when the smaller archive's trailer is encountered.) Used only with the -i option. -K Required for files larger than 2 Gigabytes. Cpio will issue a warning and skip such files if an attempt is made to archive them without specifying the -K flag. Used only with the -o option. Mutually exclusive with -c, -H options. Because the -c option can not be used, device files with major numbers greater than 127 or minor numbers greater than 255 could not normally be archived; the binary format is extended with this option so that those device files can be backed up, but will not be able to be restored on older or non-IRIX versions of cpio with the correct major and minor number. Warning: Use of this option may result in the creation of an archive that is not portable to other machines; a warning is issued on the first file causing the archive to not be portable. -l Whenever possible, link files rather than copying them. (Usable only with the -p option.) If the link fails a error message will be displayed and then cpio will attempt to copy the file. -L Follow symbolic links. The default is not to follow symbolic links. -m Retain previous file modification time. The modification time and access time of a restored file is set to the modification time of the file when it was backed up. This option is ineffective on directories that are being copied. This option is mutually exclusive with -a. -M message Define a message to use when switching media. When you use the -O or -I options and specify a character special device, you can use this option to define the message that is printed when you reach the end of the medium. One %d can be placed in message to print the sequence number of the next medium needed to continue. message may contain supplementary code set characters. -O file Direct the output of cpio to file. If file is a character special device and the current medium is full, replace the medium and press the RETURN key to continue to the next medium. Use only with the -o option. -r Interactively rename files. If the user presses the RETURN key alone, the file is skipped. If the user types a ``.'' the original pathname will be retained. (Not available with cpio -p.) -R ID Reassign ownership and group information for each file to user ID (ID must be a valid user ID from /etc/passwd). This option is valid only for a super-user. -s Swap bytes within each half word. -S Swap halfwords within each word. -t Print a table of contents of the input. No files are created (mutually exclusive with -V). -T Test (verify) the contents of the archive against the files in the filesystem. A = is printed in the first column if the file is the same, otherwise !. If given as -TT, a second = or ! is output, based on the owner, group, and permissions matching, and in the case of symbolic links, the contents of the symbolic link. -W Detect and handle special files with holes (sections of a file with no disk blocks allocated to it, normally caused by seeking over a section of the file while it is being created). Holey files are marked specially in the archive, and a block map is written at the start of a file. Only the non-hole sections are written to the archive, normally requiring much less space than when this option is not used. When used, and holey files are found, the archive will not be compatible with other versions of cpio (non-IRIX versions, or IRIX versions older than IRIX 6.5); a warning is issued on the first file causing the archive to not be portable. Used only with the -o option. Mutually exclusive with -c, -H options. When the -v option is used, the type is printed as H for holey files, rather than -. -u Copy unconditionally (normally, an older file will not replace a newer file with the same name). -v Verbose: causes a list of file names to be printed. When used with the -t option, the table of contents looks like the output of an ls -l command [see ls(1)]; dates are displayed according to the locale specified in the LC_TIME environment variable [see LANG on environ(5)]. -V Special Verbose: print a dot for each file read or written. Useful to assure the user that cpio is working without printing out all file names. -6 Process a UNIX System Sixth Edition archive format file. Use only with the -i option (mutually exclusive with -c and -H)). Note: cpio assumes four-byte words. If, when writing to a character device (-o) or reading from a character device (-i), cpio reaches the end of a medium (such as the end of a tape), and the -O and -I options aren't used, cpio will print the following message: If you want to go on, type device/file name when ready. To continue, you must replace the medium and type the character special device name (/dev/tape for example) and press RETURN. You may want to continue by directing cpio to use a different device. For example, if you have two tape drives you may want to switch between them so cpio can proceed while you are changing the tapes. (Simply pressing RETURN causes the cpio process to exit.) EXAMPLES The following examples show three uses of cpio. When standard input is directed through a pipe to cpio -o, files are grouped so they can be directed (>) to a single file (../newfile). The -c option insures that the file will be portable to other machines (as would the -H option). Instead of ls(1), you could use find(1), echo(1), cat(1), and so on, to pipe a list of names to cpio. You could direct the output to a device instead of a file. ls | cpio -oc > ../newfile cpio -i uses the output file of cpio -o (directed through a pipe with cat in the example below), extracts those files that match the patterns (memo/a1, memo/b*), creates directories below the current directory as needed (-d option), and places the files in the appropriate directories. The -c option is used if the input file was created with a portable header. If no patterns were given, all files from newfile would be placed in the directory. cat newfile | cpio -icd "memo/a1" "memo/b*" cpio -p takes the file names piped to it and copies or links (-l option) those files to another directory (newdir in the example below). The -d option says to create directories as needed. The -m option says retain the modification time. (It is important to use the -depth option of find(1) to generate pathnames for cpio. This eliminates problems cpio could have trying to create files under read-only directories.) The destination directory, newdir, must exist. find . -depth -print | cpio -pdlmv newdir Note that when you use cpio in conjunction with find, if you use the -L option with cpio then you must use the -follow option with find and vice versa. Otherwise there will be undesirable results. FILES /usr/lib/locale/locale/LC_MESSAGES/uxcore.abi language-specific message file [See LANG on environ (5).] SEE ALSO ar(1), cat(1), echo(1), find(1), ls(1), tar(1), umask(1), attr(1), xfsdump(1m), archives(4) NOTES An archive created with the -c option (defaults to an ASCII header with expanded device numbers and an additional per-file checksum - CRC) on a Release 4 system cannot be read on System V Release 3.2 systems, or earlier. As noted in the option descriptions above, use of the -W or -K options may cause the resulting archive to be non-portable, and possibly not even usable, on older versions (prior to IRIX 6.5), or other operating systems. The types of files that might cause problems are those larger than 2 Gbytes, files with holes (no data blocks), and device files with major numbers larger than 127 or minor numbers larger than 255. Use the -H odc option in the current version of cpio (ie. IRIX 5.X Operating system), which is equivalent to the header created by the -c option in earlier System V releases (ie. IRIX 4.0.X Operating System). This is to be used when reading previously created cpio image(s) on a System V Release 4 systems (ie. IRIX 5.X Operating system). cpio will issue a warning and continue archiving when the block or character device numbers are truncated when using the -H odc option. cpio will issue a warning and continue archiving when the userid or group id of associated with a file is too large. The userid for the user ``nobody'' will be substituted. The limits are 65535 for binary (default) format, and 262143 for -H ustar, -H tar and -H odc formats. There is no limit for -H crc or -c formats. It is common to construct a list of file names with find or other commands to pipe to cpio. Filenames with embedded white space will work this way, with the exception of filenames with embedded newlines, since each filename in the list is terminated by a newline. This may sometimes produce confusing error messages. If the Byte swapped data - re-try with correct device message occurs, check to make sure that the correct device (switched or non-switched) is begin used to dump the media (see tps(7M)). Path names are restricted to 256 characters for the binary (the default) and -H odc header formats. Otherwise, pathnames are restricted to 1024 characters. Only a super-user user can copy special files. Additionally, when running from a setuid program (or if made setuid itself), some files may still not be accessible, since the effective userid is checked in several places, rather than the real userid. This is deliberate. Blocks are reported in 512-byte quantities. If a file has 000 permissions, contains more than 0 characters of data, and the user does not have the appropriate access to the file, the file will not be saved or restored. The default buffer size is optimized for the device and using the -C option to specify a different block size may cause cpio to fail. Therefore, care must be taken when choosing the block size. To avoid wasting space on streaming tape drives, the -C option with an appropriate block size should be used. When using the -a option (resets the access times of the input files) cpio cannot reset the access time of the files in /dev/fd. This is because these are special "file descriptor files" (see fd(4)). These "file descriptor files" cannot have there access times reset with cpio or utime(2). cpio with the -a option will issue the warning message(s) "Cannot reset time on "/dev/fd/XX" : Operation not supported" when confronted with these files. Extended Attributes such as file ACL's, capability sets, and MAC labels are not archived or restored using bru. See attr(1) for more information about Extended Attributes and see xfsdump(1m) or tar(1M) with the -M option, for a method to back them up. Page 8