RSnapshot ist ein leistungsstarkes und platzsparendes Backup-Tool für Linux-Systeme, das auf bewährten Unix-Tools basiert und dabei eine elegante Lösung für inkrementelle Backups bietet.
Was ist RSnapshot und wie funktioniert es?
RSnapshot kombiniert die Stärken mehrerer Unix-Tools zu einer effizienten Backup-Strategie:
- RSYNC für den eigentlichen Datentransfer und Synchronisation
- Hardlinks (cp -al) für platzsparende inkrementelle Backups – mehrere Dateinamen zeigen auf dieselbe physische Datei im Dateisystem
- Inkrementelle Backups die nur geänderte Dateien übertragen, aber vollständige Snapshot-Verzeichnisse erstellen
Das Geniale an RSnapshot: Obwohl jeder Snapshot wie ein vollständiges Backup aussieht, werden unveränderte Dateien durch Hardlinks referenziert. Ein Hardlink ist dabei ein zusätzlicher Dateiname der auf dieselben Datenblöcke im Dateisystem zeigt – die Datei existiert physisch nur einmal, kann aber unter verschiedenen Namen und Pfaden erreicht werden. Erst wenn eine Datei tatsächlich geändert wird, erstellt RSnapshot eine echte Kopie, während alle anderen „Kopien“ weiterhin als Hardlinks auf die ursprünglichen Daten zeigen. Dadurch benötigt ein neuer Snapshot nur den Speicherplatz der tatsächlich geänderten Dateien.
Installation
Die Installation unter Debian/Ubuntu ist denkbar einfach:
bash
sudo apt-get update
sudo apt-get install rsnapshot
Das Hauptkonfigurationsfile befindet sich unter /etc/rsnapshot.conf. Für mehrere Backup-Jobs können separate Konfigurationsdateien erstellt werden (z.B. /etc/rsnapshot-nextcloud.conf).
Konfiguration
Grundkonfiguration
Hier die wichtigsten Konfigurationsparameter:
bash
# Basis-Verzeichnis für alle Snapshots
snapshot_root /mnt/backup/snapshots/
# WICHTIG: Verhindert Backup-Erstellung wenn Ziel nicht gemountet
no_create_root 1
# Aufbewahrungsrichtlinien - wie lange werden Snapshots aufbewahrt?
retain daily 365 # 365 tägliche Backups (ca. 1 Jahr)
#retain weekly 52 # 52 wöchentliche Backups (1 Jahr)
#retain monthly 12 # 12 monatliche Backups (1 Jahr)
# Logging und Verbosity
verbose 2
loglevel 5
logfile /var/log/rsnapshot.log
# Wiederholung bei SSH-Verbindungsproblemen
rsync_numtries 100
Wichtiger Hinweis zu no_create_root: Diese Option ist essentiell! Ohne sie würde RSnapshot bei nicht-gemounteten Backup-Zielen im lokalen Verzeichnis Backups erstellen – ein häufiger und gefährlicher Fallstrick.
Passwortlose SSH-Authentifizierung für Remote-Backups einrichten
Bevor wir ein automatisiertes Remote-Backup aufsetzen, müssen wir dafür sorgen, dass sich der Backup-Server ohne Passwortabfrage mit dem Zielserver verbinden kann. Dafür richten wir eine passwortlose SSH-Authentifizierung ein.
1. SSH-Konfigurationsdatei anlegen
In der Datei ~/.ssh/config können wir eigene Verbindungsprofile definieren. Das macht den Umgang mit SSH deutlich einfacher, da wir uns nicht jedes Mal IP-Adresse, Port oder Benutzer merken müssen.
Ein Beispiel:
Host phils-pve
HostName 192.168.1.100
User backup-user
Port 22
IdentityFile ~/.ssh/backup_rsa
🔍 Was bedeutet das?
- Host phils-pve
Das ist ein Alias, den wir uns frei aussuchen. Statt jedes Mal die IP-Adresse einzugeben, reicht späterssh phils-pve. - HostName 192.168.1.100
Die tatsächliche IP-Adresse oder Domain des Zielservers. - User backup-user
Der Benutzer, mit dem wir uns am Zielserver anmelden. - Port 22
Standardport für SSH (kann angepasst werden, falls der Server auf einem anderen Port lauscht). - IdentityFile ~/.ssh/backup_rsa
Hier geben wir an, welcher SSH-Schlüssel für die Anmeldung genutzt wird.
2. SSH-Key auf den Zielserver kopieren
Damit wir uns ohne Passwort anmelden können, müssen wir unseren öffentlichen Schlüssel auf den Zielserver übertragen. Das geht mit einem einzigen Befehl:
ssh-copy-id -i ~/.ssh/backup_rsa backup-user@192.168.1.100
Dieser Befehl macht Folgendes:
- Nimmt den öffentlichen Schlüssel (
~/.ssh/backup_rsa.pub). - Meldet sich beim Zielserver (hier:
phils-pve(backup-user@192.168.1.100) an. - Wir können hier noch nicht einfach phils-pve nehmen weil der Key für die Authentifizierung noch nicht am Remote-System vorhanden ist -> daher backup-user@192.168.1.100
- Fügt den Schlüssel in die Datei
~/.ssh/authorized_keysdes Benutzersbackup-userein.
Ab jetzt reicht ein einfaches:
ssh phils-pve
– und die Verbindung wird ohne Passwort aufgebaut, da die Authentifizierung über den privaten Schlüssel auf der Quellmaschine funktioniert.
3. Warum ist das wichtig für Backups?
Automatisierte Backups laufen meist über Cronjobs oder Backup-Skripte. Würde jedes Mal ein Passwort verlangt werden, wäre das unpraktisch oder gar nicht umsetzbar. Mit der Schlüssel-basierten Authentifizierung sorgen wir dafür, dass die Verbindung sicher und ohne Benutzereingriff aufgebaut wird.
Aufbewahrungsrichtlinien verstehen
Die retain-Direktiven definieren, wie viele Snapshots jeder Kategorie aufbewahrt werden:
bash
retain daily 365 # Hält 365 tägliche Snapshots (daily.0 bis daily.364)
retain weekly 52 # Hält 52 wöchentliche Snapshots (weekly.0 bis weekly.51)
retain monthly 12 # Hält 12 monatliche Snapshots (monthly.0 bis monthly.11)
Wichtiges Verhalten:
- Jede Ebene „rotiert“ automatisch – das älteste Backup wird gelöscht wenn die maximale Anzahl erreicht wird
- Higher-Level Snapshots (weekly, monthly) werden aus lower-level Snapshots (daily) erstellt
- Du musst für jede Ebene einen separaten Crontab-Eintrag erstellen
Beispiel einer mehrstufigen Strategie:
- Täglich: Letzte 30 Tage für schnelle Wiederherstellung
- Wöchentlich: Letzte 12 Wochen für mittelfristige Historie
- Monatlich: Letzte 12 Monate für Langzeitarchivierung
bash
# Remote-Backup (SSH-Host aus ~/.ssh/config)
backup phils-pve:/etc/ ./pve/
# Lokales Backup
backup /mnt/nextcloud-backup/next-config/ ./nextcloud/
Wichtig: Die Zielpfade (z.B. ./pve/, ./nextcloud/) sind relativ zum snapshot_root. Das bedeutet, die Backups landen in /mnt/backup/snapshots/pve/ bzw. /mnt/backup/snapshots/nextcloud/.
Crontab-Automation
Automatische Backups werden über Crontab eingerichtet:
bash
# Täglich um 2:00 Uhr
0 2 * * * /usr/bin/rsnapshot -c /etc/rsnapshot-nextcloud.conf daily
# Wöchentlich sonntags um 1:00 Uhr
0 1 * * 0 /usr/bin/rsnapshot -c /etc/rsnapshot-nextcloud.conf weekly
Tipp: Falls die Crontab-Syntax verwirrend ist, hilft crontab.guru beim Verstehen der Zeitangaben.
Backup-Struktur verstehen
RSnapshot erstellt eine klare, chronologische Verzeichnisstruktur:
bash
root@nextbkp:/mnt/rsnapshot-test# ls -la
total 24
drwxr-xr-x 15 root root 15 Jan 25 2025 .
drwxr-xr-x 9 root root 9 Aug 4 22:08 ..
drwxr-xr-x 3 root root 3 Jan 25 2025 daily.0
drwxr-xr-x 3 root root 3 Jan 24 2025 daily.1
drwxr-xr-x 3 root root 3 Jan 15 2025 daily.10
drwxr-xr-x 3 root root 3 Jan 14 2025 daily.11
drwxr-xr-x 3 root root 3 Jan 23 2025 daily.2
drwxr-xr-x 3 root root 3 Jan 22 2025 daily.3
drwxr-xr-x 3 root root 3 Jan 21 2025 daily.4
drwxr-xr-x 3 root root 3 Jan 20 2025 daily.5
drwxr-xr-x 3 root root 3 Jan 19 2025 daily.6
drwxr-xr-x 3 root root 3 Jan 18 2025 daily.7
drwxr-xr-x 3 root root 3 Jan 17 2025 daily.8
drwxr-xr-x 3 root root 3 Jan 16 2025 daily.9
drwxr-xr-x 3 root root 3 Jan 12 2025 weekly.0
Wichtige Regel: daily.0 ist immer das neueste Backup. Bei jedem neuen Backup wird die Nummerierung rotiert (daily.0 → daily.1 → daily.2, usw.).
Konfiguration testen
Vor dem produktiven Einsatz sollte die Konfiguration getestet werden:
bash
# Konfiguration auf Syntax-Fehler prüfen
rsnapshot configtest
# Testlauf ohne tatsächliches Backup (Dry-run)
rsnapshot -t daily
# Mit spezifischer Konfigurationsdatei
rsnapshot -t daily -c /etc/rsnapshot-nextcloud.conf
Der -t Parameter zeigt genau an, welche Befehle ausgeführt würden, ohne sie tatsächlich auszuführen – ideal zum Debuggen und Verifizieren.
Fazit
RSnapshot bietet eine elegante Lösung für das Backup-Problem: Es kombiniert die Einfachheit und Zuverlässigkeit bewährter Unix-Tools mit moderner Effizienz. Durch die Nutzung von Hardlinks entstehen scheinbar vollständige Backups, die aber nur minimal zusätzlichen Speicherplatz benötigen. Die klare Verzeichnisstruktur und die flexible Konfiguration machen RSnapshot zu einem idealen Tool sowohl für kleine Heimserver als auch für größere Infrastrukturen.
Mit der richtigen Konfiguration und regelmäßigen Tests ist RSnapshot ein zuverlässiger Partner für eine solide Backup-Strategie.