Linux Tactic

Mastering Rsync: Efficient File Synchronization Between Systems

Introduction to Rsync

When it comes to syncing files or directories, Rsync is a tool that has gained significant popularity among system administrators and developers. Rsync, also known as Remote Sync, is an open-source software tool that provides efficient and reliable file synchronization and transfer between two different systems.

In this article, we’ll discuss what Rsync is, its features, and how to use it effectively to sync your files and directories. What is Rsync?

Rsync is a command-line tool that helps in transferring and synchronizing files and directories between systems. The primary goal of Rsync is to provide an efficient, reliable, and fast transfer of files.

What makes Rsync unique is its ability to copy only the parts of files that have changed since the last synchronization. This means that Rsync performs efficient file syncing, ensuring that only the changes are transmitted between systems, resulting in a fast transfer of data.

Features of Rsync

Directory Copying: Rsync can copy the entire directory structure from one system to another, including files within subdirectories. Backup Configuration: Rsync is a great tool for maintaining backups of critical files and directories.

With its efficient file transfer algorithm, Rsync can transfer only the changed parts of files, saving bandwidth and time. SSH: Rsync supports Secure Shell (SSH) protocol, allowing for secure data transfers between systems.

Daemon/Server: Rsync can operate in daemon or server mode, allowing for continuous syncing between systems. File Permission Retention: Rsync can maintain the file permissions of the source system when transferring files to the destination system.

Using Rsync

Creating Dummy Files

Before we can use Rsync, we’ll need to create some dummy files to work with. We can create a dummy directory with the touch command.

Open a terminal and run the following command to create a directory called “dummy_dir”:

$mkdir dummy_dir

We’ll then create some dummy files using the touch command. Run the following command to create three empty files inside the dummy directory:

$cd dummy_dir

$touch file1.txt file2.txt file3.txt

Rsync Command Structure

The general structure of an Rsync command is as follows:

$rsync [Options] source [destination]

The source is the file or directory that we want to sync, and destination is the directory on the target system where we want to copy the source. The options parameter is a list of options that define how Rsync should operate.

Syncing Local Directories

To sync files between two local directories, we’ll run the following command:

$rsync -vr /path/to/source/dir /path/to/destination/dir

The -v option is used to enable verbose mode, which displays the progress of the sync operation, while the -r option enables recursion and copying of subdirectories.

Rsync Test Run

Before syncing files, it’s essential to run a dry run to verify that the files are copying correctly. The –dry-run option is used to achieve this.

Run the following command:

$rsync -vr –dry-run source destination

Rsync Over a Remote Connection

We can also use Rsync to sync files between a local and a remote system. To do so, we’ll use the “-e” option to specify a protocol to use with Rsync.

Archive Syncing: The “–archive” option is used to sync entire directories while preserving the file permissions, timestamps, and symbolic links. Push: To push files to a remote server, we’ll run the following command:

$rsync -avzP source user@remote:/path/to/destination

Pull: To pull files from a remote server, we’ll run the following command:

$rsync -avzP user@remote:/path/to/destination /path/to/source

SSH: Rsync uses SSH by default to secure connections between different systems.

We can specify different SSH options using the “-e” flag. For example:

$rsync -e “ssh -i /path/to/my/ssh_key” source user@remote:/path/to/destination

Using Rsync Effectively

Rsync is a powerful tool, but using it effectively takes some practice. Some best practices when using Rsync include:

– Using the ‘–dry-run’ option to verify the files’ integrity before syncing.

– Always include the ‘-a’ option to preserve file permissions, ownership, and timestamp information during synchronization. – Use the ‘-z’ option to enable compression during file transfers to reduce network bandwidth usage.

– Consider using Rsync over SSH to ensure secure connections between systems.


Rsync is an efficient and reliable tool for syncing files and directories. It’s essential to know Rsync’s best practices to use it effectively and ensure that your files are securely and safely transferred between systems.

With Rsync, you can maintain backups, sync files over a remote connection, and preserve file permissions, making it an excellent tool for developers and system administrators alike.

Useful Rsync Options

Rsync is a powerful tool that enables efficient and reliable file synchronization between systems. While Rsync’s basic functionality is excellent, it can be further enhanced by using some of its advanced options.

In this section, we’ll explore six useful Rsync options and how they can help you sync your files more efficiently.


The “-z” option enables compression of files during transfer between systems.

Compression is an excellent option to use when bandwidth usage is a concern.

However, enabling compression may cause increased processing power consumption on the source and destination machines. Depending on the nature of the files being transferred, compression may or may not provide noticeable performance improvements.

To enable compression, we add the “-z” option to the Rsync command:

$rsync -avz source destination

Progress Bar and Resuming Interrupted Transfers

The “–partial” and “-P” options enable resuming an interrupted transfer. The “–partial” option is used to keep partially transferred files in the destination and continue transfer on the next run.

The “-P” option is a combination of “–partial” and “–progress” options, enabling a progress bar to show the file transfer progress. To use the progress bar and enable resuming of partial transfers, the following command can be used:

$rsync -avzP source destination

Intelligent File Syncing

The “–delete” option deletes files on the destination that do not exist on the source, making it a smart option for backups and system synchronizations. This option can be particularly useful when performing backups because it ensures that the backup is always a complete copy of the source system.

To use intelligent file syncing, we add the “–delete” flag:

$rsync -avz –delete source destination

Including or Excluding Certain Files

The “–include” and “–exclude” options allow us to include or exclude files or directories based on their names or patterns. This option is handy when we want to exclude system directories, temporary files, or other unwanted files.

To do this, we use the “–exclude” option. For example, if we want to exclude all “.tmp” files from being synced, we would use the following command:

$rsync -avz –exclude=”*.tmp” source destination

Defining the Largest File Size

The “–max-size” option enables us to specify the largest file size to be transferred. This option is useful when working with large files to reduce bandwidth usage or when the destination system has limited storage space.

To define the largest file size, we add the “–max-size” flag:

$rsync -avz –max-size=’100M’ source destination

Source File Removal

The “–remove-source-files” option removes the files from the source directory after a successful transfer. This option is useful when using Rsync for backups, and we want to ensure that the source directory remains empty after every backup operation.

To use source file removal, we add the “–remove-source-files” flag:

$rsync -avz –remove-source-files source destination

Other Uses of Rsync

Apart from file syncing, Rsync can also be used as a file copier to move files or directories between systems. Rsync can also be integrated with scripting languages like Bash to create custom backup and file transfer scripts.

Because of Rsync’s efficiency and intelligence, it can be used in various settings beyond file syncing or backups.


Rsync is a versatile tool that can help in various system administration and development tasks. Using the right Rsync options can significantly enhance its efficiency and reliability.

In this section, we have explored six useful Rsync options that can help when transferring files, including compression, progress bars, intelligent file syncing, file inclusion and exclusion, defining the largest file size, and source file removal. These options can be combined and customized to suit specific needs, making Rsync a valuable tool for developers and system administrators alike.

In conclusion, Rsync is a powerful tool for efficient and reliable file synchronization between systems. Through this article, we have discussed Rsync’s basic functionality and six useful Rsync options that can enhance its efficiency further.

These options include compression, progress bars, intelligent file syncing, file inclusion and exclusion, defining the largest file size, and source file removal. Combining these Rsync options can provide an unparalleled file syncing experience for system administrators and developers.

Rsync is an incredibly versatile tool that can be used for not only file syncing but also backups and file transfers. By utilizing Rsync efficiently, users can save time and bandwidth while ensuring the integrity of their files and directories.

Popular Posts