Rdiff-backup - A Local and Remote Backup Tool for Linux

Rdiff-backup tool

The Rdiff-backup tool is a simple yet powerful backup tool that can be used to back up data either locally or remotely. It's a cross-platform tool written in python that works on both Linux, macOS and even FreeBSD.  Rdiff-backup, just like rsync, is mostly a reverse incremental backup tool that updates the differences from the previous backup to the next one and ensures that you get the latest backup. Additionally, you can easily restore the backup and access your files. In this guide, you will learn how to install Rdiff-backup - A local and remote backup tool for Linux.

The Rdiff-backup tool uses the SSH protocol to back up directories over the network. This provides a secure safe and secure transfer of data thanks to the SSH protocol. The remote system ends up with a replica of the source directory and subsequent backups are synced incrementally. Without much further ado, let's dive in and see how the tool is used.

How to install Rdiff-backup tool

You can install the rdiff-backup tool in various Linux distributions using their respective package managers. The latest release is Version 2.x. But before we install it, you need some dependencies on your Linux system.

Dependencies

The latest Rdiff-backup tool requires that you have the following prerequisites:

  1. Python 3.6 and later versions
  2. librsync 1.0.0 and later
  3. pylibacl (This is optional but comes in handy in supporting ACLs)
  4. Pyxattr (For extended attribute support)
  5. Passwordless SSH configured to the target system ( For remote

On Ubuntu 20.04 or Debian Buster

For Ubuntu 20.04 and The latest Debian versions, install the latest Rdiff-backup tool using the command.

$ sudo apt install rdiff-backup

This installs rdiff-backup tool alongside all the dependencies.

Install Rdiff-backup - A local and remote backup tool

To verify the version of rdiff installed, invoke the command:

$ rdiff-backup -V
Check ridff version

Older versions of Ubuntu/Debian

For older versions, use Ubuntu backports

$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:rdiff-backup/rdiff-backup-backports

The update the system packages and install Ridff-backup tool as shown

$ sudo apt update
$ sudo apt install rdiff-backup

On CentOS 8/RHEL 8

For CentOS 8 RHEL 8, first, enable the COPR repository. Short for Cool Other Package Repo, COPR is a Fedora project that aims at providing an easy way of building and managing third-party repositories.

$ sudo dnf install yum-plugin-copr epel-release
$ sudo dnf copr enable frankcrawford/rdiff-backup

Once you have added the repository, install the Rdiff-backup tool as shown:

$ sudo dnf --enablerepo=PowerTools install rdiff-backup

On CentOS 7/RHEL 7

Similarly, on CentOS 7 / RHEL you need to enable the COPR repository before installing the Rdiff-backup tool.

$ sudo yum install yum-plugin-copr epel-release
$ sudo yum copr enable frankcrawford/rdiff-backup
$ sudo yum install rdiff-backup
$ sudo yum install py3libacl pyxattr => This is optional

On Fedora 32 and later

$ sudo dnf install rdiff-backup

For older versions of Fedora invoke the commands below:

$ sudo dnf install python3-pip python3-setuptools py3libacl python3-pyxattr
$ sudo pip3 install rdiff-backup

Other Linux distributions

For Linux distros, you can install Rdiff-backup tool using the pip3  package manager from the PyPI (Python Package Index) repository as shown:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ sudo python3 get-pip.py
$ sudo pip3 install rdiff-backup

How to Use Rdiff-backup tool

As mentioned earlier, the rdiff-backup command-line tool relies on the SSH service to connect and backup directories on remote targets. However, as you know, the default authentication for SSH is the username/password method. This requires direct user input. For rdiff-backup, this is not the desired authentication type. To automate backups and enjoy a smoother and seamless experience, you need to configure SSH Passwordless Login. This enables login using SSH keys which is a safer and more convenient way of file synchronization or transfer between Linux systems.

Making a local backup

The simplest and basic use of the rdiff-backup command is to create a local backup of a directory. You can back up a directory to a different path on the same system as shown.

$ sudo rdiff-backup  foo  bar

Where foo is the folder to be backed up and bar is the backup directory.

Let's take an example. I have a directory called reports containing text files as shown.

folder with text files to be backed up

I have created a backup directory /opt/backup where the files will be backed up.

$ sudo mkdir -p /opt/backup

To back up the reports folder to the /opt/backup directory, run the command:

$ sudo rdiff-backup reports /opt/backup
back up files using the rdiff-backup tool

Take note of the rdiff-backup-data directory that has been generated in the process. This directory contains crucial files pertaining to the backup process such as backup logs.

rdiff-backup-data directory

Restoring data from a  local backup

We have seen how you can backup a directory locally on your local system. But let's assume we have accidentally deleted the reports directory or that it has been corrupted. to restore the directory from the backup directory in the /opt/backup path, run the command:

$ sudo cp -a /opt/backup  reports

Backing up a directory to a remote Linux system

To back up a directory to a remote server, first, ensure that rdiff-backup is installed on both systems and that the two versions of rdiff-backup are the same. . As discussed, you can cross-check the version of rdiff-backup using the command:

$ rdiff-backup -V

We have 2 Ubuntu 20.04 LTS servers as shown:

Ubuntu remote server -  173.82.187.242

Ubuntu backup server -  173.82.155.215

The backup is done from the backup server. In this example, we will back up the log files from the remote server located at /var/log path. To achieve this, we need to first log in to the backup server.

$ ssh root@173.82.155.215

Then we will execute the command below:

$ rdiff-backup root@173.82.187.242::/var/log/ /opt/logs_backup/

Exclude a directory from being backed up

To exclude a directory from being backed up, use the --exclude flag as shown:

$ rdiff-backup --exclude /etc/apt root@173.82.187.242::/var/log/ /opt/logs_backup/

Wrapping up

Unlike rsync, rdiff-backup doesn't read the entire file on the target which significantly creates less disk i/o on the target which helps improve backup speed.

Rsync checks metadata of each file (timestamp, size of the files) on both source and target to determine which files needs to be updated. Where rdiff-backup keeps a metadata file on target which keeps track of the sha1 checksum of every file.

We have come to the end of this tutorial. In this guide, you have learned how to install and use rdiff-backup - A local and remote backup tool for Linux systems. Have a great time backing up your directories and files.

Jamie Arthur 7:11 am

Comments

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