How to Copy Folder in Linux
Copying folders in Linux is a common task that you’ll often need to do, whether you’re backing up data, moving projects, or organizing files. If you’re new to Linux or just want to improve your command line skills, understanding how to copy folders efficiently can save you a lot of time and hassle. I’ll guide you through the most popular methods, so you can choose the one that fits your needs best.
We’ll cover basic commands like cp and rsync, explain their options, and show you examples that you can try right away. By the end, you’ll feel confident copying folders in Linux, whether you’re working on a personal computer or managing servers remotely.
Understanding Folder Copying in Linux
Copying a folder in Linux means duplicating the entire directory and its contents to another location. Unlike copying a single file, folders can contain many files and subfolders, so the command you use must handle this recursively.
Linux offers several tools for this:
cp(copy) command with recursive optionrsyncfor efficient copying and syncing- Graphical file managers (less common for command line users)
The most straightforward way is using cp with the -r or -a option. The -r option copies directories recursively, while -a preserves file attributes like permissions and timestamps.
Using the cp Command to Copy Folders
The cp command is the most basic and widely used tool for copying files and folders in Linux. To copy a folder, you need to include the recursive flag.
Basic Syntax
cp -r source_folder destination_folder
-ror--recursive: copies directories and their contents recursively.source_folder: the folder you want to copy.destination_folder: where you want to copy the folder to.
Example
If you want to copy a folder named project to a backup directory:
cp -r project /home/user/backup/
This command copies the entire project folder and its contents into /home/user/backup/.
Preserving File Attributes
Sometimes, you want to keep the original file permissions, timestamps, and symbolic links intact. Use the -a (archive) option:
cp -a project /home/user/backup/
The -a option is equivalent to -dR --preserve=all, which means it copies directories recursively, preserves symbolic links, and keeps all file attributes.
Overwriting and Prompting
By default, cp will overwrite files in the destination without asking. To get a prompt before overwriting, add the -i option:
cp -ri project /home/user/backup/
This is useful when you want to avoid accidental data loss.
Using rsync to Copy Folders in Linux
rsync is a powerful tool often used for backups and syncing files. It’s faster and more flexible than cp for large or remote transfers.
Basic Syntax
rsync -av source_folder/ destination_folder/
-a(archive): preserves permissions, symbolic links, and timestamps.-v(verbose): shows detailed output.- The trailing slash on
source_folder/means copy the contents of the folder, not the folder itself.
Example
Copy the project folder to a backup location:
rsync -av project/ /home/user/backup/project/
This copies all files and subfolders inside project to /home/user/backup/project/.
Benefits of rsync
- Efficient: only copies changed files.
- Can resume interrupted transfers.
- Works over SSH for remote copying.
- Preserves file attributes by default.
Copying Remote Folders
You can use rsync to copy folders between local and remote machines:
rsync -av /local/folder/ user@remote:/remote/folder/
Or from remote to local:
rsync -av user@remote:/remote/folder/ /local/folder/
This makes rsync ideal for backups and server management.
Copying Folders with Wildcards and Multiple Sources
Sometimes, you want to copy multiple folders or use wildcards.
Copy Multiple Folders
cp -r folder1 folder2 folder3 /destination/
This copies all three folders into /destination/.
Using Wildcards
To copy all folders starting with proj:
cp -r proj* /destination/
Make sure to quote wildcards if you want to avoid shell expansion issues.
Handling Permissions and Ownership
When copying folders, permissions and ownership can affect access.
- Use
sudoif you need to copy folders owned by other users or system files. - The
-aoption withcporrsyncpreserves ownership and permissions. - To change ownership after copying, use
chown:
sudo chown -R user:user /destination/folder
This changes the owner and group recursively.
Copying Hidden Files and Folders
Hidden files and folders in Linux start with a dot (.). They are not copied by default if you use wildcards like *.
How to Include Hidden Files
Use a dot wildcard:
cp -r /source_folder/. /destination_folder/
The . after the source folder copies all contents, including hidden files.
Alternatively, with rsync:
rsync -av /source_folder/ /destination_folder/
rsync copies hidden files by default when you specify the folder with a trailing slash.
Graphical Methods to Copy Folders
If you prefer a graphical interface, most Linux desktop environments have file managers like Nautilus (GNOME) or Dolphin (KDE).
Steps
- Open your file manager.
- Navigate to the folder you want to copy.
- Right-click and select "Copy."
- Navigate to the destination folder.
- Right-click and select "Paste."
This method is simple but less flexible than command line tools, especially for remote or automated tasks.
Troubleshooting Common Issues
Copying folders can sometimes fail or behave unexpectedly. Here are some tips:
- Permission denied: Use
sudoor check folder permissions. - File name too long: Some filesystems have limits; rename files if needed.
- Symbolic links not copied correctly: Use
-aoption withcporrsync. - Disk space full: Check available space with
df -h.
Summary Table of Commands
| Command Example | Description |
cp -r source dest | Copy folder recursively |
cp -a source dest | Copy folder with attributes preserved |
cp -ri source dest | Copy folder with overwrite prompt |
rsync -av source/ dest/ | Efficient copy with verbose output |
rsync -av user@remote:/folder/ dest/ | Copy remote folder to local |
cp -r folder1 folder2 dest/ | Copy multiple folders |
cp -r source/. dest/ | Copy including hidden files |
Conclusion
Copying folders in Linux is straightforward once you know the right commands. The cp command with -r or -a options is perfect for simple tasks, while rsync offers more power and flexibility for larger or remote copies. Remember to consider file permissions, hidden files, and whether you want to preserve attributes.
By practicing these commands, you’ll become more efficient managing files and folders in Linux. Whether you’re backing up data, moving projects, or syncing servers, these tools will help you get the job done quickly and safely.
FAQs
How do I copy a folder including all hidden files in Linux?
Use cp -r source_folder/. destination_folder/ to include hidden files. Alternatively, rsync -av source_folder/ destination_folder/ copies all files, including hidden ones.
Can I copy folders between two remote Linux servers?
Yes, using rsync over SSH you can copy folders between remote servers: rsync -av user1@server1:/path/ user2@server2:/path/.
What is the difference between cp -r and cp -a?
cp -r copies directories recursively but may not preserve file attributes. cp -a copies recursively and preserves permissions, timestamps, and symbolic links.
How do I avoid overwriting files when copying folders?
Add the -i option to cp like cp -ri source dest to prompt before overwriting existing files.
Is rsync faster than cp for copying folders?
Yes, rsync is faster for large or repeated copies because it only transfers changed files and can resume interrupted transfers.
