Backups mit restic

Ich habe in der letzten Zeit viel gutes über das Backup Verfahren restic gelesen (z.B. hier. Meine bisherigen Verfahren waren etwas unterschiedlich und restic scheint hier alle Anforderungen abzudecken.

Hier meine Notizen für die Installation auf einem Debian 9 Backup Server

Installation von Go und restic

Zuerst die Installation von Go in der Version 1.8 auf meinem Debian 9 Server

sudo apt-get install git golang-1.8-go
export GOROOT=/usr/lib/go-1.8
export PATH=$GOROOT/bin:$PATH
go version go1.8.1 linux/386

Das restic Programm aus dem Github Repo ziehen und kompilieren

mkdir tmp
cd tmp
git clone https://github.com/restic/restic
cd restic
go run build.go
cp restic /usr/bin
restic version
   restic 0.7.3 (v0.7.3-79-gac92e2dd)
   compiled with go1.8.1 on linux/386

Backup Routine

Mein Ziel ist es, verschiedene Server mit verschiedenen Verzeichnissen zu sichern. Damit das ganze übersichtlich bleibt lege ich eine Datei mit den “zu ignorierenden” Verzeichnissen an und für jeden Server eine eigne Datei mit “zu sichernden” Dateien. Hier ist darauf zu achten das es bei den Verzeichnissen oder Dateien kein Leerzeichen am Ende gibt.

Das Kennwort halte ich in einer eigenen Datei. Zuerst diese Datei erstellen und das Repository erstellen

 echo supersecretpassword > /root/restic/repopassword.txt
 chmod 400 /root/restic/repopassword.txt 
 restic -r /backup/restic init
 enter password for new backend: 
 enter password again: 
 created restic backend c828c80164 at /backup/restic
 
 Please note that knowledge of your password is required to access
 the repository. Losing your password means that your data is
 irrecoverably lost.

Auf Basis dieses Beitrags habe ich für den Aufruf das folgende Script erstellt.

 #!/bin/bash
 RESTIC_PASSWORD_FILE=/root/restic/repopassword.txt
 RESTIC_REPOSITORY=/backup/restic
 RESTIC_EXCLUDELIST=/root/restic/excludelist.txt
 RESTIC_BACKUP_SERVER1=/root/restic/backup-list-server-1.txt
 
 
 /usr/bin/restic -r $RESTIC_REPOSITORY -p $RESTIC_PASSWORD_FILE backup --files-from $RESTIC_BACKUP_SERVER1 --exclude-file $RESTIC_EXCLUDELIST
 
 /usr/bin/restic -r $RESTIC_REPOSITORY -p $RESTIC_PASSWORD_FILE forget --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 10