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