diff options
Diffstat (limited to 'man1/cp.1')
-rw-r--r-- | man1/cp.1 | 392 |
1 files changed, 392 insertions, 0 deletions
diff --git a/man1/cp.1 b/man1/cp.1 new file mode 100644 index 000000000..0f95c4e69 --- /dev/null +++ b/man1/cp.1 @@ -0,0 +1,392 @@ +.\" Copyright Andries Brouwer, Ragnar Hojland Espinosa and A. Wik, 1998. +.\" +.\" Distributed under GPL. +.\" +.TH CP 1 2003-11 "GNU fileutils 4.1" +.SH NAME +cp \- copy files and directories +.SH SYNOPSIS +.BI "cp [" "options" "] " "file path" +.br +.BI "cp [" "options" "] " "file... directory" +.sp +POSIX options: +.B "[\-fiprR] [\-\-]" +.sp +Additional POSIX 1003.1-2003 options: +.B "[\-HLP] +.sp +GNU file-utils 4.0 options (shortest form): +.br +.B [\-abdfilprsuvxPR] +.BI "[\-S " SUFFIX ] +.B "[\-V {numbered,existing,simple}]" +.BI [\-\-backup= CONTROL ] +.BI [\-\-sparse= WHEN ] +.B "[\-\-help] [\-\-version] [\-\-]" +.sp +Additional GNU file-utils 4.1 options (shortest form): +.br +.B [\-HLP] +.B [\-\-copy\-contents] +.B [\-\-no\-preserve] +.BI [\-\-reply= HOW ] +.B [\-\-remove\-destination] +.B [\-\-strip\-trailing\-slashes] +.BI [\-\-target\-directory= DIR ] +.SH DESCRIPTION +.B cp +copies files (or, optionally, directories). +You can either copy one file to a given destination, +or copy arbitrarily many files to a destination directory. +.PP +If the last argument names an existing directory, +.B cp +copies each source +.I file +into that directory (retaining the same name). Otherwise, +if only two files are given, it copies the first onto the second. It +is an error if the last argument is not a directory and more than two +non-option arguments are given. +.PP +(Thus, if /a is a directory, then `cp \-r /a /b' will copy /a to /b/a +and /a/x to /b/a/x in case a directory /b existed already, but it will +copy /a to /b and /a/x to /b/x if there was no /b beforehand, +while it will fail in case there was an ordinary file /b.) +.PP +The modes of the files and directories created will be the same +as those of the original files, ANDed by 0777, and modified by +the user's umask (unless the \-p option was specified). +(But during the recursive copy of directories, newly created +directories will temporarily get their final mode ORed with +S_IRWXU (0700), so as to allow the process to read, write +and search the newly created directory.) +.PP +Nothing is done when copying a file to itself (except possibly +producing an error message). +When copying to a different existing file, it is opened +using `open(path, O_WRONLY | O_TRUNC)'. +When copying to a new file it is created +using `open(path, O_WRONLY | O_CREAT, mode)'. +If this fails, the file existed, and the \-f option was given, +.B cp +tries to delete (unlink) the existing file, and if this succeeds +proceeds as for a new file. + +.SH "POSIX OPTIONS" +POSIX recognizes four options and a half: +.TP +.B \-f +Remove existing destination files if required. (See above.) +.TP +.B \-i +Prompt whether to overwrite existing regular destination files. +(Write a question on stderr, and read the answer from stdin. +Only copy upon an affirmative answer.) +.TP +.B \-p +Preserve the original files' owner, group, permissions +(including the setuid and setgid bits), time of last modification +and time of last access. +In case duplication of owner or group fails, the setuid and setgid +bits are cleared. +(Note that afterwards source and copy may well have different +times of last access, since the copy operation is an access +to the source file.) +.TP +.B \-R +Copy directories recursively, and do the right thing when +objects other than ordinary files or directories are encountered. +(Thus, the copy of a FIFO or special file is a FIFO or special file.) +.TP +.B \-r +Copy directories recursively, and do something unspecified +with objects other than ordinary files or directories. +(Thus, it is allowed, in fact encouraged, to have the \-r option +a synonym for \-R. However, silly behaviour, like that of the +GNU 4.0 version of +.BR cp +is not forbidden.) +.TP +.B "\-\-" +Terminate option list. +.SH "ADDITIONAL POSIX 2003 OPTIONS" +POSIX 1003.1-2003 adds three options that specify how to handle +symbolic links. When doing a non-recursive copy, symbolic links +are followed. When doing a recursive copy using the \-r option, +the results are implementation-defined. When doing a recursive +copy using the \-R option: +.TP +.B \-H +Follow the symbolic links given in the parameter list. +Do not follow symbolic links encountered during the recursive copy, +but just copy them as symbolic link. +.TP +.B \-L +Follow all symbolic links, both those that occur in the parameter list +and those encountered during the recursive copy. +.TP +.B \-P +Do not follow any symbolic links, neither those that occur +in the parameter list nor those encountered during the recursive copy. +Just copy them as symbolic link. +.LP +There is no default - one should specify the desired behaviour. +.SH "GNU DETAILS" +.PP +Generally, files are written just as they are read. For exceptions, +see the +.B "\-\-sparse" +option below. +.PP +By default, `cp' does not copy directories (see +.B "\-r" +below). +.PP +.B cp +generally refuses to copy a file onto itself, with the following +exception: if +.B "\-\-force \-\-backup" +is specified with +.I source +and +.I dest +identical, and referring to a regular file, +.B cp +will make a backup file, either regular or numbered, as specified in +the usual ways. This is useful when you simply want to make a backup +of an existing file before changing it. +.PP +By default, symbolic links are not followed. +.SH "GNU OPTIONS" +.TP +.B "\-a, \-\-archive" +Preserve as much as possible of the structure and attributes of the +original files in the copy (but do not preserve directory structure). +Equivalent to +.BR "\-dpPR" . +.TP +.B "\-b" +See the discussion of backups below. +.TP +.BR "\-\-copy\-contents" " (since file-utils 4.1)" +Do the silly things file-utils 4.0 did, +trying to copy the contents of device files and FIFOs during +a recursive copy. Never use this option. With it, `cp' may well hang +indefinitely reading a FIFO or /dev/tty, or fill the destination disk +copying /dev/zero. +.TP +.B "\-d" +Copy symbolic links as symbolic links rather than copying the +files that they point to, and preserve hard links between source +files in the copies. + +With file-utils 4.0 the long option \-\-no\-dereference was a +synonym for \-d, with file-utils 4.1 it is a synonym for \-P, +while \-d is equivalent to \-\-no\-dereference \-\-preserve=links. +.TP +.B "\-f, \-\-force" +Remove existing destination files in case an open for writing fails, +and never prompt before doing so. +(Thus since file-utils 4.1. With file-utils 4.0 this option was +equivalent to the new \-\-remove\-destination.) +.TP +.BR "\-H" " (since file-utils 4.1)" +See POSIX description above. +.TP +.B "\-i, \-\-interactive" +Prompt whether to overwrite existing regular destination files. +.TP +.B "\-l, \-\-link" +Make hard links instead of copies of non-directories. +.TP +.BR "\-L, \-\-dereference" " (since file-utils 4.1)" +See POSIX description above. +.TP +.BR "\-\-no\-preserve=\fIATTRIBUTES\fP" " (since file-utils 4.1)" +Do not preserve the specified attributes. +See the \-\-preserve option below. +.TP +.B "\-p, \-\-preserve" +Preserve the original files' owner, group, permissions, and timestamps. +.TP +.BR "\-\-preserve=\fIATTRIBUTES\fP" " (since file-utils 4.1)" +Here ATTRIBUTES can be one of "mode" (permissions), "ownership" (owner +and group), "timestamps", "links", "all" (all of the foregoing). +.TP +.BR "\-P, \-\-no\-dereference" " (since file-utils 4.1)" +See POSIX description above. +This replaces the file-utils 4.0 meaning of the \-P option, that +was a synonym for \-\-parents. See also \-d above. +.TP +.BR "\-\-parents" " (in file-utils 4.0 also \-P)" +Form the name of each destination file by appending to the target +directory a slash and the specified name of the source file. The +last argument given to +.B cp +must be the name of an existing directory. For example, the command: +.br +.nf + cp \-\-parents a/b/c existing_dir +.br +.fi +copies the file `a/b/c' to `existing_dir/a/b/c', creating any +missing intermediate directories. +.TP +.B "\-r" +In file-utils 4.1: synonym of \-R. +In file-utils 4.0: +Copy directories recursively, copying any non-directories and +non-symbolic links (that is, FIFOs and special files) as if they +were regular files. This silly behaviour is obtained in file-utils 4.1 +if the \-\-copy\-contents option is given. +.TP +.B "\-R, \-\-recursive" +Copy directories recursively, preserving non-directories. +.TP +.BR "\-\-reply=\fIHOW\fP" " (since file-utils 4.1)" +Here HOW can be one of "yes", "no", "query", specifying that +to all questions the answer is yes, or is no, or must be obtained +by querying the user, respectively. +.TP +.BR "\-\-remove\-destination" " (since file-utils 4.1)" +Remove each existing destination file before copying. +With file-utils 4.0 this option was implied by \-f. +.TP +.BI "\-\-sparse=" "WHEN" +A `sparse file' contains `holes' - sequences of zero bytes that +do not occupy any physical disk blocks; the `read' system call +reads these as zeroes. This can both save considerable disk space +and increase speed, since many binary files contain lots of +consecutive zero bytes. By default, +.B cp +detects holes in input source files via a crude heuristic +and makes the corresponding output file sparse as well. +.RS +.PP +The +.I WHEN +value can be one of the following: +.TP +.B auto +The default behavior: the output file is sparse if the input +file is sparse. +.TP +.B always +Always make the output file sparse. This is useful when the +input file resides on a filesystem that does not support +sparse files, but the output file is on a filesystem that does. +.TP +.B never +Never make the output file sparse. If you find an application for +this option, let us know. +.RE +.TP +.BR "\-\-strip\-trailing\-slashes" " (since file-utils 4.1)" +Remove any trailing slashes from each source argument. +(This can change the interpretation in case of a symbolic link +to a directory.) +.TP +.B "\-s, \-\-symbolic\-link" +Make symbolic links instead of copies of non-directories. All +source file names must be absolute (starting with `/') unless the +destination files are in the current directory. This option merely +results in an error message on systems that do not support +symbolic links. +.TP +.B "\-S" +Backup suffix, see below. +.TP +.BR "\-\-target\-directory=\fIDIR\fP" " (since file-utils 4.1)" +Specify the destination directory. Meant for use with +.BR xargs (1), +as in "ls | xargs cp --target-directory=../d". +.TP +.B "\-u, \-\-update" +Do not copy a nondirectory that has an existing destination with +the same or newer modification time. +.TP +.B "\-v, \-\-verbose" +Print the name of each file before copying it. +.TP +.B "\-x, \-\-one\-file\-system" +Skip subdirectories that are on different filesystems from the one +that the copy started on. +.SH "GNU BACKUP OPTIONS" +The GNU versions of programs like +.BR cp , +.BR mv , +.BR ln , +.B install +and +.B patch +will make a backup of files about to be overwritten, changed or destroyed +if that is desired. That backup files are desired is indicated by +the \-b option. How they should be named is specified by the \-V option. +In case the name of the backup file is given by the name of the file +extended by a suffix, this suffix is specified by the \-S option. +.TP +.B "\-b, \-\-backup" +Make backups of files that are about to be overwritten or removed. +.TP +.BI \-\-backup= CONTROL +(Since fileutils-4.1.) +.TP +.BI "\-S " SUFFIX ", \-\-suffix=" SUFFIX +Append +.I SUFFIX +to each backup file made. +If this option is not specified, the value of the +.B SIMPLE_BACKUP_SUFFIX +environment variable is used. And if +.B SIMPLE_BACKUP_SUFFIX +is not set, the default is `~'. +.TP +.BI "\-V " METHOD ", \-\-version\-control=" METHOD +.RS +Specify how backup files are named. The +.I METHOD +argument can be `numbered' (or `t'), `existing' (or `nil'), or `never' (or +`simple'). +If this option is not specified, the value of the +.B VERSION_CONTROL +environment variable is used. And if +.B VERSION_CONTROL +is not set, the default backup type is `existing'. +.PP +This option corresponds to the Emacs variable `version-control'. +The valid +.IR METHOD s +are (unique abbreviations are accepted): +.TP +.BR t ", " numbered +Always make numbered backups. +.TP +.BR nil ", " existing +Make numbered backups of files that already have them, simple +backups of the others. +.TP +.BR never ", " simple +Always make simple backups. +.RE +.SH "GNU STANDARD OPTIONS" +.TP +.B "\-\-help" +Print a usage message on standard output and exit successfully. +.TP +.B "\-\-version" +Print version information on standard output, then exit successfully. +.TP +.B "\-\-" +Terminate option list. +.SH ENVIRONMENT +The variables LANG, LC_ALL, LC_COLLATE, LC_CTYPE and LC_MESSAGES have the +usual meaning. For the GNU version, the variables SIMPLE_BACKUP_SUFFIX +and VERSION_CONTROL control backup file naming, as described above. +.SH "CONFORMING TO" +POSIX 1003.2 +.SH NOTES +This page describes +.B cp +as found in the fileutils-4.1 package; +other versions may differ slightly. |