A script for executing [restic backups](https://restic.net) - see the [project repo](https://github.com/restic/restic) onto a remote (or local) server.
Backups are incremental, and stored encrypted on the backup server. You must have the password for each backup to view the content. This script stores 7 daily, 5 weekly, 12 monthly, and 7 yearly snapshots. It automatically cleans up after itself.
This solution is far more efficient and faster than our past solution, Rdiff Backup (which uses rsync)...
First you need to [install restic](https://restic.readthedocs.io/en/stable/020_installation.html). Use your distribution's package manager if possible, otherwise, grab a [pre-compiled binary from the git repo](https://restic.readthedocs.io/en/stable/020_installation.html#official-binaries).
You'll need to clone this repo (or download and uncompress it) into a place on the machine you want to backup. By default, on my systems, I put it in `/home/data/scripts` in the directory `restic-backup`.
Then create a `site.conf` (`cp site.conf-example site.conf`) and replace the DST value (it can be either a local directory path or an SFTP-based address of a remote backup space).
You'll need to set up key-based SSH access from the local machine onto the remote machine. If you're not sure how to do that, [here's a howto](https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server).
You'll need to initialise the backup space (whether it's local or remote). You'll run a command like (replacing $DST with the value you put into your site.conf)
`restic -r $DST init`
and you'll be asked to put in a password - *make sure you store the password*!! - I use a utility called `pwgen` (`sudo apt install pwgen` to install it on a Debian-esque Linux) and run, say, `pwgen -s 19 1` to get a 19 character password. *If you lose this password, you'll lose access to your backups*
Finally, you'll need to copy the `restic-cron` script into `/etc/cron.d/` to make sure it runs automatically. You may need to *tweak the path to your restic-backup directory* and you can also adjust when the backup runs... The format is
`Min Hr Day Month Day-of-week`
For example, I have set the default to
`30 4 * * *`
Which means, it runs a 04:30 every morning (every day of the week). Adjust to your requirements.
## Todo
Create an initialisation and password generation function for this script.