We have run the commands and examples mentioned in this article on a Debian 10 Buster system but you can replicate them on almost all Linux distros.
The Linux command line, the Terminal, can be easily accessed through the Application. Launcher search as follows:
Example 1: Copying a single file to a target directory
The simplest use of the cp command is to copy a single source file to a target directory. Here is the syntax you can use to do so:
Example:
In this example, I am copying a file named sample_file.txt to my Documents folder:
Later, I verified the presence of the file in the target folder through the ls command.
Example 2: Copying multiple files to a target directory
With the cp command, you can copy multiple files to a target directory by using the following syntax:
Example:
In this example, I am copying two sample files to my Documents folder through the cp command:
Later, I verified the presence of these files in the target folder through the ls command.
Example 3: Copying of files in an interactive manner
If a file with the same name exists in your target folder, you can use the cp command to prompt you before overwriting the target file. You can use the -i switch in the following manner:
Example:
In this example, a file named sample_file.txt already exists in my Documents folder, therefore the cp command, with the -i flag, prompts me if I want to overwrite it. The file will be overwritten if i enter y at this prompt.
Example 4: Copying files along with a Verbose output
A verbose output prints what the command is doing. This can be incorporated in the cp command with the -v switch as follows:
Example:
You can see in the following example how the cp command prints a verbose output while copying a command:
Example 5: Copying a directory recursively
Using the -r option with the cp command recursively copies all files and folders in a directory to another location. This is how you can use the cp command in this scenario:
Example:
In the following example, the entire folder 1, with all its files, will be copied to folder2.
I later verified the contents of folder2 through the ls command. The folder2 contains a copy of the source folder now.
Example 6: Copying a directory recursively while keeping an archive
By using the -a switch with the cp command, you can do two things at once:
- Copy files of a directory recursively to another directory
- Keep the permissions, time stamp, symbolic links, and all such properties intact while copying files.
This is how you can use the cp command in this scenario:
Example:
In the following example, all entire folder 1, with all its files, will be copied to folder2. Also, the files will be archived as verified later through the ‘ls -l command’.
Example 7: Copy a file in case it is newer than the target file
Sometimes you want to copy a file to the target directory only if it is newer than the target file. This can be done by using the -u switch with the cp command:
Example:
In this example, I edited a file sample_file.txt from my source folder. These files were already copied to the target folder before i edited the file. This can be seen in the following output of the ‘ls -l’ command:
Now, when I copied the source folder to the target folder, the verbose output verified that only that file will be copied that was edited by me.
Example 8: Copy a file but do not overwrite if a target file already exists
You can tell the cp command to not overwrite the file if it already exists in the target location. This can be done through the -n switch as follows:
Example:
In this example, I first tried copying a file to the target location where it already existed. The -i switch prompted me if I want to overwrite it.
In the second command, I added the -n switch. It ignored the -i switch but did not overwrite the already existing file in the target directory.
Example 9: Create a symbolic link to a file in target directory
With the -s switch in the cp command, you can create a symbolic link to the source file in the target folder instead of copying the source file.
Example:
In the following example, I created a symbolic link to the file sample_file.txt in the target folder.
I later verified the presence of the symbolic link in the target folder through the ‘ls -l’ command.
Example 10: Create a hard link to a file in target directory
When you create a hard link to a file in another folder, the file is not copied to the target folder; instead, a hard link to the source file is created. The inode number of both the source file and the copied hard link is the same. This is how to create a hard link:
Example:
In this example, I created a hard link to the source file in the Documents folder.
Through the ‘ls -il’ command, I verified that both the original file and the hard link have the same inode numbers.
This was all you needed to know in order to master the cp command in Linux. By using a combination of these switched, you can make file copying much more customizable.