Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cpio(1)

ln(1)

mv(1)

rm(1)

link(1M)

lstat(2)

readlink(2)

stat(2)

symlink(2)

symlink(4)

acl(5)

cp(1)

NAME

cp − copy files and directory subtrees

SYNOPSIS

cp [-f|-i] [-p] file1 new_file
cp [-f|-i] [-p] file1 [file2 ...] dest_directory
cp [-f|-i] [-p] [-R|-r] directory1 [directory2 ...] dest_directory

DESCRIPTION

cp copies:

• file1 to new or existing new_file,

• file1 to existing dest_directory,

• file1, file2, ... to existing dest_directory,

• directory subtree directory1, to new or existing dest_directory. or

• multiple directory subtrees directory1, directory2, ... to new or existing dest_directory.

cp fails if file1 and new_file are the same (be cautious when using shell metacharacters).  When destination is a directory, one or more files are copied into that directory.  If two or more files are copied, the destination must be a directory.  When copying a single file to a new file, if new_file exists, its contents are destroyed. 

If the access permissions of the destination dest_directory or existing destination file new_file forbid writing, cp aborts and produces an error message “cannot create file”.

To copy one or more directory subtrees to another directory, the -r option is required.  The -r option is ignored if used when copying a file to another file or files to a directory. 

If new_file is a link to an existing file with other links, cp overwrites the existing file and retains all links.  If copying a file to an existing file, cp does not change existing file access permission bits, owner, or group. 

When copying files to a directory or to a new file that does not already exist, cp creates a new file with the same file miscellaneous bits as file1, except that the sticky bit is not set unless you are the user with appropriate privilege (see chmod(2)). The owner and group of the new file or files are those of the user. The last modification time of new_file (and last access time, if new_file did not exist) and the last access time of the source file1 are set to the time the copy was made. 

Options

-i (interactive copy) Cause cp to write a prompt to standard error and wait for a response before copying a file that would overwrite an existing file.  If the response from the standard input is affirmative, the file is copied if permissions allow the copy.  If the -i (interactive) and -f (forced-copy) options are both specified, the -i option is ignored. 

-f Force existing destination pathnames to be removed before copying, without prompting for confirmation.  This option has the effect of destroying and replacing any existing file whose name and directory location conflicts with the name and location of the new file created by the copy operation. 

-p (preserve permissions) Causes cp to preserve in the copy as many of the modification time, access time, file mode, user ID, and group ID as allowed by permissions. 

-r (recursive subtree copy) Cause cp to copy the subtree rooted at each source directory to dest_directory. If dest_directory exists, it must be a directory, in which case cp creates a directory within dest_directory with the same name as file1 and copies the subtree rooted at file1 to dest_directory/file1. An error occurs if dest_directory/file1 already exists.  If dest_directory does not exist, cp creates it and copies the subtree rooted at file1 to dest_directory. Note that cp -r cannot merge subtrees. 

Only normal files and directories are copied.  Character special devices, block special devices, network special files, named pipes, symbolic links, and sockets are not copied, and a warning is printed stating that the file was skipped.  dest_directory should not reside within directory1, nor should directory1 have a cyclic directory structure, since in both cases cp attempts to copy an infinite amount of data. 

-R (recursive subtree copy) The -R option is identical to the -r option with the exception that directories copied by the -R option are created with read, write, and search permission for the owner.  User and group permissions remain unchanged. 

Access Control Lists (ACLs)

If new_file is a new file, or if a new file is created in dest_directory, it inherits the access control list of the original file1, file2, etc., altered to reflect any difference in ownership between the two files (see acl(5)).

EXTERNAL INFLUENCES

Environment Variables

LC_CTYPE determines the interpretation of text as single and/or multi-byte characters. 

LANG and LC_CTYPE determine the local language equivalent of y (for yes/no queries). 

LANG determines the language in which messages are displayed. 

If LC_CTYPE 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, cp behaves as if all internationalization variables are set to "C".  See environ(5).

International Code Set Support

Single- and multi-byte character code sets are supported. 

EXAMPLES

The following command moves the directory sourcedir and its contents to a new location (targetdir) in the file system. Since cp creates the new directory, the destination directory targetdir should not already exist. 

cp -r sourcedir targetdir && rm -rf sourcedir

The -r option copies the subtree (files and subdirectories) in directory sourcedir to directory targetdir. The double ampersand (&&) causes a conditional action.  If the operation on the left side of the && is successful, the right side is executed (and removes the old directory).  If the operation on the left of the && is not successful, the old directory is not removed. 

This example is equivalent to:

mv sourcedir targetdir

To copy all files and directory subtrees in the current directory to an existing targetdir, use:

cp -r * targetdir

To copy all files and directory subtrees in sourcedir to targetdir, use:

cp -r sourcedir/* targetdir

Note that directory pathnames can precede both sourcedir and targetdir.

To create a zero-length file, use any of the following:

cat /dev/null >file
cp /dev/null file
touch file

DEPENDENCIES

NFS

Access control lists of networked files are summarized (as returned in st_mode by stat()), but not copied to the new file.  When using mv or ln on such files, a + is not printed after the mode value when asking for permission to overwrite a file. 

AUTHOR

cp was developed by AT&T, the University of California, Berkeley, and HP. 

SEE ALSO

cpio(1), ln(1), mv(1), rm(1), link(1M), lstat(2), readlink(2), stat(2), symlink(2), symlink(4), acl(5). 

STANDARDS CONFORMANCE

cp: SVID2, XPG2, XPG3, POSIX.2

Hewlett-Packard Company  —  HP-UX Release 9.0: August 1992

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026