Skip to main content

Command Palette

Search for a command to run...

How to Copy Folder in Linux

Updated
6 min read

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 option
  • rsync for 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
  • -r or --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 sudo if you need to copy folders owned by other users or system files.
  • The -a option with cp or rsync preserves 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 sudo or check folder permissions.
  • File name too long: Some filesystems have limits; rename files if needed.
  • Symbolic links not copied correctly: Use -a option with cp or rsync.
  • Disk space full: Check available space with df -h.

Summary Table of Commands

Command ExampleDescription
cp -r source destCopy folder recursively
cp -a source destCopy folder with attributes preserved
cp -ri source destCopy 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.

More from this blog

L

LinuxBloke | Linux Tips, Tricks & Troubleshooting

672 posts