How to Use Rsync and SCP to Transfer Files on a VPS

How to Use Rsync and SCP to Transfer Files on a VPS (head image)

Why is file transfer so crucial on a VPS? Picture this: you have developed a feature-rich website on your local machine, and now it is time to make it live. Without effective file transfer mechanisms, this transition becomes an intricate dance, fraught with potential errors and delays. From updating content to implementing code changes, the need to synchronize data between your local environment and the VPS is evident. This article dives into the why and how of file transfer on a VPS, exploring the challenges and introducing solutions that can streamline your workflow. 

Beyond website management, file transfer plays a pivotal role in routine tasks like system backups, ensuring data integrity, and collaborating with a team across geographical boundaries. As we unravel the layers of file transfer on a VPS, you will discover how overcoming these challenges is not just a matter of convenience but a strategic imperative. 

Understanding Rsync & SCP

Let us delve into the intricacies of Rsync and SCP and unravel what makes them indispensable for efficient and secure file transfers. 

What are Rsync and SCP?

Rsync is a versatile file synchronization tool designed to efficiently copy and sync files between different systems. Born out of the need for intelligent and bandwidth-efficient transfers, Rsync has become a go-to solution for users seeking to keep their files in perfect harmony. What sets Rsync apart is its ability to transfer only the parts of files that have changed, minimizing data sent over the network and significantly speeding up the process. 

SCP, on the other hand, stands for “Secure Copy Protocol.” It operates over SSH, providing a secure method for copying files between a local machine and a remote server. SCP’s simplicity lies in its straightforward command-line interface, making it accessible to users of all levels of expertise. As a secure alternative, SCP ensures that your data remains confidential during transit, addressing the paramount concern of data security. 

Key Features and Benefits of Rsync & SCP


  • Efficient Delta-Transfer: Rsync’s intelligent algorithm transfers only the differences between source and destination files, minimizing data transfer and optimizing bandwidth usage. 
  • Support for Copying Links, Devices, Owners, and Permissions: Rsync is adept at preserving various file attributes during the transfer process, ensuring that the integrity of the data is maintained. 
  • Recursive Directory Synchronization: Rsync excels at synchronizing entire directory structures, making it ideal for tasks such as backups and mirroring. 


  • Secure Transmission: SCP operates over SSH, providing a secure channel for file transfer, encrypting data to prevent unauthorized access. 
  • Straightforward Command-line Interface: SCP’s simplicity is one of its greatest strengths. With minimal commands, users can securely copy files between local and remote systems effortlessly. 
  • Preservation of File Attributes: Like Rsync, SCP ensures that file attributes such as ownership and permissions are maintained during the transfer. 

Rsync vs. SCP: When to Use Each

Choosing between Rsync and SCP depends on the nature of your file transfer requirements. 

Use Rsync When: 

  • Efficient synchronization of large datasets is crucial. 
  • Bandwidth conservation is a priority. 
  • You need to mirror directory structures, preserving attributes and permissions. 

Use SCP When: 

  • Secure transmission is important. 
  • You prefer a straightforward command-line interface. 
  • Simplicity is key for small to medium-sized file transfers. 

Installing Rsync and SCP

Before we can start with efficient file transfers using Rsync and SCP, it is important to ensure that these tools are installed on your system. In this chapter, we will guide you through the process of checking for their presence and installing them on Debian-based distributions. 

Checking for Rsync and SCP Installation

To determine if Rsync and SCP are already installed on your system, open a terminal, and enter the following commands: 

Check for Rsync:

rsync --version 

Check for SCP:

scp --version 

If both commands return version information, you are good to go. If not, do not worry—follow the steps below to install them. 

Installing Rsync and SCP on Debian-based Distributions 

For Debian-based distributions like Ubuntu, the package manager apt is your gateway to installing Rsync and SCP effortlessly. Open a terminal and execute the following commands: 

Update the package repository information:

sudo apt update 

Install Rsync:

sudo apt install rsync 

Install SCP (part of OpenSSH client):

sudo apt install openssh-client 

These commands ensure that you have the latest package information and then proceed to install Rsync and SCP.  

Once the installation is complete, you can verify that Rsync and SCP are now available by running the earlier checks: 

Check for Rsync:

rsync --version 

Check for SCP:

scp --version 

With Rsync and SCP installed and at your disposal, you are ready to start. In the upcoming chapters, we will explore how to leverage these tools to synchronize, copy, and secure your data effortlessly. Stay tuned for hands-on demonstrations and real-world scenarios that will empower you to master the art of file transfer on a VPS. 

Basic Usage of Rsync and SCP

Now that Rsync and SCP are securely nestled in your system, it is time to explore their basic usage for file transfers on a VPS. This chapter will walk you through fundamental scenarios, from transferring files to and from a local machine to copying files between remote servers. 

Transferring Files to and from a Local Machine using Rsync and SCP 

Using SCP for Simple File Copy

SCP excels in simplicity, making it an ideal choice for straightforward file copy operations. To copy a file from your local machine to a remote server or vice versa, employ the following command structure: 

Copying from local to remote: 

scp /path/to/local/file username@remote_server:/path/on/remote/server 

Copying from remote to local:

scp username@remote_server:/path/on/remote/server /path/to/local/directory 

Simply replace placeholders like /path/to/local/file, username, remote_server, etc., with your specific details. SCP will prompt you for the password associated with the specified username. 

Syncing Files with Rsync

Rsync’s power lies in synchronization, allowing you to mirror entire directories with ease. To synchronize files between your local machine and a remote server, use the following command: 

Syncing from local to remote:

rsync -avz /path/to/local/directory username@remote_server:/path/on/remote/server 

For synchronizing from remote to local, swap the source and destination paths in the command. The flags -avz enable archive mode (preserving permissions and other attributes), verbose output, and compression for efficient data transfer. 

How to Copy Files Between Remote Servers with Rsync or SCP

SCP Between Remote Servers

Copying files between remote servers with SCP is as straightforward as local file transfers. Use the following structure: 

scp username@source_server:/path/on/source/server username@destination_server:/path/on/destination/server 

Replace placeholders with the appropriate details. SCP will prompt for passwords for both source and destination servers. 

Rsync Between Remote Servers

Rsync extends its prowess seamlessly to remote-to-remote transfers. The following command structure syncs files between two remote servers: 

rsync -avz username@source_server:/path/on/source/server username@destination_server:/path/on/destination/server 

As in local transfers, the flags -avz ensure efficient and secure synchronization. 

Armed with these basic commands, you can now confidently initiate file transfers on your VPS using Rsync and SCP.  

Advanced Rsync and SCP Usage

Having mastered the basics of Rsync and SCP, let us elevate our file transfer game with advanced techniques. In this chapter, we will explore specific strategies to tailor your transfers, enhance security, and troubleshoot interruptions. 

Specifying Source and Destination for Rsync and SCP 

In both Rsync and SCP, mastering the art of specifying source and destination is key to precise file transfers. When dealing with directories, include a trailing slash for source and omit it for the destination. This ensures that the content of the source directory is copied, not the directory itself. 

Rsync Example:

Copying the contents of source to destination:

rsync -avz /path/to/source/ /path/to/destination

SCP Example:

Copying the contents of source to destination:

scp -r /path/to/source/* username@remote_server:/path/on/remote/server

Excluding Files and Directories when using Rsync or SCP 

Tailoring your transfers often involves excluding certain files or directories. Both Rsync and SCP provide mechanisms to exclude unwanted elements. 

Rsync Example:

Excluding specific files or directories:

rsync -avz --exclude 'file.txt' /path/to/source/ username@remote_server:/path/on/remote/server 

SCP Example:

Excluding specific files or directories:

scp -r /path/to/source/* --exclude 'file.txt' username@remote_server:/path/on/remote/server 

Using SSH Keys for Secure Transfers with Rsync and SCP 

Enhance the security of your file transfers by leveraging SSH keys. This eliminates the need for password input and establishes a secure, automated connection between systems. 

Learn more about SSH Keys in our article called “How to Use SSH Keys with Your Server”. 

Rsync Example:

Using SSH key for authentication:

rsync -avz -e 'ssh -i /path/to/private_key' /path/to/source/ username@remote_server:/path/on/remote/server 

SCP Example:

Using SSH key for authentication:

scp -i /path/to/private_key -r /path/to/source/* username@remote_server:/path/on/remote/server 

Preserving File Metadata with Rsync and SCP

Maintain the integrity of your data by preserving file metadata during transfers. Both Rsync and SCP offer options to ensure that attributes like ownership, permissions, and timestamps are retained. 

Rsync Example:

Preserving file metadata during transfer:

rsync -avz /path/to/source/ username@remote_server:/path/on/remote/server 

SCP Example:

Preserving file metadata during transfer:

scp -rp /path/to/source/* username@remote_server:/path/on/remote/server 

How to Resume Interrupted Transfers in Rsync or SCP

Should your file transfer get interrupted, fear not. Both Rsync and SCP provide options to resume transfers from where they left off. 

Rsync Example:

Resuming an interrupted Rsync transfer:

rsync -avz --partial /path/to/source/ username@remote_server:/path/on/remote/server 

SCP Example:

Resuming an interrupted SCP transfer:

scp -r /path/to/source/* username@remote_server:/path/on/remote/server 

Armed with these advanced techniques, you are equipped to navigate the intricacies of file transfers on your VPS with finesse. 

Practical Applications

As we round off our exploration of Rsync and SCP, let us delve into practical applications that showcase the versatility and power of these tools. From safeguarding your VPS data to efficiently transferring large datasets, these applications will empower you to harness Rsync and SCP for various real-world scenarios. 

Backing Up VPS Data with Rsync & SCP

One of the most critical tasks in VPS management is data backup. Rsync and SCP offer robust solutions for creating reliable backups that ensure the safety and recoverability of your valuable data. 

Rsync Backup Example:

Creating a backup of a directory using Rsync:

rsync -avz /path/to/source/ /path/to/backup 

SCP Backup Example:

Creating a backup of a directory using SCP:

scp -r /path/to/source/* username@backup_server:/path/on/backup/server 

By incorporating these commands into scheduled tasks or scripts, you can automate the backup process, providing peace of mind knowing that your data is secure. 

Learn more about various Backup Strategies in our article “Avoiding Data Loss: Backup Strategies” 

Transferring Large Datasets Efficiently

Efficiently transferring large datasets is a common challenge, especially in scenarios where bandwidth is limited. Rsync’s delta-transfer algorithm and SCP’s compression capabilities come to the forefront in such situations. 

Rsync Example for Large Datasets:

Transferring a large dataset with Rsync:

rsync -avz --progress /path/to/large/dataset/ username@remote_server:/path/on/remote/server 

SCP Example for Large Datasets:

Transferring a large dataset with SCP:

scp -r -C /path/to/large/dataset/* username@remote_server:/path/on/remote/server 

In these examples, Rsync’s ability to only transfer the changes in files and SCP’s compression flag (-C) contribute to an efficient transfer process, reducing both time and bandwidth consumption. 

By tailoring these commands to your specific needs, you can adapt Rsync and SCP to various scenarios, whether it is migrating data between servers, collaborating on projects, or maintaining synchronized backups. 

As you venture into applying Rsync and SCP in your VPS environment, remember to continually explore additional options and flags provided by these tools. The richness of their feature sets allows for customization and optimization based on the nuances of your use case. 

Security Considerations

Security is paramount when it comes to file transfers, especially in the context of VPS management. In this chapter, we will explore key considerations for securing Rsync and SCP, ensuring that your data remains confidential, and the transfer process is safeguarded against potential threats. 

Firewall Configuration

A well-configured firewall adds an extra layer of defense to your VPS. Ensure that your firewall settings allow necessary traffic for Rsync and SCP. By default, both Rsync (using SSH) and SCP commonly use port 22. Adjust your firewall rules accordingly to permit inbound and outbound traffic on this port. 

Example (iptables on Linux):

Allowing incoming SSH (port 22) traffic:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT 

Allowing outgoing SSH (port 22) traffic:

sudo iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT 

Always adhere to the principle of least privilege, allowing only the necessary ports and services to minimize potential attack vectors. 

Best Practices for Secure File Transfer

As a part of best practices, consider the following tips for secure file transfers: 

  • Regularly Update Software: Keep Rsync, SCP, and related software up to date to benefit from security patches and improvements. 
  • Implement User Authentication: Limit access to authorized users by enforcing strong authentication mechanisms. Avoid using default or easily guessable usernames and passwords. 
  • Monitor Logs: Regularly check system logs for any unusual or unauthorized activity. Monitoring can help identify potential security threats early on. 
  • Encryption for Sensitive Data: If you are dealing with extremely sensitive data, consider additional encryption measures such as using GPG (GNU Privacy Guard) in conjunction with Rsync or SCP. 
  • Regular Security Audits: Periodically conduct security audits to assess the integrity of your file transfer processes. This includes reviewing user access, permissions, and configurations. 

By incorporating these security considerations into your file transfer practices, you create a robust and resilient environment for managing data on your VPS. 

As you continue to refine your skills in using Rsync and SCP, maintaining a security-first mindset will contribute to a secure and well-protected VPS environment. Stay vigilant, stay secure! 


In the realm of VPS management, mastering file transfers is a cornerstone skill. Throughout this guide, we have explored the dynamic duo of Rsync and SCP, unraveling their capabilities, applications, and best practices. Let us recap our journey and provide a handy table comparison to aid in choosing the right tool for your specific needs. 

Recap of Rsync and SCP File Transfer

Rsync and SCP, both harnessed under the umbrella of SSH, stand as stalwarts in the domain of file transfers. Rsync’s intelligent delta-transfer algorithm enables efficient synchronization, while SCP’s simplicity and secure copy protocol provide a straightforward solution for secure file transfers. Whether you are backing up data, collaborating on projects, or migrating files between servers, these tools offer versatility and reliability. 

From the basics of installation to advanced techniques such as excluding files and utilizing SSH keys, we have covered a spectrum of scenarios to empower you in mastering the art of file transfers on your VPS. 

Comparison between Rsync and SCP

Here is a comparative summary based on the information provided in this guide: 

Feature Rsync SCP 
Efficiency Efficient delta-transfer algorithm Simple, straightforward file copy 
Use Cases Synchronization, large datasets, backups Secure file copying, simple transfers 
Command Structure rsync -avz source destination scp source destination 
Excluding Files –exclude ‘file.txt’ –exclude ‘file.txt’ 
SSH Key Authentication -e ‘ssh -i /path/to/private_key’ -i /path/to/private_key 
Preserving Metadata -avz -rp 
Resuming Transfers –partial N/A (SCP resumes automatically) 
Efficient for Large Datasets Yes Yes (with -C compression flag) 
Scroll to Top