Debian Tutorials

Debian Tutorials

Step by step tutorials showing you how to install and configure various applications and services on Debian based Linux distros.

July 2024


Remote backups using rsync


rsync is a software application for Unix systems which synchronizes files and directories from one location to another while minimizing data transfer using delta encoding when appropriate. An important feature of rsync not found in most similar programs/protocols is that the mirroring takes place with only one transmission in each direction. rsync can copy or display directory contents and copy files, optionally using compression and recursion.

We’re going to configure a machine to sync files from a specific folder to a remote machine every day using rsync in four easy steps. This is ideal solution to do automated backups for servers and workstations.

1. Configure remote machine (if not using service by a third party)

Install rsync, it must be installed on both remote and local machines to be able to sync data

apt-get install rsync

Create a new user used by the local machine to connect to the remote machine

adduser user1 --home /home/user1

Replace user1 with your preferred username. You can set any password you like and make it complicated because it’s only needed once.
2. Configure the local machine (the one being backed up)

Install rsync

apt-get install rsync

Create a private key to avoid passphrase popup to be able to do automatic backups

ssh-keygen -t dsa

Copy the key to the remote machine

ssh-copy-id -i .ssh/ [email protected]

Replace user1 with your username and with the remote machine’s hostname or ip address

The link between the two machine is set up and you no longer need password to connect to the remote machine using ssh. You can try: ssh [email protected]
3. The actual backup process

Backup folders using the following command

rsync -avz --progress -e ssh /var/www [email protected]:backup

Using this command, all files in the /var/www folder will be synced to the remote machine into a folder named backup
4. Automate the backup using cron

Open the cron config file for current user

crontab -e

Add a line similar to the following into the config file

0 3 * * * rsync -az -e ssh /var/www [email protected]:backup >> /dev/null 2>&1

Your /var/www will be synced to the remote machine at 3am every day

Comments 5
  • Samuel Nogueira
    Posted on

    Samuel Nogueira Samuel Nogueira


    Awesome tutorial, extremely helpful, clean and accurate. Loved it 😉

  • Praveen
    Posted on

    Praveen Praveen


    Thank you very much.Really superb tutorials !!

  • Irving
    Posted on

    Irving Irving


    Really Helpful….nice post….thx

  • Willynux
    Posted on

    Willynux Willynux


    Thanks for the clear and concise tutorial! Nice reference.

  • Yandos
    Posted on

    Yandos Yandos


    Works great – thank you!