cp (copy) command is one of the most basic tools in any Unix-based operating system, such as Ubuntu, Mint, and Debian. It is used to copy files and directories from one location to another. This tutorial aims to provide a comprehensive guide for the effective use of the
cp command in the context of Linux-based operating systems. We will cover basic syntax, options, and common use cases, including backup scenarios.
The basic syntax of the
cp command is as follows:
cp [options] [source] [destination]
options: Modifiers that change the behavior of the command.
source: The file or directory you want to copy.
destination: The location where you want the copy to be stored.
To copy a file named
file.txt from the current directory to a directory called
backup, you would do the following:
cp file.txt backup/
Used to copy entire directories, including their contents and subdirectories.
cp -r source/ destination/
In this example, we use
cp to copy an entire directory, called
source, to a directory called
This option is commonly used for backups. It preserves symbolic links, file attributes, and permissions.
cp -a source/ destination/
Copy only when the source file is newer than the destination file or when the destination file is missing.
cp -u source destination
When using the
cp command to copy an entire directory on Linux-based systems like Ubuntu, Mint, or Debian, it’s important to understand what happens when the destination directory already contains files, especially if some of those files have the same name as those in the source.
By default, if you copy a directory using the
cp command and the destination directory already contains a file with the same name as a file in the source, the following will occur:
- The existing file in the destination directory will be replaced by the file from the source directory.
- The previous content of the file in the destination directory will be lost.
For example, if we have the file
text.txt in both the source and destination directories, and we execute:
cp -r source/ destination/
text.txt in the
destination/ directory will be replaced by the
text.txt from the
If you want to prevent accidental file overwriting, you can use the interactive
-i option, like this:
cp -ri source/ destination/
In this case, the system will ask if you really want to replace each file that already exists in the destination directory.
-u option can be used to replace files only when the source file is newer than the destination file:
cp -ru source/ destination/
-a option, all metadata and permissions will be preserved when copying. This is often used in backup operations:
cp -ra source/ destination/
In addition to the
cp command, you can explore other commands like
rsync, which offer even more control and options for more complex copying tasks.
cp command is a versatile and effective tool for managing files and directories on systems like Ubuntu, Mint, and Debian. It is widely used both for everyday tasks and for more complex backup procedures.
Other Linux commands for file manipulation you should know are:
mv: To move files and directories.
rsync: To synchronize files and directories, often used for backups.
scp: To copy files between machines on a network - read the tutorial.
dd: Used for low-level copying and backup.