cp command copies files from one location to another.
Syntax
cp [OPTION]… SOURCE DEST
cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… –target-directory=DIRECTORY SOURCE…
| -a, –archive | same as -dpR |
| –backup[=CONTROL] | make a backup of each existing destination file |
| -b | like –backup but does not accept an argument |
| –copy-contents | copy contents of special files when recursive |
| -d | same as –no-dereference –preserve=link |
| –no-dereference | never follow symbolic links |
| -f, –force | if an existing destination file cannot be opened, remove it and try again |
| -i, –interactive | prompt before overwrite |
| -H | follow command-line symbolic links |
| -l, –link | link files instead of copying |
| -L, –dereference | always follow symbolic links |
| -p | same as –preserve=mode,ownership,timestamps |
| –preserve[=ATTR_LIST] | preserve the specified attributes (default: mode,ownership,timestamps), if possible additional attributes: links, all |
| –no-preserve=ATTR_LIST | don’t preserve the specified attributes |
| –parents | append source path to DIRECTORY |
| -P | same as ‘–no-dereference’ |
| -R, -r, –recursive | copy directories recursively |
| –remove-destination | remove each existing destination file before attempting to open it (contrast with –force) |
| –reply={yes,no,query} | specify how to handle the prompt about an existing destination file |
| –sparse=WHEN | control creation of sparse files |
| –strip-trailing-slashes | remove any trailing slashes from each SOURCE argument |
| -s, –symbolic-link | make symbolic links instead of copying |
| -S, –suffix=SUFFIX | override the usual backup suffix |
| –target-directory=DIRECTORY | move all SOURCE arguments into DIRECTORY |
| -u, –update | copy only when the SOURCE file is newer than the destination file or when the destination file is missing |
| -v, –verbose | explain what is being done |
| -x, –one-file-system | stay on this file system |
Examples
cp file1.txt newdir
Copies the file1.txt in the current directory to the newdir directory.
cp /home/public_html/mylog.txt /home/public_html/backup/mylog.bak
Copies the mylog.txt file in the public_html directory into the public_html/backup directory as mylog.bak. The files are identical however have different names.
cp *.txt newdir
Copy all files ending in .txt into the newdir directory.
cp -r /home/hope/files/* /home/hope/backup
Copies all the files, directories, and subdirectories in the files directory into the backup directory.
Note: Many new versions of Linux/Unix or their variants may also be able to use copy in place of cp or have an alias setup for cp as copy.



