How do I copy folder with files to another folder in Unix/Linux? [closed]
Want to improve this question? Update the question so it’s on-topic for Stack Overflow.
Closed 7 years ago .
I am having some issues to copy a folder with files in that folder into another folder. Command cp -r doesn’t copy files in the folder.
3 Answers 3
The option you’re looking for is -R .
- If destination doesn’t exist, it will be created.
- -R means copy directories recursively . You can also use -r since it’s case-insensitive.
- Note the nuances with adding the trailing / as per @muni764’s comment.
You are looking for the cp command. You need to change directories so that you are outside of the directory you are trying to copy.
If the directory you’re copying is called dir1 and you want to copy it to your /home/Pictures folder:
Linux is case-sensitive and also needs the / after each directory to know that it isn’t a file.
is a special character in the terminal that automatically evaluates to the current user’s home directory. If you need to know what directory you are in, use the command pwd .
When you don’t know how to use a Linux command, there is a manual page that you can refer to by typing:
at a terminal prompt.
Also, to auto complete long file paths when typing in the terminal, you can hit Tab after you’ve started typing the path and you will either be presented with choices, or it will insert the remaining part of the path.
How to Copy Files and Directories in Linux
This guide will show you how to copy files and directories in Linux by executing commands from the command line. Furthermore, the commands listed below detail how to create system-wide backups or filter out and copy only specific files.
Note: These Linux commands can only be run from a terminal window. If your version of Linux boots to a desktop graphical interface, launch a terminal window by pressing CTRL-ALT-F2 or CTRL-ALT-T.
Using the cp Command to Copy Files and Directories in Linux
The cp command is the primary method for copying files and directories in Linux. Virtually all Linux distributions can use cp . The basic format of the command is:
This Linux command creates a copy of the my_file.txt file and renames the new file to my_file2.txt.
By default, the cp command runs in the same directory you are working in. However, the same file cannot exist twice in the same directory. You’ll need to change the name of the target file to copy in the same location. Some users will add _old, some will add a number, and some will even change the three-letter extension (e.g., .bak instead of .txt).
You may not get a warning before Linux overwrites your file – be careful, or see below for the –i option.
Additional Options
Additional options can be used in combination with the cp command:
- –v verbose: shows the progress of multiple copied files
- –ppreserve: keeps the same attributes, like creation date and file permissions
- –f force: force the copy by deleting an existing file first
- –i interactive: prompts for confirmation, highly advised
- –Rrecursive: copies all files and subfolders in a directory
- –u update: copy only if source is newer than destination
Note: The -p (preserve) option forces the system to preserve the following source file attributes: modification time, access time, user ID (UID), group ID (GID), file flags, file mode, access control lists (ACLs), and extended attributes (EAs).
How to Copy File to Another Directory in Linux
To copy a file from the directory you’re working in to a different location, use the command:
You don’t need to rename the file unless there’s already one with the same name in the target directory.
To specify a path for the source file:
This lets you copy without having to change directories. The cp command will create the /new_directory if it doesn’t exist.
To rename and copy a file to a different path:
This option is useful for creating backups of configuration files, or for copying data to a storage device.
Copy Multiple Files from One Directory to Another in Linux
You may need to copy more than one file at a time.
List each file to be copied before the target directory:
This example created a copy of all three files in the /new_directory folder.
Use a wildcard to specify all files that share a string of characters:
This would find all the files with the .jpg extension in the /pictures directory, and copy them into the /new_directory folder.
To copy an entire folder and its subfolders and files, use the –R option:
–R stands for recursive, which means “everything in that location.” This would copy all the files, as well as all the directories, to the /new_directory folder.
Copy Using rsync Command
The rsync command in Linux is used to synchronize or transfer data between two locations. Usage is similar to cp , but there are a few key differences to note.
To copy a single file, enter the following into a terminal:
- The –a option means all, and is included with rsync commands – this preserves subdirectories, symbolic links, and other metadata.
- Replace the my_file.txt file in the working directory.
- Replace /new_directory/ with the destination.
- Using my_file_backup.txt as the target indicates the file will be renamed during the copy.
To copy a directory with rsync, enter the following:
This copies the contents of the /etc/docker/ directory to /home/backup/docker/. Make sure to keep the slashes. Omitting the slash on the source directory will copy the contents into a subdirectory.
To omit files from being copied check out our guide on how to exclude files and directories in data transfer using rsync command.
Other Options
The ls command is a handy partner to the cp command in Linux.
To list the contents of a directory enter the command:
The example above displays all the files in /directory. Use this command after copying to verify the files were copied successfully.
To change directories, use cd and the name of the directory. For example:
The command prompt will change to display that you’ve changed directories.
Now you understand how to copy files in Linux. The cp command is a versatile and powerful tool for managing and backing up files.
How to Copy Files and Folders on Linux Using the cp Command
by Magesh Maruthamuthu · Last Updated: December 13, 2019
All levels of Linux Administrator cannot leave a day without using the cp (copy) command, is this true?
According to my personal experience with Linux I can say yes.
If I have less work I use at least 15-20 times a day.
This number is slightly higher if the work is higher.
If you are looking for remote file copy utility, try the rsync command or scp command or pscp command.
What is cp Command
The cp command is one of the basic Linux commands for copying files and directories from one location to another.
When copying files from source to destination, the source file name does not change, but we can change the target file name if we need to.
Common Syntax for cp Command:
Common Options for cp Command:
To demonstrate this in details, we are going to performing a copy operation between user1 and user1 .
1) How to Copy a File from One Location to Another in Linux Using the cp Command
To copy a file from one location to another, use the following command. This will copy the source file to the destination with the same name.
I have copied the source file “/home/user1/cp-demo.txt” to the target “/home/user2” directory.
You can check whether the specified file has been copied to the target directory using the ls command. Yes, it is, I could see it.
2) How to Copy a File from One Location to Another With a Different Name on Linux Using the cp Command
To copy a file from one place to another with a different name enter the new name for a file in the target location.
The following command format copies the source file to destination location with a different name.
Use the ls command to verify this.
The output clearly shows that the specified file is copied from the source “/home/user1/cp-demo.txt” to the target “/home/user2/cp-demo11.txt” directory with a different name.
3) How to Copy Multiple Files from One Location to Another in Linux Using the cp Command
The following command copies multiple files from one location to another.
In this example, we are going to copy three files named “cp-demo.txt, cp-demo-1.txt and cp-demo-9.txt”.
No option is required to perform this action, and all the files must be entered with the space.
Use the ls command to check this. Yes, i can see them in the target directory.
4) How to Copy a Directory Recursively from One Location to Another in Linux Using the cp Command
If you want to copy a directory recursively from one location to another using the cp command, use the -r/R option with the cp command.
It copies the folder including the subdirectories and their files to the target directory.
The folder name remains same.
Use the ls command to check this. Yes, i can see them in the target directory.
5) How to Recursively Copy Multiple Folders on Linux Using the cp Command
It’s like the one above and it allows you to copy multiple folders at once.
To do so, use the following cp command format. In this example, we copy the public_html & public_ftp folders to the target directory named /home/2daygeek/cp-test.
This can be checked using the ls command.
6) How To Copy Specific Format Files in Linux Using the cp Command
If you want to copy specific extension files on Linux using the cp command, use “wildcard (*)” with the specified file extension to do that.
In this example, we are going to copy the list of files containing the *.sh extension into the target directory. Similarly, you can copy any file extensions such as .jpg, .png, .txt, .php, and .html.
This can be checked using the ls command.
7) How to Copy All Files from One Location to Another in Linux Using “wildcard (*)”
If you have a list of files and you want to copy them all to another location, use the following cp command format.
This excludes the directory by default, and the “-r” option must be included in this command to copy them.
The same can be checked by using the ls command.
8) How to Copy All Files and Folders from One Location to Another in Linux Using “wildcard (*)”
Most of you can use the mv (move) command for this operation, but this will move all the files to the target directory instead of the copy, which is not what you expected.
To do so, use the following cp command format. This is similar to the one above, but it will copy files and folders to the target directory at the same time.
Also, this combination could also copy soft-link/symbolic link files.
The same can be checked by using the ls command.
9) How to Copy All Files, Including Hidden Files (“.” Dot Files) in Linux Using the cp Command
This command is the same as above, but you need to add “dot (.)” in addition to copy all the files, including hidden files.
It copies all types of files, folders, link-files and hidden or dot files from source to destination in the same name recursively.
You can verify this by using the ls command with the “-a” option.
10) How to Backup the File When Using the cp Command if the File is in the Target Directory
The cp command allows you to backup the file if the file is in the target directory using the —backup option.
In this example, we are copying the /home/user1/passwd-up.sh file into the target directory /home/user2/. If the file exist, it will backup the “passwd-up.sh” file in the target directory.
To backup a file, you should give “yes” when you see the message below.
You can check this using the ls command. This adds the “Tilde (
)” symbol at the end of the old file.
11) How to Copy a File With Attributes in Linux Using the cp Command
By default, Linux replaces your permissions such as username, group name, date and time when you copy a file from others, and it doesn’t carry the original file attributes.
This is easily understandable compared to the release of the example above. But if you want to preserve the original attributes of a file, use the -p option with the cp command.
You can check this using the ls command. The “service-1.sh” file still retains its original permissions instead of root permissions.
12) How to Avoid Overwriting an Existing File When Copying a File Using the cp Command on Linux
If you don’t want to overwrite an existing file when copying a file in Linux, use the -n option with the cp command.
This will only copy the source file if there is no file with the same name in the target directory. If it is, the command runs but doesn’t make any changes.
Use the ls command to check the output. It has no action against this file because I can still see the old time stamp, which is in the example output above.
13) How to Ask for Confirmation if the File Exist in the Target Directory
If you would like to ask for confirmation before overwriting a file, use the -i option with the cp command.
Use the ls command to check the output. Yes, it was overwritten after receiving confirmation from you, because the timestamp of the file has now been changed.
14) How to Copy a Link File on Linux Using the cp Command
By default, the copy command exclude link files while performing a copy operation, use the -d option with the cp command to copy all types of files.
It has been successfully completed, and you can see the soft link file in the below output.
Conclusion:
In this tutorial, we have included 14 examples that are widely used by most of the Linux administrators in their daily operations. If you think there are other options to try, visit the man page of the cp command.