2 minute read

a centralized backup server can easily be set up with rsnapshot. This program can pull specified remote folders with rsync.

  1. install rsnapshot
  2. 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]
  3. 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.
  4. the user (here bkuper) needs to be able to sign into the client machine such that it can pull the backup. (ssh-copy-id...)
  5. 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]