Automated Data backup of Ubuntu Linux using Remote Backup software rsnapshot in Debian


rsnapshot is a software written in Perl to make backup of local and remote file system. The well proven rsync is behind this utility. rsnapshot does not need root user intervention to restore the data of a normal user. It does not take much space in your Backup server. It can be easily automated (scheduled) to make life easier. Just setup once and forget it configuration. Basically it takes snapshot of file system (or a part of) in regular interval such as hourly, daily, weekly and monthly. This can be configured easily through a simple text based configuration file.
The above task can be setup in a few easy steps in a few minutes. Two major tasks are configuring rsnapshot and openssh automatic login. To make the backup automatically, we need to automate the remote login in a secured way. This can be done through openssh tools. This scenario depicts backup of desktop (assuming that IP address is data to a backup server. My desktop runs on Ubuntu 10.04 and backup server runs on Debian Squeeze.

Desktop configuration:

Step-1. Install secure shell package (assuming that default installtion of Ubuntu installs openssh-client):
$ sudo apt-get install openssh-server
Step-2. List down the users who needs backup, directories to be back up and directories/files to be excluded from backup. In this case here is the plan:
User: blackgod – To backup: /home/blackgod – To exclude: /home/blackgod/Downloads
User: udhaya – To backup: /home/udhaya – To exclude: none
Step-3. Login as above user and create a SSH key pair using “ssh-keygen -t rsa” command. Don’t enter any passphrase when it is prompted. This is to enabled automatic remote login from backup server. Accept the default paths to store the keys. This process to be repeated for all above users.
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/blackgod/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/blackgod/.ssh/id_rsa.
Your public key has been saved in /home/blackgod/.ssh/

Backup server configuration:

Login as root user.
Step-1. Install rsnapshot and secure shell client packages.
# apt-get install rsnapshot openssh-client
Step-2. Now update the server with Public key generated in desktop. This process to be repeated for all users in desktop who needs backup. This can be done with following command running from server.
# ssh-copy-id -i ~/.ssh/ blackgod@
The above command will prompt for blackgod’s password, enter the same. This will fetch the public key and store it under /root/.ssh/ directory.
Step-3. Now it is time to configure rsnapshot. You can find /etc/rsnapshot.conf file which is a simple text configuration file with good default values. The following are most important and useful configuration lines in my setup – this is for your reference. You can enable these lines and change according to your need. You are warned that this configuration file takes only tab as field seperator.
1. I am setting where to backup my data in server. Ensure that this path (file system) has enough space to accomodate data backup.
snapshot_root /home/backup
2. Here I set backup interval as once in 4 hours (6 backups in a day), 7 daily backups in a week, 4 weekly backups and 3 monthly backups.
interval hourly 6
interval daily 7
interval weekly 4
interval monthly 3
3. The below log configuration is much handy during initial setup. So let’s do it.
verbose 2
loglevel 3
logfile /var/log/rsnapshot.log
4. To avoid two instances of rsnapshot which may mess up the file.
lockfile /var/run/
5. To exclude “Downloads” directory from backup.
exclude /home/blackgod/Downloads/
6. The most important is to configure the data to be backup.
backup blackgod@ laptop
backup udhaya@ laptop
You can download my /etc/rsnapshot.conf for your reference in the below link.

  /etc/rsnapshot.conf (7.3 KiB, 1,045 hits)

Step-4. Now we have to configure cron to make backup automatically. There is a default configuration file called /etc/cron.d/rsnapshot as below. Here is my configuration.
0 */4 * * * root /usr/bin/rsnapshot hourly
30 3   * * * root /usr/bin/rsnapshot daily
0  3   * * 1 root /usr/bin/rsnapshot weekly
30 2   1 * * root /usr/bin/rsnapshot monthly
You can download my /etc/cron.d/rsnapshot for your reference in the below link.

  /etc/cron.d/rsnapshot (470 bytes, 707 hits)

Refer here if you want to play with this scheduler configuration file.


Step-5. Initiating the first backup. Just start a manual hourly backup to kick start backup. This may take a long time depending on your data size, hardisk performance, network speed, etc.
# rsnaphot hourly

Share this post


  1. I did not know that. This is by far the most efficient backup process I have ever seen in so many years taking Linux into account. Nail that! You deserve a round of applause for putting things in front of us in seamless manner.

  2. Hi, well i have 1 doubt.
    How can i to put my rsnapshot backups on my NAS ?
    How can i store my rsnapshot backups on my external server with tapes?

Leave a Reply

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