| CP(1) | User Commands | CP(1) |
cp — copy
files
/usr/bin/cp |
[-afinp@/] source_file
target_file |
/usr/bin/cp |
[-afinp@/] source_file...
target |
/usr/bin/cp |
[-afinp@/] -T
source_file target |
/usr/bin/cp |
[-r | -R
[-H | -L |
-P]] [-afinp@/]
source_dir... target |
/usr/xpg4/bin/cp |
[-afinp@/] source_file
target_file |
/usr/xpg4/bin/cp |
[-afinp@/] source_file...
target |
/usr/xpg4/bin/cp |
[-afinp@/] -T
source_file target |
/usr/xpg4/bin/cp |
[-r | -R
[-H | -L |
-P]] [-afinp@/]
source_dir... target |
In the first synopsis form, neither
source_file nor target_file are
directory files, nor can they have the same name. The
cp utility copies the contents of
source_file to the destination path named by
target_file. If target_file
exists, cp overwrites its contents, but the mode
(and ACL if applicable), owner, and group associated with it are not
changed. The last modification time of target_file and
the last access time of source_file are set to the
time the copy was made. If target_file does not exist,
cp creates a new file named
target_file that has the same mode as
source_file except that the sticky bit is not set
unless the user is super-user. In this case, the owner and group of
target_file are those of the user, unless the setgid
bit is set on the directory containing the newly created file. If the
directory's setgid bit is set, the newly created file has the group of the
containing directory rather than of the creating user. If
target_file is a link to another file,
cp overwrites the link destination with the contents
of source_file; the link(s) from
target_file remains.
In the second synopsis form, one or more source_files are copied to the directory specified by target. It is an error if any source_file is a file of type directory, if target either does not exist or is not a directory.
In the third synopsis form, target is always treated logically as a file regardless if it is one or not. Unlike the second synopsis form which creates source_file inside of the directory target, the path of target itself would be used.
In the fourth synopsis form, one or more directories specified by
source_dir are copied to the directory specified by
target. Either the -r or
-R must be specified. For each
source_dir, cp copies all
files and subdirectories.
The following options are supported for both /usr/bin/cp and /usr/xpg4/bin/cp:
-a-RpP.-f-n option is specified then this option is
ignored.-HIf the source_file operand is a symbolic
link, then cp copies the file referenced by the
symbolic link for the source_file operand. All
other symbolic links encountered during traversal of a file hierarchy
are preserved.
-icp prompts for confirmation whenever
the copy would overwrite an existing target. An
affirmative response means that the copy should proceed. Any other answer
prevents cp from overwriting
target. If both the -i and
-n options are specified, only the last one on the
command line is honored.-LCopies files referenced by symbolic links. Symbolic links encountered during traversal of a file hierarchy are not preserved.
-ncp encounters a target file that
already exists, whether specified explicitly, the file is found in a
directory, or as part of a recursive copy, do not overwrite the file.
Files skipped this way are not considered errors. If both the
-i and -n options are
specified, only the last one on the command line is honored.-pcp utility duplicates not only the
contents of source_file, but also attempts to
preserve its ACL, access and modification times, extended attributes,
extended system attributes, file mode, and owner and group ids.
If cp is unable to preserve the access
and modification times, extended attributes, or the file mode,
cp does not consider it a failure. If
cp is unable to preserve the owner and group id,
the copy does not fail, but cp silently clears
the S_ISUID and S_ISGID
bits from the file mode of the target. The copy fails if
cp is unable to clear these bits. If
cp is unable to preserve the ACL or extended
system attributes, the copy fails. If the copy fails, then a diagnostic
message is written to stderr and (after processing
any remaining operands) cp exits with a non-zero
exit status.
-PCopies symbolic links. Symbolic links encountered during traversal of a file hierarchy are preserved.
-rcp copies the directory and all its
files, including any subdirectories and their files to
target. Unless the -H,
-L, or -P option is
specified, the -L option is used as the default
mode.-R-r, except pipes are replicated, not read
from.-T-@cp attempts to copy
all of the source file's extended attributes along with the file data to
the destination file.-/cp utility attempts to copy
extended attributes and extended system attributes from each source file,
and extended system attributes associated with extended attributes to the
destination file. If cp is unable to copy extended
attributes or extended system attributes, then a diagnostic message is
written to stderr and (after processing any
remaining operands) exits with a non-zero exit status.Specifying more than one of the mutually-exclusive options
-H, -L, and
-P is not considered an error. The last option
specified determines the behavior of the utility.
If the -p option is specified with either
the -@ option or the -/
option, /usr/bin/cp behaves as follows:
-p and -@ are
specified in any order, the copy fails if extended attributes cannot be
copied.-p and -/ are
specified in any order, the copy fails if extended system attributes
cannot be copied.If the -p option is specified with either
the -@ option or the -/
option, /usr/xpg4/bin/cp behaves as follows:
-p and -@ are
specified, the last option specified determines whether the copy fails if
extended attributes cannot be preserved.-p and -/ are
specified, the last option specified determines whether the copy fails if
extended system attributes cannot be preserved.The following operands are supported:
See largefile(7) for the
description of the behavior of cp when encountering
files greater than or equal to 2 Gbyte (2^31 bytes).
See environ(7) for
descriptions of the following environment variables that affect the
execution of cp: LANG,
LC_ALL, LC_COLLATE,
LC_CTYPE, LC_MESSAGES, and
NLSPATH.
Affirmative responses are processed using the extended regular
expression defined for the yesexpr keyword in the
LC_MESSAGES category of the user's locale. The
locale specified in the LC_COLLATE category defines
the behavior of ranges, equivalence classes, and multi-character collating
elements used in the expression defined for yesexpr. The
locale specified in LC_CTYPE determines the locale
for interpretation of sequences of bytes of text data a characters, the
behavior of character classes used in the expression defined for the
yesexpr. See
locale(7).
The following exit values are returned:
Example 1 Copying a File
The following example copies a file:
example% cp goodies goodies.old example% ls goodies* goodies goodies.old
Example 2 Copying a List of Files
The following example copies a list of files to a destination directory:
example% cp ~/src/* /tmp
Example 3 Copying a Directory
The following example copies a directory, first to a new, and then to an existing destination directory:
example% ls ~/bkup /usr/example/fred/bkup not found example% cp -r ~/src ~/bkup example% ls -R ~/bkup x.c y.c z.sh example% cp -r ~/src ~/bkup example% ls -R ~/bkup src x.c y.c z.sh src: x.c y.c z.s
Example 4 Copying Extended File System Attributes
The following example copies extended file system attributes:
$ ls -/ c file1
-rw-r--r-- 1 foo staff 0 Oct 29 20:04 file1
{AH-----m--}
$ cp -/ file1 file2
$ ls -/c file2
-rw-r--r-- 1 foo staff 0 Oct 29 20:17 file2
{AH-----m--}
Example 5 Failing to Copy Extended System Attributes
The following example fails to copy extended system attributes:
$ ls -/c file1
-rw-r--r-- 1 foo staff 0 Oct 29 20:04 file1
{AH-----m--}
$ cp -/ file1 /tmp
cp: Failed to copy extended system attributes from file1 to /tmp/file1
$ ls -/c /tmp/file1
-rw-r--r-- 1 foo staff 0 Oct 29 20:09 /tmp/file1
{}
chmod(1), chown(1), setfacl(1), utime(2), fgetattr(3C), attributes(7), environ(7), fsattr(7), largefile(7), locale(7), standards(7)
The permission modes of the source file are preserved in the copy.
A -- permits the
user to mark the end of any command line options explicitly, thus allowing
cp to recognize filename arguments that begin with a
-.
| March 22, 2026 | OmniOS |