Snapshots Ihres vServers schützen vor Fehlern bei Updates oder Konfigurationsänderungen. Für eine vollständige Backup-Strategie sollten wichtige Daten aber zusätzlich an einem anderen Ort gesichert werden. restic ist ein modernes, kostenloses Backup-Programm, das Daten verschlüsselt, dedupliziert und auf viele Ziele sichert: einen anderen Server per SFTP, S3-kompatiblen Objektspeicher oder ein lokales Laufwerk. Diese Anleitung zeigt die Einrichtung unter Debian und Ubuntu.
Die 3-2-1-Regel
Eine bewährte Faustregel für Backups lautet:
- 3 Kopien Ihrer Daten,
- auf 2 verschiedenen Speichermedien,
- davon 1 Kopie an einem anderen Standort.
restic kümmert sich um die externe Kopie. Die Daten werden schon auf Ihrem Server verschlüsselt, bevor sie übertragen werden. Der Speicheranbieter kann sie nicht lesen.
Schritt 1: restic installieren
sudo apt update
sudo apt install -y restic
restic version
Ist die Version aus den Paketquellen sehr alt, aktualisieren Sie restic mit sudo restic self-update.
Schritt 2: Zugangsdaten festlegen
Legen Sie eine Datei mit dem Passwort für das Backup-Repository an. Ohne dieses Passwort lassen sich die Backups nicht wiederherstellen. Bewahren Sie es zusätzlich an einem sicheren Ort außerhalb des Servers auf, etwa in Ihrem Passwortmanager.
sudo mkdir -p /etc/restic
openssl rand -base64 32 | sudo tee /etc/restic/password > /dev/null
sudo chmod 600 /etc/restic/password
Schritt 3: Ziel einrichten
Variante A: Anderer Server per SFTP
Richten Sie für root einen SSH-Schlüssel ein und hinterlegen Sie ihn auf dem Zielserver:
sudo ssh-keygen -t ed25519 -N "" -f /root/.ssh/id_backup
sudo ssh-copy-id -i /root/.ssh/id_backup.pub backup@backup.beispiel.at
Legen Sie dann die Umgebungsdatei an:
sudo tee /etc/restic/env > /dev/null <<'EOF'
export RESTIC_REPOSITORY="sftp:backup@backup.beispiel.at:/srv/restic/meinserver"
export RESTIC_PASSWORD_FILE="/etc/restic/password"
EOF
sudo chmod 600 /etc/restic/env
Damit der richtige Schlüssel verwendet wird, ergänzen Sie in /root/.ssh/config:
Host backup.beispiel.at
User backup
IdentityFile /root/.ssh/id_backup
Variante B: S3-kompatibler Objektspeicher
sudo tee /etc/restic/env > /dev/null <<'EOF'
export RESTIC_REPOSITORY="s3:https://s3.beispiel-anbieter.at/mein-bucket/meinserver"
export RESTIC_PASSWORD_FILE="/etc/restic/password"
export AWS_ACCESS_KEY_ID="IHR_ACCESS_KEY"
export AWS_SECRET_ACCESS_KEY="IHR_SECRET_KEY"
EOF
sudo chmod 600 /etc/restic/env
Schritt 4: Repository anlegen
sudo bash -c 'source /etc/restic/env && restic init'
Schritt 5: Erstes Backup
Sichern Sie die Verzeichnisse mit Ihren Daten und Konfigurationen, zum Beispiel:
sudo bash -c 'source /etc/restic/env && restic backup /etc /var/www /home /var/backups/mariadb --exclude-caches'
Datenbanken sollten Sie nicht direkt aus ihrem Datenverzeichnis sichern, da die Dateien während des Betriebs nicht konsistent sind. Erstellen Sie vorher einen Dump, wie im Artikel MariaDB installieren und absichern beschrieben, und sichern Sie diesen.
Schritt 6: Automatisieren
Legen Sie ein Skript an, das sichert und alte Stände aufräumt:
sudo tee /usr/local/bin/restic-backup.sh > /dev/null <<'EOF'
#!/bin/bash
set -euo pipefail
source /etc/restic/env
restic backup /etc /var/www /home /var/backups/mariadb --exclude-caches --quiet
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune --quiet
EOF
sudo chmod 700 /usr/local/bin/restic-backup.sh
echo '15 3 * * * root /usr/local/bin/restic-backup.sh >> /var/log/restic.log 2>&1' | sudo tee /etc/cron.d/restic
Damit läuft das Backup täglich um 3:15 Uhr. Aufbewahrt werden die letzten 7 täglichen, 4 wöchentlichen und 6 monatlichen Stände.
Tipp: Lassen Sie sich benachrichtigen, wenn ein Backup ausbleibt. Ein Push-Monitor in Uptime Kuma eignet sich dafür gut: Ergänzen Sie am Ende des Skripts einen Aufruf der Push-URL mit curl -fsS.
Schritt 7: Backups prüfen und wiederherstellen
sudo bash -c 'source /etc/restic/env && restic snapshots'
sudo bash -c 'source /etc/restic/env && restic check'
Eine einzelne Datei oder ein Verzeichnis stellen Sie so wieder her:
sudo bash -c 'source /etc/restic/env && restic restore latest --target /tmp/restore --include /var/www/ihre-domain.at'
Die Dateien landen unter /tmp/restore. Prüfen Sie sie und kopieren Sie sie anschließend an ihren Platz. So überschreiben Sie nicht versehentlich aktuelle Daten.
Testen Sie die Wiederherstellung regelmäßig. Ein Backup, dessen Wiederherstellung nie geprüft wurde, ist im Ernstfall oft wertlos.
Fehlerbehebung
„repository is already locked“
Ein früherer Lauf wurde abgebrochen. Stellen Sie sicher, dass kein anderer restic-Prozess läuft, und entfernen Sie die Sperre mit restic unlock.
„wrong password or no key found“
Das Passwort in /etc/restic/password passt nicht zum Repository. Ohne das richtige Passwort ist kein Zugriff möglich.
Mehr über die Backups und Snapshots, die wir für Ihren vServer bereitstellen, lesen Sie im Artikel Alles Wissenswerte über Backups und Snapshots.
