Open In App

How to Copy Files and Directories in Linux | cp Command

Last Updated : 01 Nov, 2025
Comments
Improve
Suggest changes
40 Likes
Like
Report

The cp (copy) command in Linux is used to duplicate files or directories from one location to another within the file system.

  • If the destination file already exists, it is overwritten without warning.
  • The -r or -R option allows copying entire directories recursively.
  • File permissions and structure are retained during the copy process.

It offers three principal modes of operation, each serving different purposes.

1. Copying Between Two Files in Linux

If the `cp` command contains two file names, it copies the contents of the first file to the second file. If the second file doesn't exist, it is created, and the content is copied into it. However, if the second file already exists, it is overwritten without warning.

cp Sorce_file Destination_file
  • If `Dest_file` does not exist, it is created.
  • If `Dest_file` already exists, it is overwritten without any warning.

Example 1:

  • Initially, there is only one file (`a.txt`) in the directory.
  • The `cp` command is used to copy the contents of `a.txt` to `b.txt`.
  • After the command execution, both `a.txt` and the newly created `b.txt` coexist in the directory.
cp a.txt b.txt
Copy a file in Linux
copy a file in Linux

We used `ls` command to display all the file in the current directory.

Example 2:

  • Initially, there are two files (`a.txt` and `c.txt`) in the directory.
  • The `cp` command is used to copy the contents of `a.txt` to `c.txt`.
  • After the command execution, the content of `c.txt` is overwritten with the content of `a.txt`.
cp a.txt c.txt
Copy a file in Linux
Copy a file in Linux

We used `ls` command to display all the file in the current directory and used `cat`command to display the content in the text file.

Syntax of cp Command

The basic syntax for copying a file using the cp command is as follows:

cp source_file destination

This command creates a copy of the `source_file` at the specified `destination`. If the destination is a directory, the file is copied into that directory.

2. Copy files to a Directory in Linux

When the cp command has one or more source file arguments and is followed by a destination directory argument, it copies each source file to the destination directory with the same name. If the destination directory does not exist, it is created. If it already exists, the files are overwritten without warning.

cp Src_file1 Src_file2 Src_file3 Dest_directory

Example:

Suppose we have to copy three files name "a.txt", "b.txt" and "c.txt" to a directory name "new"

cp a.txt b.txt c.txt new/
Copy multiple files to another directory
Copy multiple files to another directory

We used `ls` command to display all the file in the "new" directory to confirm the successful copy of file in that directory.

3. How to Copy Directories in Linux

In this mode, if the cp command contains two directory names, it copies all files from the source directory to the destination directory. The `-R` option is typically used to indicate recursive copying for directories.

cp -R Src_directory Dest_directory
copying files between two directories
copying files between two directories

The behavior depends on whether `Dest_directory` exists or not. If it doesn't exist, `cp` creates it and copies the content of `Src_directory` recursively. If `Dest_directory` exists, the copy of `Src_directory` becomes a sub-directory under `Dest_directory`

Options Available in cp Command in Linux

 There are many options of cp command, here we will discuss some of the useful options:

1. Copy a File in Linux Using `-i` Option

-i (interactive): i stands for Interactive copying. With this option the system first warns the user before overwriting the destination file. cp prompts for a response, if you press y then it overwrites the file and with any other option leaves it uncopied.

Basic Syntax:

cp -i [Source_file] [Destination_file] 

Example:

cp -i a.txt b.txt    
Copy a File in Linux Using `-i`
Copy a File in Linux Using `-i`

Here,

  • `ls` command shows existing files: `a.txt` and `b.txt`.
  • `cat a.txt` displays the content of `a.txt`.
  • `cat b.txt` displays the content of `b.txt`.
  • `cp -i a.txt b.txt` initiates an interactive copy.
  • System prompts to confirm overwrite of` b.txt`.
  • User responds with 'y' to confirm.
  • `cat b.txt` shows the updated content, which now matches `a.txt`.

2. Copy a File in Linux Using `-f` Option

-f (force): If the system is unable to open destination file for writing operation because the user doesn't have writing permission for this file then by using -f option with cp command, destination file is deleted first and then copying of content is done from source to destination file.

Basic Syntax:

cp -f [Source_file] [Destination_file]

Example:

cp -f a.txt b.txt
Copy a File in Linux Using `-f`
Copy a File in Linux Using `-f`

Here,

  • `ls` command shows existing files: `a.txt` and `b.txt`.
  • `cat a.txt` displays the content of `a.txt`.
  • `cat b.txt` displays the content of `b.txt`.
  • `cp -f a.txt b.txt` initiates a forceful copy.
  • Destination file (b.txt) is overwritten without prompting.
  • `cat b.txt` shows the updated content, which now matches `a.txt`.

3. Copy a File in Linux Using `-r` or `-R` Option

Copying directory structure recursively. With this option cp command shows its recursive behavior by copying the entire directory structure recursively.

Basic Syntax:

cp -r [Directory_name1] [Directory_name2]

Example:

cp -r geeksforgeeks gfg

4. Copy a File in Linux Using `-p` Option

-p (preserve): With -p option cp preserves the following characteristics of each source file in the corresponding destination file: the time of the last data modification and the time of the last access, the ownership (only if it has permissions to do this), and the file permission-bits. 

Note: For the preservation of characteristics, you must be the root user of the system, otherwise characteristics change.

Basic Syntax:

cp -p [Source_file] [Destination_file]

Example:

cp -p a.txt c.txt

5. Copy a File in Linux Using `*` Option

Copying using * wildcard: The star wildcard represents anything i.e., all files and directories. Suppose we have many texts documents in a directory and want to copy it to another directory, it takes lots of time if we copy files 1 by 1 or command becomes too long if specify all these file names as the argument, but by using * wildcard it becomes simple.

Basic Syntax:

cp *.txt [Destination Directory or file]

Example:

cp *.txt Folder1
Copy a File in Linux Using `*`
Copy a File in Linux Using `*`

Explore