How to Use rsync to Back up Data

November 20, 2024

Introduction

rsync is a versatile command-line utility that synchronizes and backs up files and directories in Linux systems. It allows for efficient data transfers by copying only the differences between the source and destination.

With options for local and remote backups, it supports secure transfers via SSH.

This tutorial will explain how to use rsync to back up data.

How to use rsync to back up data

Prerequisites

What Is rsync?

rsync synchronizes files and directories across systems, commonly used in Linux. It enables file transfers by copying only the differences between the source and destination, minimizing data transfer time and bandwidth usage.

The tool supports both local file synchronization and remote transfers over secure protocols like SSH. rsync is configurable, allowing users to preserve file permissions, timestamps, and symbolic links during the process. It is used to create backups, mirror directories, and perform incremental updates to large datasets.

How Does rsync Work?

rsync works by comparing the source and destination files to identify differences in content, size, or timestamps. It uses a specific algorithm to ensure only the changed file portions are transferred rather than the entire file.

The process begins with establishing a connection between the source and destination on the same machine or over a network. Once differences are identified, rsync updates the destination to match the source while preserving metadata such as permissions and ownership if configured.

Basic rsync Syntax for Local and External Transfers

The syntax for using the rsync tool is different for local and remote transfers.

For local backups, the syntax follows this basic pattern:

rsync OPTIONS SOURCE DESTINATION

To transfer files to an external location, use the following syntax:

rsync OPTIONS SOURCE user@IP_or_hostname:DESTINATION

In both cases, the source and destination are a directory or a file path.

Backing up Data with rsync

rsync simplifies the process of backing up and synchronizing files. It supports local backups and remote transfers, making it versatile for different storage needs.

By using options like archive mode and secure protocols like SSH rsync ensures data integrity while being efficient by transferring only changed portions of files.

The following text explains the precautions you need to take when using rsync. It also elaborates on how to use the command to back up directories both locally and on remote machines.

Rsync Dry Run - Precautions

The rsync utility allows you to manipulate your data in different ways. If you use the wrong option or destination, you may mix your data or overwrite or delete files.

Therefore, use the --dry-run option to confirm the tool does what you want to do and prevent accidental data loss.

While not necessary for simple transfers, use --dry-run when a larger dataset is in question.

Use the basic syntax format and add --dry-run:

rsync OPTIONS --dry-run SOURCE DESTINATION

Use rsync to Back up Data Locally

Backing up data locally with rsync allows you to copy files and directories from one location to another on the same machine. This is useful for creating backups on separate partitions, external drives, or other storage media.

To test how this works, take the following steps:

1. Use mkdir to create a directory to back up:

mkdir -p /home/sara/Documents/Dir1

This creates a directory named Dir1 inside the Documents directory, which acts as the source directory for the backup. The -p option ensures the parent directories are created if they don't already exist.

2. Use the echo command to add two sample text files to Dir1 to simulate the data you want to back up:

echo "File 1 content" > /home/sara/Documents/Dir1/file1.txt
echo "File 2 content" > /home/sara/Documents/Dir1/file2.txt

3. Create an empty directory at the backup location where Dir1 will be copied. For this example, the destination is /media/hdd2/rsync_backup:

sudo mkdir -p /media/hdd2/rsync_backup

4. Run the following command to copy Dir1 to the backup directory:

sudo rsync -av /home/sara/Documents/Dir1 /media/hdd2/rsync_backup
sudo rsync -av /home/sara/Documents/Dir1 /media/hdd2/rsync_backup terminal output

Use the -v (verbose) option to display detailed output. Also, add -a (archive mode) to ensure files are backed up recursively while preserving their permissions, timestamps, and symbolic links.

5. Confirm that all files in Dir1 are successfully backed up to /media/hdd2/rsync_backup with the ls command:

ls /media/hdd2/rsync_backup/Dir1
ls /media/hdd2/rsync_backup/Dir1 terminal output

Note: To create a new directory at the destination and back up your files there, add a trailing slash (/) at the end of the destination path. If you add the trailing slash to the source, then the source directory will not be created at the destination. rsync only transfers its content in that case.

Use rsync to Back up Data over Network

To back up data over the network with rsync, use SSH for secure file transfers. The remote machine must have an SSH server running, and you need SSH access to that machine to perform the backup.

To ensure the remote machine is set up to allow SSH connections, you need the username and IP address of the remote machine.

Test the connection by SSH-ing into the remote machine:

ssh sara@192.168.0.31
ssh terminal output

Once you connect to the remote machine over SSH, start backing up your data to a location on that machine by taking the following steps:

1. Ensure the destination directory (/home/sara/backup) exists on the remote machine. If it doesn't, access the remote machine and create it with:

sudo mkdir -p /home/sara/backup

The mkdir -p command creates the directory structure, including any necessary parent directories, if they don't already exist.

Note: You can also create this directory by SSH-ing from your local machine and running mkdir.

2. Ensure the directory you want to back up (/home/sara/Documents/Dir1) already exists and contains the files you want to back up.

3. Use rsync to back up the data from the local machine to the remote machine:

sudo rsync -av /home/sara/Documents/Dir1 sara@192.168.0.31:/home/sara/backup
sudo rsync -av /home/sara/Documents/Dir1 sara@192.168.0.31:/home/sara/backup terminal output

The output lists the directories and files rsync transferred to another machine.

4. Check if the files are on the remote server by accessing it and running:

ls /home/sara/backup/Dir1
ls /home/sara/backup/Dir1 remote machine terminal output

The example we used here assumes that SSH uses the default port. If you need to specify a different port for the SSH connection, use the -e flag and enter SSH options.

To specify port 4455, for example, run the above command in this format:

sudo rsync -av -e 'ssh -p 4455' /home/sara/Documents/Dir1 sara@192.168.0.31:/home/sara/backup

When needed, you can delete the source files after you transfer them to another location.

Compress Data when Backing up with rsync

To save space, compress your data before transferring it to another location. You can use the rsync built-in option to compress data or a different tool before running rsync.

To compress data during transfer, use the -z switch with the rsync command.

sudo rsync -avz /home/sara/Documents/Dir1 sara@192.168.0.31:/home/sara/backup
sudo rsync -avz /home/sara/Documents/Dir1 sara@192.168.0.31:/home/sara/backup terminal output

Another option is to use the zip command to zip your files or directory and then run rsync. For example, zip Dir1 into Dir.zip:

zip -r /home/sara/Documents/Dir1.zip /home/sara/Documents/Dir1
zipn -r terminal output

The process creates the ZIP file with the contents of Dir1. Next, transfer that file to another location:

sudo rsync -avz /home/sara/Documents/Dir1.zip sara@192.168.0.31:/home/sara/backup
sudo rsync -avz /home/sara/Documents/Dir1.zip sara@192.168.0.31:/home/sara/backup terminal output

Now, you have a zipped copy of your directory on a remote server. You can also do this for local transfers if you want a backup on another drive or partition.

Conclusion

This tutorial showed you how to back up data using rsync locally and over a network. Take caution when using this tool, and do a dry run if you are unsure about the rsync options you want to use.

Next, learn how to exclude files and directories with rsync.

Was this article helpful?
YesNo
Sara Zivanov
Sara Zivanov is a technical writer at phoenixNAP who is passionate about making high-tech concepts accessible to everyone. Her experience as a content writer and her background in Engineering and Project Management allows her to streamline complex processes and make them user-friendly through her content.
Next you should read
Rsync Command: 20 Helpful Examples in Linux
September 19, 2024

This tutorial provides 20 most commonly used rsync commands for all data synchronization scenarios. Master...
Read more
How to Use rsync to Exclude Files and Directories in Data Transfer
March 3, 2020

Rsync is a Linux tool that allows you to transfer files to another location. You can customize the command by...
Read more
How to Transfer Files with Rsync over SSH
January 31, 2020

Rsync is a Linux tool that allows you to transfer data over SSH to a remote server securely. Use the options...
Read more
How to Copy Files and Directories in Linux
December 28, 2023

Want to learn how to copy files in Linux OS? This guide will show you how to use the Linux commands to copy...
Read more