7ea2450f42
This is also implemented in at least GNU coreutils cp. While here also improve the '-l' handling to not open(2) the source file as it does not actually need the descriptor. Sponsored by: EMC / Isilon Storage Division
327 lines
7.9 KiB
Groff
327 lines
7.9 KiB
Groff
.\"-
|
|
.\" Copyright (c) 1989, 1990, 1993, 1994
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" This code is derived from software contributed to Berkeley by
|
|
.\" the Institute of Electrical and Electronics Engineers, Inc.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 4. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)cp.1 8.3 (Berkeley) 4/18/94
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd June 6, 2015
|
|
.Dt CP 1
|
|
.Os
|
|
.Sh NAME
|
|
.Nm cp
|
|
.Nd copy files
|
|
.Sh SYNOPSIS
|
|
.Nm
|
|
.Oo
|
|
.Fl R
|
|
.Op Fl H | Fl L | Fl P
|
|
.Oc
|
|
.Op Fl f | i | n
|
|
.Op Fl alpsvx
|
|
.Ar source_file target_file
|
|
.Nm
|
|
.Oo
|
|
.Fl R
|
|
.Op Fl H | Fl L | Fl P
|
|
.Oc
|
|
.Op Fl f | i | n
|
|
.Op Fl alpsvx
|
|
.Ar source_file ... target_directory
|
|
.Sh DESCRIPTION
|
|
In the first synopsis form, the
|
|
.Nm
|
|
utility copies the contents of the
|
|
.Ar source_file
|
|
to the
|
|
.Ar target_file .
|
|
In the second synopsis form,
|
|
the contents of each named
|
|
.Ar source_file
|
|
is copied to the destination
|
|
.Ar target_directory .
|
|
The names of the files themselves are not changed.
|
|
If
|
|
.Nm
|
|
detects an attempt to copy a file to itself, the copy will fail.
|
|
.Pp
|
|
The following options are available:
|
|
.Bl -tag -width flag
|
|
.It Fl H
|
|
If the
|
|
.Fl R
|
|
option is specified, symbolic links on the command line are followed.
|
|
(Symbolic links encountered in the tree traversal are not followed.)
|
|
.It Fl L
|
|
If the
|
|
.Fl R
|
|
option is specified, all symbolic links are followed.
|
|
.It Fl P
|
|
If the
|
|
.Fl R
|
|
option is specified, no symbolic links are followed.
|
|
This is the default.
|
|
.It Fl R
|
|
If
|
|
.Ar source_file
|
|
designates a directory,
|
|
.Nm
|
|
copies the directory and the entire subtree connected at that point.
|
|
If the
|
|
.Ar source_file
|
|
ends in a
|
|
.Pa / ,
|
|
the contents of the directory are copied rather than the
|
|
directory itself.
|
|
This option also causes symbolic links to be copied, rather than
|
|
indirected through, and for
|
|
.Nm
|
|
to create special files rather than copying them as normal files.
|
|
Created directories have the same mode as the corresponding source
|
|
directory, unmodified by the process' umask.
|
|
.Pp
|
|
Note that
|
|
.Nm
|
|
copies hard linked files as separate files.
|
|
If you need to preserve hard links, consider using
|
|
.Xr tar 1 ,
|
|
.Xr cpio 1 ,
|
|
or
|
|
.Xr pax 1
|
|
instead.
|
|
.It Fl a
|
|
Archive mode.
|
|
Same as
|
|
.Fl RpP .
|
|
.It Fl f
|
|
For each existing destination pathname, remove it and
|
|
create a new file, without prompting for confirmation
|
|
regardless of its permissions.
|
|
(The
|
|
.Fl f
|
|
option overrides any previous
|
|
.Fl i
|
|
or
|
|
.Fl n
|
|
options.)
|
|
.It Fl i
|
|
Cause
|
|
.Nm
|
|
to write a prompt to the standard error output before copying a file
|
|
that would overwrite an existing file.
|
|
If the response from the standard input begins with the character
|
|
.Sq Li y
|
|
or
|
|
.Sq Li Y ,
|
|
the file copy is attempted.
|
|
(The
|
|
.Fl i
|
|
option overrides any previous
|
|
.Fl f
|
|
or
|
|
.Fl n
|
|
options.)
|
|
.It Fl l
|
|
Create hard links to regular files in a hierarchy instead of copying.
|
|
.It Fl n
|
|
Do not overwrite an existing file.
|
|
(The
|
|
.Fl n
|
|
option overrides any previous
|
|
.Fl f
|
|
or
|
|
.Fl i
|
|
options.)
|
|
.It Fl p
|
|
Cause
|
|
.Nm
|
|
to preserve the following attributes of each source
|
|
file in the copy: modification time, access time,
|
|
file flags, file mode, ACL, user ID, and group ID, as allowed by permissions.
|
|
.Pp
|
|
If the user ID and group ID cannot be preserved, no error message
|
|
is displayed and the exit value is not altered.
|
|
.Pp
|
|
If the source file has its set-user-ID bit on and the user ID cannot
|
|
be preserved, the set-user-ID bit is not preserved
|
|
in the copy's permissions.
|
|
If the source file has its set-group-ID bit on and the group ID cannot
|
|
be preserved, the set-group-ID bit is not preserved
|
|
in the copy's permissions.
|
|
If the source file has both its set-user-ID and set-group-ID bits on,
|
|
and either the user ID or group ID cannot be preserved, neither
|
|
the set-user-ID nor set-group-ID bits are preserved in the copy's
|
|
permissions.
|
|
.It Fl s
|
|
Create symbolic links to regular files in a hierarchy instead of copying.
|
|
.It Fl v
|
|
Cause
|
|
.Nm
|
|
to be verbose, showing files as they are copied.
|
|
.It Fl x
|
|
File system mount points are not traversed.
|
|
.El
|
|
.Pp
|
|
For each destination file that already exists, its contents are
|
|
overwritten if permissions allow.
|
|
Its mode, user ID, and group
|
|
ID are unchanged unless the
|
|
.Fl p
|
|
option was specified.
|
|
.Pp
|
|
In the second synopsis form,
|
|
.Ar target_directory
|
|
must exist unless there is only one named
|
|
.Ar source_file
|
|
which is a directory and the
|
|
.Fl R
|
|
flag is specified.
|
|
.Pp
|
|
If the destination file does not exist, the mode of the source file is
|
|
used as modified by the file mode creation mask
|
|
.Pf ( Ic umask ,
|
|
see
|
|
.Xr csh 1 ) .
|
|
If the source file has its set-user-ID bit on, that bit is removed
|
|
unless both the source file and the destination file are owned by the
|
|
same user.
|
|
If the source file has its set-group-ID bit on, that bit is removed
|
|
unless both the source file and the destination file are in the same
|
|
group and the user is a member of that group.
|
|
If both the set-user-ID and set-group-ID bits are set, all of the above
|
|
conditions must be fulfilled or both bits are removed.
|
|
.Pp
|
|
Appropriate permissions are required for file creation or overwriting.
|
|
.Pp
|
|
Symbolic links are always followed unless the
|
|
.Fl R
|
|
flag is set, in which case symbolic links are not followed, by default.
|
|
The
|
|
.Fl H
|
|
or
|
|
.Fl L
|
|
flags (in conjunction with the
|
|
.Fl R
|
|
flag) cause symbolic links to be followed as described above.
|
|
The
|
|
.Fl H ,
|
|
.Fl L
|
|
and
|
|
.Fl P
|
|
options are ignored unless the
|
|
.Fl R
|
|
option is specified.
|
|
In addition, these options override each other and the
|
|
command's actions are determined by the last one specified.
|
|
.Pp
|
|
If
|
|
.Nm
|
|
receives a
|
|
.Dv SIGINFO
|
|
(see the
|
|
.Cm status
|
|
argument for
|
|
.Xr stty 1 )
|
|
signal, the current input and output file and the percentage complete
|
|
will be written to the standard output.
|
|
.Sh EXIT STATUS
|
|
.Ex -std
|
|
.Sh EXAMPLES
|
|
Make a copy of file
|
|
.Pa foo
|
|
named
|
|
.Pa bar :
|
|
.Pp
|
|
.Dl $ cp foo bar
|
|
.Pp
|
|
Copy a group of files to the
|
|
.Pa /tmp
|
|
directory:
|
|
.Pp
|
|
.Dl $ cp *.txt /tmp
|
|
.Pp
|
|
Copy the directory
|
|
.Pa junk
|
|
and all of its contents (including any subdirectories) to the
|
|
.Pa /tmp
|
|
directory:
|
|
.Pp
|
|
.Dl $ cp -R junk /tmp
|
|
.Sh COMPATIBILITY
|
|
Historic versions of the
|
|
.Nm
|
|
utility had a
|
|
.Fl r
|
|
option.
|
|
This implementation supports that option, however, its behavior
|
|
is different from historical
|
|
.Fx
|
|
behavior.
|
|
Use of this option
|
|
is strongly discouraged as the behavior is
|
|
implementation-dependent.
|
|
In
|
|
.Fx ,
|
|
.Fl r
|
|
is a synonym for
|
|
.Fl RL
|
|
and works the same unless modified by other flags.
|
|
Historical implementations
|
|
of
|
|
.Fl r
|
|
differ as they copy special files as normal
|
|
files while recreating a hierarchy.
|
|
.Pp
|
|
The
|
|
.Fl l,
|
|
.Fl s,
|
|
.Fl v,
|
|
.Fl x
|
|
and
|
|
.Fl n
|
|
options are non-standard and their use in scripts is not recommended.
|
|
.Sh SEE ALSO
|
|
.Xr mv 1 ,
|
|
.Xr rcp 1 ,
|
|
.Xr umask 2 ,
|
|
.Xr fts 3 ,
|
|
.Xr symlink 7
|
|
.Sh STANDARDS
|
|
The
|
|
.Nm
|
|
command is expected to be
|
|
.St -p1003.2
|
|
compatible.
|
|
.Sh HISTORY
|
|
A
|
|
.Nm
|
|
command appeared in
|
|
.At v1 .
|