backups with rsnapshot
a centralized backup server can easily be set up with rsnapshot
. This program can pull specified remote folders with rsync.
- install
rsnapshot
- edit the config file
/etc/rsnapshot.conf
. The default config is well documented and one has only to modify the given lines. The man page is also of great help (link). I found the following to fit my needs (the path need should be adjusted to each one's needs)
[code language="bash" collapse="true" padlinenumbers="true" title="/etc/rsnapshot.conf"]
config_version 1.2
snapshot_root /mnt/USBBkupDisk/rsnapshot
cmd_cp /bin/cp
cmd_rm /bin/rm
cmd_rsync /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger /usr/bin/logger
cmd_du /usr/bin/du
retain hourly 4
retain daily 7
retain weekly 4
verbose 5
loglevel 3
lockfile /tmp/rsnapshot.pid
include_file /home/bkuper/DarkTower.include
exclude_file /home/bkuper/DarkTower.exclude
backup DarkTower:/home/paul/ paulTower/
backup DarkTower:/data/paul/ paulTower/
[/code] - the in-/exclude files are the usual one from
rsync
, e.g. something like this:
[code language="bash" collapse="true" padlinenumbers="true" title="/home/bkuper/DarkTower.include"]
/home/paul/.*
/home/paul/.*/
/home/paul/bin
/home/paul/Downloads
/home/paul/VirtualBox VMs
[/code]
one needs to note here, that the order of include/exclude files is important! the first pattern which matches a file takes effect. - the user (here bkuper) needs to be able to sign into the client machine such that it can pull the backup. (
ssh-copy-id
...) - the interval which were defined above (
retain hourly 4 retain daily 7 retain weekly 4
) will be applied with a cronjob:
[code language="bash" collapse="true" padlinenumbers="true" title="crontab"]
$ crontab -l
# do hourly backups at 9,13,19,23h
0 9,13,19,23 * * * /usr/local/bin/rsnapshot hourly# do daily backups at 22:50
50 22 * * * /usr/local/bin/rsnapshot daily# do weekly backups at mondays 22:40
40 22 * * 1 /usr/local/bin/rsnapshot weekly
[/code]