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.
Copy Directory In Linux-Recursive Copy In Linux
Copy command can’t create directories or folders, so if you are trying to copy files or directories to destination directories, you must have destination directory before copying.
Copy command can’t copy the directory into other directories.
If you try to copy the files and directories to another directory it will skip the directories but it will copy the files to the destination directory. So if you want to copy directories and files inside that directory to another directory we use recursive copy.
With recursive copy, we can copy files and directories to other directories. but a recursive copy also can’t create a destination directory, only it will copy the files and directories to the destination directory.
for recursive copy, we use cp -r command.
Copying Directory In Linux:
it will copy the dir1 and its files to the dir2
copying all files and directories to the destination directory
it will copy all files and folders to the destination directory.
How to Copy a Directory in Linux Command Line [Beginner’s Tip]
This quick tip for beginners demonstrates how to copy a directory in Linux using the cp command. You’ll also learn a few additional tips around copying directory.
If you are new to Linux command line, you probably have this question in mind: How do I copy a directory and the files inside it to another directory in Linux command line?
Here’s how to copy a directory in Linux:
You probably already know that you can use cp command to copy files in Linux. Do you know that you can use the same cp command to copy a folder in Linux command line?
Hah! You already tried that and perhaps got this error:
Let me show you a thing or two about copying directory in Linux.
Copy directory in Linux command line
You can definitely use the same cp command but with the recursive option -r to copy a folder with its content to another folder. The above mentioned error also hints that you missed the -r option.
All you got to do is to use the command in this fashion:
And now if you use ls command on the destination directory, it should have the entire source directory inside it.
The -r option allows the recursive option. This means the entire content of the directory including its own subdirectories, everything in the directory will be copied to the destination.
A few things to note about copying directory in Linux
Here are a couple of things to note and tips about copying folders.
The destination directory doesn’t exist? It will be created
If the destination directory doesn’t exist (but the path exists), it will be created up to one level (explained in the next section). However, it will now copy the contents of the source directory, not the source directory itself.
For example, if you do this:
The non_existing_directory will be created with the content of the source_directory but it won’t have the source_directory inside it. Just the files of source_directory will be copied. It would be like non_existing_directory will be a replica of source_directory.
Can’t create nested directory while copying
You cannot use the above command to create nested directory structure.
For example, if you try to use cp -r source_dir dir1/dir2/dir3 but dir2 and dir3 don’t exist, it won’t create the nested directory structure and the command fails.
Preserve the original file attributes
One last tip to keep things short. If you use the -a option along with the -r option, it will preserve the original file information such as file permissions, file timestamps etc. It will archive the directory to the new location instead of creating it afresh.
This much information should be enough for you to know how to copy a directory in Linux. If you have questions or suggestions, please feel free to leave a comment.
How To Copy Directory on Linux
Copying directories on Linux is a big part of every system administrator routine.
If you have been working with Linux for quite some time, you know how important it is to keep your folders well structured.
In some cases, you may need to copy some directories on your system in order revamp your main filesystem structure.
In this tutorial, we are going to see how you can easily copy directories and folders on Linux using the cp command.
Copy Directories on Linux
In order to copy a directory on Linux, you have to execute the “cp” command with the “-R” option for recursive and specify the source and destination directories to be copied.
As an example, let’s say that you want to copy the “/etc” directory into a backup folder named “/etc_backup”.
The “/etc_backup” folder is also located at the root of your filesystem.
In order to copy the “/etc” directory to this backup folder, you would run the following command
By executing this command, the “/etc” folder will be copied in the “/etc_backup”, resulting in the following folder.
Awesome, you successfully copied one folder in another folder on Linux.
But, what if you wanted to copy the content of the directory, recursively, using the cp command?
Copy Directory Content Recursively on Linux
In order to copy the content of a directory recursively, you have to use the “cp” command with the “-R” option and specify the source directory followed by a wildcard character.
Given our previous example, let’s say that we want to copy the content of the “/etc” directory in the “/etc_backup” folder.
In order to achieve that, we would write the following command
When listing the content of the backup folder, you will come to realize that the folder itself was not copied but the content of it was.
Awesome, you copied the content of the “/etc” directory right into a backup folder!
Copy multiple directories with cp
In order to copy multiple directories on Linux, you have to use the “cp” command and list the different directories to be copied as well as the destination folder.
As an example, let’s say that we want to copy the “/etc” directory as well as all homes directories located in the “/home” directory.
In order to achieve that, we would run the following command
Congratulations, you successfully copied multiple directories using the cp command on Linux!
Copy Directories To Remote Hosts
In some cases, you may want to copy a directory in order to keep a backup on a backup server.
Needless to say that your backup server is locally remotely : you have to copy your directory over the network.
Copying using rsync
In order to copy directories to remote locations, you have to use the rsync command, specify the source folder as well as the remote destination to be copied to.
Make sure to include the “-r” option for “recursive” and the “-a” option for “all” (otherwise non-regular files will be skipped)
Also, if the “rsync” utility is not installed on your server, make sure to install it using sudo privileges.
As an example, let’s say that we need to copy the “/etc” folder to a backup server located at 192.168.178.35/24.
We want to copy the directory to the “/etc_backup” of the remote server, with the “devconnected” username.
In order to achieve that, we would run the following command
Note : we already wrote a guide on transferring files and folders over the network, if you need an extensive guide about it.
Similarly, you can choose to copy the content of the “/etc/ directory rather than the directory itself by appending a wildcard character after the directory to be copied.
Finally, if you want to introduce the current date while performing a directory backup, you can utilize Bash parameter substitution.
Note : if you are looking for a tutorial on setting dates on Linux, we have a guide about it on the website.
Copying using scp
In order to copy directory on Linux to remote location, you can execute the “scp” command with the “-r” option for recursive followed by the directory to be copied and the destination folder.
As an example, let’s say that we want to copy the “/etc” directory to a backup server located at 192.168.178.35 in the “/etc_backup” folder.
In order to achieve that, you would run the following command
Congratulations, you successfully copied an entire directory using the scp command.
Very similarly to the rsync command, you can choose to use Bash parameter substitution to copy your directory to a custom directory on your server.
In this tutorial, you learnt how you can easily copy directories on Linux, whether you choose to do it locally or remotely.
Most of the time, copying directories is done in order to have backups of critical folders on your system : namely /etc, /home or Linux logs.
If you are interested in Linux System Administration, we have a complete section dedicated to it on the website, so make sure to check it out!