Restic... Ein Loblied (und eine Anleitung)

Datum

Ich verwende seit kurzem Restic (Restic auf Github) für einen Teil meiner Backups und bin bisher sehr zufrieden .

Vorgeschichte:
Ich wollte neben meinen „normalen“ Backups, welche ich auf einem NAS im LAN speichere, auch Geo-Redundanz für den Fall das mir mal die Bude abbrennt.
Zumidest von den wichtigsten Dingen (z.B.: Familenfotos & Videos, Dokumente, etc.) sollte ein externes Backup vorhanden sein.

Überlegungen:

Nun ist es aus Sicht des Datenschutzes schlecht die Daten unverschlüsselt einfach in die Cloud zu laden.

Es ist recht schwer einen vertrauenswürdigen Dienst zu finden und wirklich sicher was mit den Daten gemacht werden ist man nie.

Warum Restic?

Restic bietet:

  • Verschlüsselung der Daten
  • Deduplizierung
  • immer Vollbackups
  • man kann Snapshots auch per z.B.: SFTP lokal mounten
  • verdammt schnell
  • Verifizierung der Daten mit Hashsummen
  • leicht zu konfigurieren

Installation

Eine gute Installationsanleitung findet man [Hier]

Ich verwenden am liebsten Git für so etwas:

$ git clone https://github.com/restic/restic
$ cd restic
$ go run build.go

Wenn man nun die, bei der Installation, entstandene Binary nach /bin kopiert ist das Tool systemweit verfügbar.

Einrichten des Backups

Um das Backup auf dem Backend (egal ob lokal oder remote) einzurichten, verwendet man:

lokal:
restic init --repo /Pfad/zum/backup

remote:
restic -r sftp:remoteserver.tld:/Pfad/zum/backup init

Bei der Einrichtung wird auch das Passwort zum Verschlüsseln gesetzt.

WICHTIG: Dieses Passswort ist extrem wichtig und sollte auf keinen Fall verloren gehen, da sonst kein Zugriff auf die Backups möglich ist.

Daten sichern

Um nun ein Backup eines Orfners zu erstellen, verwendet man:

lokal:
restic -r /Pfad/zum/backup backup ~/work

remote:
restic -r sftp:remoteserver.tld:/Pfad/zum/backup backup ~/work

Die Dauer des Backup-Vorgangs richtet sich nach der Größe und Bandbreite zum Backup-Standort.

Auflisten der Snapshots

Um zu prüfen welche Backups vorhanden sind, verwendet man:

lokal:
restic -r /Pfad/zum/backup snapshots

remote:
restic -r sftp:remoteserver.tld:/Pfad/zum/backup snapshots

Mounten des Backups

Eine sehr tolle Funktion ist das Mounten des Backups, selbst von entfernten Servern.
Dies ist vor allem dann wichtig, wenn man z.B. nur eine Datei benötigt und nicht das komplette Backup wiederhergestellt haben möchte.

lokal:
restic -r /Pfad/zum/backup mount ~/tmp/meinbackup

remote:
restic -r sftp:remoteserver.tld:/Pfad/zum/backup mount ~/tmp/meinbackup

Wiederherstellen des Backups

Der wohl wichtigste Punkt ist die Wiederherstellung der Daten vom Backup.
Dies geschieht mit:

lokal:
restic -r /Pfad/zum/backup restore latest --target /tmp/restore-art

remote:
restic -r sftp:remoteserver.tld:/Pfad/zum/backup restore latest --target /tmp/restore-art

Ich habe hier natürlich nur die rudimentärsten befehle aufgelistet. Man kann natürlich noch exclude, hosts, etc. hinzufügen…

Eine ausführliche Anleitung mit den möglichen Optionen findet man in der Dokumentation

Enviroment Variablen festlegen

Wenn man ein Backup-Script verwenden möchte, dass selbstständig Backups macht, dann ist es nicht sinnvoll jedes Mal das Passwort für das restic-Repository eingeben zu müssen.

Man kann den Backup-Pfad und das restic-Passwort auch als Eviroment-Variable anlegen, damit diese dann im entsprechenden Shell-Script verwendet werden können.

Wenn man dies global für den Benutzer tun möchte, dann trägt man folgende Zeilen in die entsprechende .bashrc des Benutzers ein:
# Repo definieren und PW hinterlegen
export RESTIC_REPOSITORY=/home/backup
export RESTIC_PASSWORD=12345678
#Was soll gesichert werden?
backup_pfad=/media/NAS

Alternativ kann man das natürlich auch nur im Shell-Script selber so hinterlegen.

Der entsprechende Befehl zum starten des Backups wäre dann: restic -r $RESTIC_REPOSITORY backup $backup_pfad

Autor
Kategorien Backup, Go

PRTG Map