How to Use “rsync” Utility in Linux to manage Files over Network
By Adarsh Sojitra on February 27th, 2023
rsync is a powerful command-line tool used to efficiently copy and synchronize files between two locations, either on the same system or over a network. With its ability to transfer only the differences between files, rather than copying the entire file every time,
rsync is an efficient way to transfer large amounts of data quickly and reliably.
In this tutorial, we will provide a detailed guide to using
rsync, covering its basic syntax, available options, and common use cases. Whether you are looking to backup important files, mirror a directory, or synchronize files between multiple devices,
rsync can help you accomplish your goals efficiently and effectively.
We will start with a brief overview of
rsync and its capabilities, followed by a step-by-step guide to using
rsync for a variety of common use cases. Along the way, we will cover some of the most commonly used
rsync options, as well as tips and tricks for getting the most out of this powerful tool.
By the end of this tutorial, you should have a solid understanding of how to use
rsync to efficiently transfer and synchronize files between two locations, and be able to apply these skills to a wide range of practical scenarios.
As you now have the basic understanding of rsync, Let’s understand the use cases of rsync command so that you can determine if you can use it for a particular use case.
Use cases of Rsync Command in Linux
rsync is a powerful command-line tool with a variety of use cases. Some examples of how
rsync can be used include:
- Backing up files:
rsynccan be used to backup important files and directories to a remote server or external hard drive. By using
rsyncto synchronize files between the source and destination, only the changes are transferred, making backups quicker and more efficient.
- Mirroring files:
rsynccan be used to mirror the contents of one directory to another directory, either locally or over a network. This is useful for keeping a secondary copy of important files or for creating a backup of a website or other online content.
- Uploading files to a remote server:
rsynccan be used to upload files to a remote server over a network. This can be useful for deploying a website or application to a remote server, or for transferring files between two servers.
- Synchronizing files between multiple devices:
rsynccan be used to synchronize files between multiple devices, such as laptops or desktops. This is particularly useful for ensuring that files are up-to-date across multiple devices, or for sharing files between multiple users.
- Copying large files:
rsyncis particularly useful for copying large files or directories, as it only transfers the differences between files, rather than copying the entire file every time. This makes it a more efficient way to copy large files than other methods, such as FTP or SCP.
- Automating file transfers:
rsynccan be automated using scripts or cron jobs to schedule regular file transfers between systems. This can be useful for regularly backing up data, or for keeping multiple systems synchronized.
rsync is a versatile and powerful tool that can be used in a variety of use cases, from simple file transfers to complex backup and synchronization scenarios. Now, Let’s understand the syntax of the rsync command so that you can use it practically for the use cases given above.
Syntax of the Rsync command
rsync command has a flexible syntax that allows you to specify the source and destination locations for file transfers, as well as a wide range of options that control how the transfer is performed. In this section, we’ll break down the syntax of the
rsync command and explain each component in detail.
The basic syntax of the
rsync command is as follows:
$ rsync [options] source destination
Let’s break down each component of this command:
rsync: This is the command itself, which invokes the
[options]: This is an optional list of command-line options that modify the behavior of
rsync. We’ll cover some of the most commonly used options in more detail later in this tutorial.
source: This is the path to the source files or directory that you want to copy or synchronize. The source can be a local file or directory, or a remote file or directory accessed via SSH or another protocol.
destination: This is the path to the destination where you want to copy or synchronize the files. The destination can be a local file or directory, or a remote file or directory accessed via SSH or another protocol.
The source and destination paths can be specified in a variety of ways, including absolute or relative paths, wildcards, or SSH-style paths using the syntax
user@host:/path/to/files. As you can see you can use multiple options available in rsync to manage or control the file transfers. Let’s see some examples.
In this section, we are going to see some examples of rsync command. We will use different options for different purposes. Let’s get started with the simplest rsync example ever.
1. Copy Files on the Same System
Let’s say we want to copy files from one directory to another in the same system using rsync. To do so, execute the following command.
$ rsync -av /path/to/source/ /path/to/destination/
-a option specifies archive mode, which preserves permissions, ownership, and other file attributes, while the
-v option enables verbose output so you can see the progress of the transfer. Now, Let’s see some complex use cases of rsync.
2. Synchronize files between Directories
To sync files in two directories without any conflicts, execute the following command.
$ rsync -av --delete /path/to/source/ /path/to/destination/
Note that we are also using the
--delete option in this command to delete any file that is not present in the source directory. Overall, This command will synchronize the contents of the
source directory with the
destination directory, copying any new or updated files from the source to the destination, and deleting any files in the destination that are not in the source.
3. Backup Files to a Remote Server
If you want to back up your files on a remote server, rsync is easily do the job. Execute the following command to copy the files in a specific directory to a remote server.
$ rsync -avz /path/to/source/ user@remote:/path/to/backup/
Here, the “z” option in this command is used to compress the files while they are being transferred. By default, rsync will not compress the files. You can use the “z” option to enable the compression.
4. Sync directories while excluding specific files
To exclude specific files from copying, You can use the
--exclude function of the rsync command. Here is the example.
$ rsync -av --exclude '*.log' /path/to/source/ user@remote:/path/to/destination/
When you execute this command, it will copy all the files from source to destination except all the log files.
5. Rsync with Progress Bar
You can also add the progress bar to your rsync execution. To do so, You just have to add
--progress option while executing the command.
$ rsync -av --progress /path/to/source/ /path/to/destination/
This command will copy the files from the
source directory to the
destination directory, showing the progress of the transfer in real-time.
These are just a few examples of the many different use cases for the
rsync command. By mastering the syntax and options of
rsync, you can use this powerful tool to efficiently manage and transfer files in a wide range of scenarios.
Now, Let’s see some of the most important options available in rsync command to control the execution.
Most important Rsync Options
Rsync provides a lots of options with the utility itself. Here are some of the most commonly used options:
--archive: This option is used to archive files and directories, preserving all of their permissions, ownership, timestamps, and other attributes. This is often used when making backups or migrating data between systems.
--verbose: This option enables verbose output, showing detailed information about the progress of the transfer, including the names and sizes of files being transferred.
--dry-run: This option simulates an
rsynctransfer, showing what would happen if the command were run without actually making any changes to the source or destination.
--recursive: This option enables recursion, allowing
rsyncto copy directories and their contents recursively.
--update: This option skips files that already exist in the destination and are newer than their counterparts in the source. This can be useful when syncing large directories where only a few files have changed.
--delete: This option deletes files from the destination that are not present in the source. This is useful for keeping two directories in sync, and can be combined with other options like
--human-readable: This option enables human-readable output, showing file sizes in a more easily understandable format (e.g. “10 MB” instead of “10485760”).
--partial --progress: This option enables partial transfers and progress reporting, allowing
rsyncto resume partially completed transfers and show progress information during the transfer.
--itemize-changes: This option shows a detailed list of the changes that
rsyncwould make during a transfer, including new, deleted, and modified files.
These are just a few of the many options available in
rsync. By understanding and using these options effectively, you can customize
rsync to meet your specific needs and efficiently transfer data in a wide range of scenarios. If you want to learn more options, You can use
man command in your Linux machine.
rsync is a powerful and versatile command-line tool for efficiently transferring data between systems. With its wide range of options and capabilities,
rsync can be used for a variety of use cases, from backing up important files to synchronizing large directories and even deploying software to remote servers.
By understanding the syntax and options of the
rsync command, users can take advantage of its many features to optimize data transfers for their specific needs. Whether you are a system administrator managing a large network or a home user looking to keep your files in sync between devices,
rsync provides a flexible and reliable solution for efficient data transfer.
rsync command can be complex and intimidating at first, with practice and experimentation, users can become proficient in its use and take advantage of its full capabilities. We hope this tutorial has been helpful in introducing you to
rsync and providing guidance on how to use it effectively.