Rsnapshot

This article describes a simple automated backup scheme using the tool rsnapshot, which is based on rsync. rsnapshot makes a specified number of incremental backups of specified file trees, using hard links to save space on the backup medium.

Installation
Install :

fstab
Add an entry like the following in your fstab:

In this example, the filesystem is ext4, identified by the label backup, and attaches to a special mount point. The noauto option means that this backup filesystem will not be mounted by default. The backup filesystem would normally be on an external disk.

Cron scripts
Create cron scripts for the different backup intervals:

rsnapshot configuration files
Set up the rsnapshot configuration files referred to in the scripts above.

First a base configuration:

Then, here are sample configuration files for daily, weekly and monthly backups:

In these files, the second argument of backup specifies a container directory for the backups, usually referring to the machine (in this case, localhost). This can be changed to any name of your choosing.

Restoration
To restore the localhost backups specified above, we would use

where is the mount point of the fresh root filesystem. In the paths above *.0 refers to the latest increment.

Possible improvements
It is also possible to make remote backups via rsync or SSH -- see the rsnapshot man page for details.

BTRFS snapshots
If you are crazy enough to use btrfs you can leverage its snapshot feature with rsnapshot. Walter Werther has a guide on this.