Title: Using rsnapshot for easy backups
       Author: Solène
       Date: 10 January 2020
       Tags: openbsd
       Description: 
       
       ## Introduction
       
       rsnapshot is a handy tool to manage backups using rsync and hard links
       on the
       filesystem. rsnapshot will copy folders and files but it will skip
       duplication
       over backups using hard links for files which has not changed.
       
       This kinda create snapshots of your folders you want to backup, only
       using
       rsync, it's very efficient and easy to use, and getting files from
       backups is
       really easy as they are stored as files under the rsnapshot backup.
       
       
       ## Installation
       
       Installing rsnapshot is very easy, on most systems it will be in your
       official
       repository packages.
       
       To install it on OpenBSD: `pkg_add rsnapshot` (as root)
       
       
       ## Configuration
       
       Now you may want to configure it, in OpenBSD you will find a template
       in
       `/etc/rsnapshot.conf` that you can edit for your needs (you can make a
       backup
       of it first if you want to start over). As it's stated in big (as big
       as it can
       be displayed in a terminal) letters at the top of the configuration
       sample
       file, you will see that things must be separated by TABS and not
       spaces. I've
       made the mistakes more than once, don't forget using tabs.
       
       I won't explain all options, but only the most importants.
       
       The variable `snapshot_root` is where you want to store the backups.
       Don't put
       that directory in a directory you will backup (that will end into an
       infinite
       loop)
       
       The variable `backup` is for telling rsnapshot what you want to backup
       from
       your system to which directory inside snapshot_root
       
       Here are a few examples:
       
           backup        /home/solene/        myfiles/
           backup        /home/shera/Documents        shera_files/
           backup        /home/shera/Music        shera_files/
           backup        /etc/        etc/
           backup        /var/        var/        exclude=logs/*
       
       **Be careful when using ending slashes to paths, it works the same as
       with rsync**.
       `/home/solene/` means that into target directory, it will contains the
       content
       of `/home/solene/` while `/home/solene` will copy the folder solene
       within the
       target directory, so you end up with
       target_directory/solene/the_files_here.
       
       The variables `retain` are very important, this will define how
       rsnapshot keep
       your data. In the example you will see alpha, beta, gamma but it could
       be hour,
       day, week or foo and bar. It's only a name that will be used by
       rsnapshot to
       name your backups and also that you will use to tell rsnapshot which
       kind of
       backup to do. Now, I must explain how rsnapshot actually work.
       
       
       ## How it work
       
       Let's go for a straighforward configuration. We want a backup every
       hour on the
       last 24h, a backup every day for the past 7 days and 3 manuals backup
       that we
       start manually.
       
       We will have this in our rsnapshot configuration
       
           retain        hourly        24
           retain        daily        7
           retain        manual        3
       
       
       but how does rsnapshot know how to do what? The answer is that it
       doesn't.
       
       In root user crontab, you will have to add something like this:
       
           # run rsnapshot every hour at 0 minutes
           0 * * * * rsnapshot hourly
       
           # run rsnapshot every day at 4 hours 0 minutes
           0 4 * * * rsnapshot daily
       
       and then, when you want to do a manual backup, just start `rsnapshot
       manual`
       
       Every time you run rsnapshot for a "kind" of backup, the last version
       will be
       named in the rsnapshoot root directory like hourly.0 and every backups
       will be
       shifted by one. The directory getting a number higher than the number
       in the
       `retain` line will be deleted.
       
       
       ## New to crontab?
       
       If you never used crontab, I will share two important things to know
       about it.
       
       Use MAILTO="" if you don't want to receive every output generated from
       scripts
       started by cron.
       
       Use a PATH containing /usr/local/bin/ in it because in the default cron
       PATH it
       is not present. Instead of setting PATH you can also using full binary
       paths
       into the crontab, like /usr/local/bin/rsnapshot daily
       
       You can edit the current user crontab with the command `crontab -e`.
       
       Your crontab may then look like:
       
          
       PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/l
       ocal/sbin
           MAILTO=""
           # comments are allowed in crontab
           # run rsnapshot every hour at 0 minutes
           0 * * * * rsnapshot hourly
           # run rsnapshot every day at 4 hours 0 minutes
           0 4 * * * rsnapshot daily