1. Index
  2. Debian
  3. Desktop
  4. Heimserver
  5. Webserver

Daten sichern

Restic zerlegt, dedupliziert, verschlüsselt und speichert Daten entweder in einem lokalen Verzeichnis, per SFTP auf einem entfernten Rechner oder bei diversen Cloud-Anbietern.

Paket installieren

Das Paket enthält genau ein Programm und ein paar Handbuchseiten.

apt install restic

Auf dem Zielsystem legen wir einen Benutzer an, der die verschlüsselten Daten entegegen nimmt.

adduser --system --group --home /var/lib/restic restic

Damit wir einen passwortfreien Zugriff per SSH bekommen, hinterlegen wir dort den öffentlichen Schlüssel des Administrators unter /var/lib/restic/.ssh/authorized_keys. Den Zielpfad und das zugehörige Passwort kennt nur das zu sichernde Quellsystem.

/etc/restic.env
RESTIC_REPOSITORY=/var/lib/restic RESTIC_PASSWORD=Password

Daten regelmäßig sichern

Ein Timer sichert täglich alle wichtigen Datenverzeichnisse und Datenbanken.

/etc/systemd/system/restic-backup.service
[Unit] Description=Restic backup service [Service] Type=oneshot EnvironmentFile=/etc/restic.env ExecStart=/usr/bin/restic backup --tag timer --exclude .cache /home /srv ExecStartPost=/usr/bin/restic forget --tag timer \ --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --keep-yearly 3

und

/etc/systemd/system/restic-backup.timer
[Unit] Description=Daily backup with restic [Timer] OnCalendar=daily Persistent=true [Install] WantedBy=timers.target

Ein weiterer Timer räumt nicht mehr benötigter Brocken auf. Es genügt aber, wenn diese vergleichswiese teure Operation wöchentlich oder monatlich ausgeführt wird.

/etc/systemd/system/restic-prune.service
[Unit] Description=Restic pruning service [Service] Type=oneshot EnvironmentFile=/etc/restic.env ExecStart=/usr/bin/restic prune

und

/etc/systemd/system/restic-prune.timer
[Unit] Description=Monthly restic repository pruning [Timer] OnCalendar=monthly Persistent=true [Install] WantedBy=timers.target

Schließlich initialisieren wir das Depot und aktivieren die Wecker.

. /etc/restic.env
export RESTIC_REPOSITORY
export RESTIC_PASSWORD
restic init
systemctl daemon-reload
systemctl enable --now restic-backup.timer
systemctl enable --now restic-prune.timer

Daten wiederherstellen

Je nachdem, ob wir eine einzelne Datei oder einen kompletten Server verloren haben: Zuerst verschaffen wir uns einen Überblick über die verfügbaren Sicherungen.

restic snapshots
repository 96b02f94 opened successfully, password is correct
ID        Time                 Host        Tags        Paths
-------------------------------------------------------------------------
20d892ee  2020-02-20 13:33:37  nas         timer       /home /srv
ceb50b9d  2020-02-20 00:01:09  nas         postgres    postgres.dump
-------------------------------------------------------------------------
1 snapshots

Die aktuellste erfolgreiche Sicherung heißt immer latest. Um nach einem kompletten Datenverlust alle Datenverzeichnisse wiederherzustellen, tippen wir:

restic restore latest --target /

Analog dazu lassen sich auch verlorene Datenbanken wiederherstellen.

restic dump latest --tag postgres postgres.dump | psql

Manchmal möchte man nur nach einem wichtigen Dateimuster suchen.

restic find '*Thesis*.pdf'

Schließlich kann man auch ein Depot per FUSE montieren und durchsuchen. Dies ist vermutlich der intuitivste weg, um einzelne Dateien zu restaurieren.

restic mount /mnt

Referenz

Diese Auflistung soll nur einen Überblick über die verfügbaren Kommandos und Optionen vermitteln und erhebt keinen Anspruch auf Vollständigkeit. Als authoritative Quelle gelten nur die Manpages und die offizielle Dokumentation.

Kommando Operand Beschreibung
restic help [Command] Hilfe (zu einem Kommando) ausgeben
version Version ausgeben
generate Handbuch und Skript für Autovervollständigung erzeugen
self-update Neue Programmversion herunterladen und installieren
migrate [Name] Mögliche Migrationen auflisten oder durchführen
cache Lokalen Zwischenspeicher verwalten
Depot
init Neues Depot vorbereiten
key list Passwörter tabellarisch auflisten
add Passwort hinzufügen
remove Id Passwort löschen
passwd Id Passwort ändern
check Depot auf Fehler prüfen
prune Daten von ausgedünnten Sicherungen löschen
list Type Interne Objektnummern auflisten
cat Type Id Internes Objekt als JSON ausgeben
rebuild-index Index neu erzeugen
unlock Sperren von anderen Prozessen aufräumen
mount Dir Depot per FUSE im Dateisystem einbinden
Sicherung
snapshots Sicherungen auflisten
tag Id Sicherung etikettieren
stats Id Speicherverbrauch messen
forget [Id] Sicherungen ausdünnen
recover Ausgedünnte Sicherungen wiederherstellen
diff Id Id Unterschiede zwischen Sicherungen anzeigen
ls Id [Path]Dateien in einer Sicherung auflisten
dump Id Path Datei aus Sicherung ausgeben
find Glob Datei in allen Sicherungen suchen
Wiederherstellung
backup Path Neue Sicherung erstellen
restore Id Daten aus einer Sicherung wiederherstellen
blobs
packs
index
snapshots
keys
locks
blob
pack
index
snapshot
key
masterkey
config
lock

Literatur

  1. Alexander Neumann: restc – Backups mal richtig, Open Chaos, 01/2016
  2. Link Dupont: Automate backups with restic and systemd, Fedora Magazine, 04/2019