Get 50% Discount Offer 26 Days

Recommended Services
Supported Scripts
WordPress
Hubspot
Joomla
Drupal
Wix
Shopify
Magento
Typeo3
How to Copy the Contents of a Folder to Another Folder in Linux VPS

Copying files and folders is an essential skill for any Linux user. Whether managing a personal project, administering a server, or simply organizing your local files, understanding how to copy contents between directories correctly is vital. In this in-depth guide, you will explore multiple ways to copy the contents of one folder to another folder in Linux. Topics include common commands, best practices, advanced techniques, and real-world examples. You can confidently handle file transfers on any Linux distribution by the end.

Throughout this guide, the focus is on efficiency, security, and clarity. Whether new to Linux or a seasoned pro, this resource is designed to help you master file-copying tasks effortlessly.

Introduction to Linux File Management

In Linux, files play a central role. From system configuration to user data, everything revolves around the filesystem. Directories (often called “folders”) allow you to keep your data organized. Copying files and directories is a routine operation—maybe you need to back up a project, migrate files to another server, or duplicate a configuration to test changes without altering the original.

Why This Topic Is Important

  • Data Safety: Ensures critical data always has a backup.
  • Organization: Enables a structured approach to storing files.
  • Collaboration: Allows multiple users to share or distribute the same content.
  • Efficiency: Command-line utilities provide faster, more flexible file operations than many graphical interfaces.

Mastering how to copy the contents of one folder to another lays the groundwork for more advanced tasks like automation, backup scripting, and remote file transfers.

Understanding the Linux Directory Structure

Before delving into copying commands, it is helpful to understand how Linux organizes its directories. The Linux filesystem starts at the root directory (/) and branches into various subdirectories. Some common ones include:

  • /home: Contains each user’s files and directories.
  • /etc: Holds system-wide configuration files.
  • /var: Holds changeable data like logs and caches.
  • /usr: Contains user programs and tools.
  • /bin, /sbin: Include essential system binaries.

Familiarity with absolute paths (e.g., /home/user/documents) and relative paths (e.g., ./documents) is also critical for file-copying operations.

Basic Command-Line Utilities for Copying Files

Linux offers several commands for moving and copying data:

  • cp: The go-to command for local copying of files or directories.
  • rsync: Excellent for incremental transfers and synchronizing directories.
  • scp: Used for secure transfers across a network via SSH.
  • Tar and zip are primarily archiving tools, but they can also simplify copying large or deeply nested directories.

Each tool has its strengths. Next, we’ll examine the cp command, the most commonly used method for copying files in Linux.

Using the cp Command: A Step-by-Step Guide

The cp command, short for “copy,” is at the heart of basic file and directory copying on Linux.

Basic Syntax

cp [OPTION]... SOURCE DESTINATION
  • SOURCE: The specific file or folder you intend to duplicate.
  • DESTINATION: The path where the duplicate should be placed.

Copying a Single File

To copy a file from one directory to another:

cp /home/user/documents/report.txt /home/user/backup/
Cp command copying report txt from documents to backup directory, folder

Here, report.txt from the documents folder is copied into the backup folder. If the backup folder does not exist, cp will fail unless you create the folder first.

Copying Multiple Files

You can copy more than one file in a single command:

cp /home/user/documents/file1.txt /home/user/documents/file2.txt /home/user/backup/
CP command copying multiple text files into a backup directory

Both file1.txt and file2.txt will be copied to the backup directory.

Verbose Output

For a detailed printout of each file as it is copied, use the -v (verbose) flag:

cp -v /home/user/documents/file1.txt /home/user/backup/
cp v command demonstrating file1 txt copying from documents to backup

This shows a line in the terminal confirming the file was copied, making it easier to track large operations.

Copying Files vs. Copying Directories

By default, cp only handles individual files. To copy entire directories, you must use recursion.

Basic Directory Copy

Assume there is a folder called photos containing various images and subfolders. To copy everything within photos to a backup folder:

cp -r /home/user/photos /home/user/backup/
cp r command duplicating photos folder from user home to backup location

The -r (or -R) option tells cp to copy all files and subdirectories recursively.

Preserving Attributes While Copying

If you need to maintain ownership, permissions, and timestamps, use the -a (archive) flag:

cp -a /home/user/photos /home/user/backup/
cp a command preserving file attributes while copying photos directory to backup

Archive mode replicates the directory structure and file attributes, making it perfect for backups or system migrations.

Preserving Permissions and Ownership

When exact fidelity of file permissions and ownership is required (e.g., backing up system configuration files), the -a option ensures everything remains identical in the destination. This is beneficial for:

  • System Configuration Backups: Keeps your config files intact.
  • User Data Migration: Retains the correct user and group ownership.
  • Project Archives: Preserves modification dates and symbolic links.

Handling Hidden Files and Special Characters

Linux treats files or directories that begin with a dot (.) as hidden. Also, special characters (including spaces) can complicate command-line operations.

Hidden Files with cp

When you copy folders using cp -r, hidden files are usually included automatically. However, hidden files might be excluded if you use wildcard patterns (like *.txt). You can reference them explicitly:

cp .* /destination/
cp command attempting to copy hidden files and directories to a destination folder

Note that .* can match. and .., so use caution or rely on recursive copying of the folder instead.

Special Characters and Spaces

When dealing with filenames containing spaces or special characters, enclose the name in quotes:

cp "/home/user/My Documents/report file.txt" "/home/user/backup/"
Copying a file with spaces in the name using quotes to specify the source and destination paths

The shell interprets spaces without quotes as argument separators, likely causing an error.

Recursive Copying and the -r Flag

Recursively copying directories is one of the most common tasks. The -r flag simplifies this process.

Example: Copying a Project Directory

Suppose there is a my_project folder with subdirectories like src, bin, and assets. Copy everything into a my_project_backup folder:

cp -r /home/user/my_project /home/user/my_project_backup
Recursive copy of my_project folder and all its subdirectories to my_project_backup directory

Every file and subdirectory inside my_project is transferred to my_project_backup.

Combining Flags

It is common to combine flags:

cp -rav /home/user/my_project /home/user/my_project_backup
  • -r: Recursively copy.
  • -a: Archive mode (preserves attributes).
  • -v: Verbose output.

Overwriting and Prompting for Confirmation

By default, cp overwrites existing files in the destination without warning. To be prompted before overwriting:

cp -i /home/user/documents/file1.txt /home/user/backup/
Using cp -i command to copy file1.txt with confirmation before overwriting in backup directory

If file1.txt exists in /home/user/backup/, you will be asked for confirmation.

Forcing Overwrites

If you are sure you want to overwrite without any prompts:

cp -f file1.txt file2.txt /home/user/backup/
Using cp -f command to forcefully overwrite files file1.txt and file2.txt in the backup directory without prompts

The -f (force) flag overwrites files quietly. Exercise caution to avoid accidental data loss.

Common Mistakes to Avoid

Copying files and directories might seem straightforward, but these errors can trip you up:

  • Forgetting -r: Omitting the recursive flag means only individual files are copied, often resulting in errors.
  • Typos in Destination Paths: A small path typo can place files in unintended locations or trigger errors.
  • Silent Overwrites: Not using -i may overwrite essential files without notice.
  • Losing Permissions: Skipping -a can lead to ownership and permission mismatches.
  • Neglecting Hidden Files: Hidden files like .env or .gitignore can be critical but easily overlooked.
  • Misuse of Wildcards: An incorrect pattern can copy too much data or miss key files.

Using rsync for Advanced Copy Operations

While cp works well for local copies, rsync offers advanced functionality, especially for synchronization. rsync (remote sync) can:

  • Copy only changed parts of files.
  • Compress data on the fly.
  • Efficiently handle large or frequent transfers.
  • Work seamlessly over networks using SSH.

Basic rsync Syntax

rsync [OPTION]... SOURCE DESTINATION

Key Advantages of rsync

  • Incremental Copying: Minimizes bandwidth and time by copying only differences.
  • Preserving Permissions: Similar to cp -a, rsync can maintain ownership and timestamps.
  • Compression: The -z flag compresses data, improving speed over slow connections.
  • Remote Synchronization: Easily sync files between local and remote machines.

Common rsync Options

  • -r or -a: Recursively copy. -a (archive mode) includes multiple preservation options.
  • -z: Compress data during transfer.
  • -v: Verbose output.
  • -P: Shows progress and resumes partial transfers.
  • –delete: Makes destination mirror the source, removing extraneous files.

Example rsync Command

rsync -avzP /home/user/my_project/ /home/user/backup/my_project/

  • -a: Archive mode (preserves attributes).
  • -v: Verbose output.
  • -z: Compression.
  • -P: Progress display and partial resume.

Secure Copy with scp

For secure file transfers over a network, scp (Secure Copy) uses SSH encryption.

Basic Syntax

scp [OPTION]... [user@]source_host:/path/source [user@]destination_host:/path/destination

Local to Remote Copy

scp -r /home/user/my_project user@remote_server:/home/user/
Secure copy command transferring file1 txt from local system to a remote server directory

The -r flag copies directories recursively.

Remote to Local Copy

scp -r user@remote_server:/home/user/my_project /home/user/local_backup/
Secure copy command downloading file1 txt from a remote server to the local system directory

scp is straightforward for one-off transfers, while rsync may be more efficient for more significant or repetitive tasks.

Copying Large Directories with tar and zip

If you have massive directories with many nested files, creating a single archive and moving it can be easier.

Using tar

Create a tar archive:

tar -cvf my_project.tar /home/user/my_project
Using tar cvf command to create a tar archive named archive_name tar containing files and directories
  • -c: Create an archive.
  • -v: Verbose output.
  • -f: Specify filename.

Copy my_project.tar to the desired location:

cp my_project.tar /home/user/backup/

Extract it later:

tar -xvf my_project.tar -C /home/user/backup/
Using tar xvf command to extract archive_name tar to a specific directory path in the system

Using zip

Alternatively, compress and copy:

zip -r my_project.zip /home/user/my_project
Using zip r command to compress the my_project directory into a zip archive for storage or transfer
cp my_project.zip /home/user/backup/
Using cp command to copy the my_project zip file from documents to the backup directory
unzip my_project.zip -d /home/user/backup/
Using unzip command to extract the my_project zip file into the backup directory location

Archives are handy for transferring directories across different platforms or for long-term storage.

File Managers for Desktop Environments

Using a GUI environment (GNOME, KDE, or Xfce), you can copy folders via drag-and-drop in file managers like Nautilus, Dolphin, or Thunar.

Advantages of Graphical File Managers

  • Intuitive: Drag-and-drop simplicity.
  • Bulk Operations: It is easier to visually select multiple files or directories.
  • Integration: Often ties into desktop features like search and file previews.

Limitations

  • Less Transparent: Diagnosing errors or exceptional cases can be more complicated than with command-line tools.
  • Less Scriptable: Automating tasks with a GUI is more cumbersome than shell scripts.

Combining Commands for Efficient Workflows

Linux allows chaining commands with &&, ||, or pipes to create more robust operations.

Example Workflow

mkdir /home/user/backup && cp -r /home/user/my_project /home/user/backup/ && echo "Backup completed!"
  • Creates the directory /home/user/backup.
  • Copies the entire my_project folder.
  • Prints “Backup completed!” once done.

If any step fails, the subsequent commands are not executed.

Automating Copy Tasks with Shell Scripting

If you frequently copy the same data, shell scripts can save time. You can even schedule them with cron.

Simple Shell Script Example

#!/bin/bash

SOURCE="/home/user/my_project"
DESTINATION="/home/user/backup/my_project"

mkdir -p $DESTINATION
cp -rav $SOURCE $DESTINATION
echo "Backup of $SOURCE completed to $DESTINATION on $(date)"
A bash script automating the backup of the my_project directory to a specified backup location using cp and mkdir commands
  • Save as backup_script.sh.
  • Make it executable with chmod +x backup_script.sh.
  • Run it manually or schedule it via cron to automate backups.

Dealing with Symlinks and Hard Links

Linux supports symbolic links (symlinks) and hard links, which can affect copying.

Copying Symlinks

  • Default Behavior: cp copies the target file of the symlink, not the symlink itself.
  • Preserve Symlinks: Using -a or –no-dereference keeps the symlinks intact.
cp -a /path/with/symlinks/ /destination/
Copying files and directories with symlinks and attributes using cp a command

Copying Hard Links

Hard links have the same Inode number, and accessing an inode through a hard link means accessing the file. Otherwise, as a standard copy does, it operates on them as different files. Some options can consider the same hard link structures for most purposes, while it is easier to address the problem of preserving symlinks.

Troubleshooting and Common Error Messages

Even experienced users encounter issues. Some frequent errors include:

  • Permission Denied: Requires sudo or updated permissions (chmod, chown).
  • No Such File or Directory: Usually, there is a typo or incorrect path.
  • Argument List Too Long: Occurs with massive wildcards; consider using xargs or archiving.
  • Disk Full: Free up space or choose another partition.
  • Operation Not Permitted: Often related to copying special system files or lacking proper privileges.

Conclusion and Best Practices

Copying a folder in Linux is essential for basic system maintenance, backups, and even development. Linux has essential applications, from the basic cp command to some of the most complex applications, like rsync.

Key Takeaways

  • Use the Right Tool for the Job
    • cp for quick local copies
    • rsync for synchronization and incremental updates
    • scp for secure transfers over SSH
    • tar or zip for large directory archiving
  • Preserve Permissions When Necessary
    • Use the -a flag to retain ownership, timestamps, and permissions.
  • Avoid Data Loss with Proper Options
    • Use -i (interactive) to confirm overwrites or do a dry run with rsync –dry-run.
  • Consider Hidden Files
    • Remember that files like .env or .gitignore are often crucial for projects.
  • Automate and Schedule
    • Shell scripts and cron jobs can handle repetitive tasks reliably.
  • Validate and Verify
    • Always check the final copy, especially if you plan to remove or modify the original data.

Moving Forward

Key “double-u” s As soon as you get comfortable with basic and advanced copy operations, learn about extra features like volume snapshots, CRI-container-based back or BorgBackup, Restic, and so on. In this way, all Linux systems will be homogeneous in terms of permissions and ownership, while your data will always be impenetrable by intruders. Copying directories is not merely an ability but a key to successful data handling, file and version control, and problem-free systems updates.

This elaborated perspective gives you confidence when facing file copying tasks. Whether you need to buy some glasses and sort your files as a new user or you are a system administrator who decides the system’s backup strategy, the information delivered within this book will make life easier and more efficient in the world of Linux.

About the writer

Vinayak Baranwal Article Author

Vinayak Baranwal wrote this article. Use the provided link to connect with Vinayak on LinkedIn for more insightful content or collaboration opportunities.

Leave a Reply

Your email address will not be published. Required fields are marked *

Lifetime Solutions:

VPS SSD

Lifetime Hosting

Lifetime Dedicated Servers