documentation

This commit is contained in:
Tobias Trabelsi 2019-01-07 22:11:11 +01:00
parent 579ba632d6
commit 057e283032
4 changed files with 19 additions and 47 deletions

View File

@ -22,39 +22,30 @@ $ cd restic-systemd-automatic-backup
$ sudo make install $ sudo make install
```` ````
### 1. Create Backblaze B2 account
First, see this official Backblaze [tutorial](https://help.backblaze.com/hc/en-us/articles/115002880514-How-to-configure-Backblaze-B2-with-Restic-on-Linux) on restic, and follow the instructions ("Create Backblaze account with B2 enabled") there on how to create a new B2 bucket. ### 1. Configure the Backup
Take note of the your account ID, application key and password for the next steps. First edit the following Files as you like
* restic-backup.service
* Add your Username
* restic-check.service
* Add your Username
* env.sh
* pw.txt
* password for your Backup
After that you can copy all files to the right directories with the Makefile in this Repository
### 2. Configure your B2 account locally
Put these files in `/etc/restic/`:
* `b2_env.sh`: Fill this file out with your B2 bucket settings etc. The reason for putting these in a separate file is that it can be used also for you to simply source, when you want to issue some restic commands. For example:
```bash ```bash
$ source /etc/restic/b2_env.sh $ sudo make install
$ restic snapshots # You don't have to supply all parameters like --repo, as they are now in your environment!
```` ````
* `b2_pw.txt`: Put your B2 password in this file.
### 3. Initialize remote repo ### 2. Initialize your Backup
Now we must initialize the repository on the remote end:
```bash
source /etc/restic/b2_env.sh
restic init
```
### 4. Script for doing the backup See https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html for how to do this
Put this file in `/usr/local/sbin`:
* `restic_backup.sh`: A script that defines how to run the backup. Edit this file to respect your needs in terms of backup which paths to backup, retention (number of backups to save), etc.
Put this file in `/`: ### 3. Make first backup & verify
* `.backup_exclude`: A list of file pattern paths to exclude from you backups, files that just occupy storage space, backup-time, network and money.
### 5. Make first backup & verify
Now see if the backup itself works, by running Now see if the backup itself works, by running
```bash ```bash
@ -62,14 +53,8 @@ $ /usr/local/sbin/restic_backup.sh
$ restic snapshots $ restic snapshots
```` ````
### 6. Backup automatically; systemd service + timer ### 4. Backup automatically; systemd service + timer
Now we can do the modern version of a cron-job, a systemd service + timer, to run the backup every day! Now we can do the modern version of a cron-job, a systemd service + timer, to run the backup every week!
Put these files in `/etc/systemd/system/`:
* `restic-backup.service`: A service that calls the backup script.
* `restic-backup.timer`: A timer that starts the backup every day.
Now simply enable the timer with: Now simply enable the timer with:
```bash ```bash
@ -103,20 +88,7 @@ $ journalctl -f -u restic-backup.service
(skip `-f` to see all backups that has run) (skip `-f` to see all backups that has run)
### 5. Optional: automated backup checks
### 7. Email notification on failure
We want to be aware when the automatic backup fails, so we can fix it. Since my laptop does not run a mail server, I went for a solution to set up my laptop to be able to send emails with [postfix via my Gmail](https://easyengine.io/tutorials/linux/ubuntu-postfix-gmail-smtp/). Follow the instructions over there.
Put this file in `/usr/local/sbin`:
* `systemd-email`: Sends email using sendmail(1). This script also features time-out for not spamming Gmail servers and getting my account blocked.
Put this files in `/etc/systemd/system/`:
* `status-email-user@.service`: A service that can notify you via email when a systemd service fails. Edit the target email address in this file.
As you maybe noticed already before, `restic-backup.service` is configured to start `status-email-user.service` on failure.
### 8. Optional: automated backup checks
Once in a while it can be good to do a health check of the remote repository, to make sure it's not getting corrupt. This can be done with `$ restic check`. Once in a while it can be good to do a health check of the remote repository, to make sure it's not getting corrupt. This can be done with `$ restic check`.
There are some `*-check*`-files in this git repo. Install these in the same way you installed the `*-backup*`-files. There are some `*-check*`-files in this git repo. Install these in the same way you installed the `*-backup*`-files.

View File

@ -1,6 +1,6 @@
[Unit] [Unit]
Description=Backup with restic Description=Backup with restic
OnFailure=status-email-user@%n.service OnFailure=status-popup-user@%n.service
[Service] [Service]
Type=simple Type=simple

View File

@ -1,6 +1,6 @@
[Unit] [Unit]
Description=Check restic backup for errors Description=Check restic backup for errors
OnFailure=status-email-user@%n.service OnFailure=status-popup-user@%n.service
Conflicts=restic.service Conflicts=restic.service
[Service] [Service]