Ich betreibe einen kleinen Container-Host auf einem Raspberry Pi. Für ein komplexes Sicherungssystem fehlt mir die Zeit – und ehrlich gesagt auch die Notwendigkeit. Trotzdem möchte ich im Fall eines Hardwaredefekts oder Datenverlustes schnell wieder lauffähig sein. Deshalb habe ich mir ein einfaches, aber durchdachtes Sicherungskonzept überlegt, das ich hier kurz vorstellen möchte.
Was soll gesichert werden?
Grundsätzlich sichere ich nur das, was ich wirklich brauche, um meinen Container-Host innerhalb kurzer Zeit wiederherstellen zu können:
-
Die Konfigurationsdateien meiner Container (z. B.
docker-compose.yml
) -
Die Datenverzeichnisse der Container, die ich per Bind Mounts eingebunden habe
-
Wichtige Konfigurationsdateien auf dem Host (z. B.
/etc
und ausgewählte Inhalte von/home/pi
)
Was sichere ich bewusst nicht?
Ich verzichte bewusst auf die Sicherung des gesamten Betriebssystems oder der Container-Images:
-
Container-Images kann ich jederzeit erneut aus dem Internet beziehen
-
Das Betriebssystem (Raspberry Pi OS) ist schnell neu aufgesetzt
-
Der Rest ist in wenigen Minuten per Backup zurückgespielt
Sicherungsmethode in der Praxis
Ich setze auf eine Kombination aus Transparenz und Einfachheit:
-
Alle Container nutzen Bind Mounts statt Docker Volumes
Vorteil: Ich weiß genau, wo die Daten liegen, und kann sie direkt mit
rsync
oder ähnlichen Tools sichern. -
Regelmäßige Sicherung mit rsync
Ich sichere die Mountpoints und Konfigurationsdateien manuell oder per cronjob auf eine externe Festplatte oder ein Netzlaufwerk.
Kurze Übersicht: Was wird gesichert und wie?
Bereich | Sicherungsmethode |
---|---|
Containerdefinitionen | docker-compose.yml |
Datenvolumen (Bind Mounts) | rsync auf externes Ziel |
Host-Konfiguration | Backup von /etc , /home/pi |
Container-Images | nicht gesichert |
Betriebssystem | nicht gesichert |
Beispiel: Bash-Skript zur Sicherung
Hier ein einfaches Beispiel-Skript zur Sicherung wichtiger Verzeichnisse:
#!/bin/bash
BACKUP_DIR="/mnt/backup/rpi-container"
DATE=$(date +%Y-%m-%d)
DEST="$BACKUP_DIR/$DATE"
mkdir -p "$DEST"
# Docker-Konfigurationen sichern
cp /home/pi/docker-compose.yml "$DEST/"
# Datenverzeichnisse sichern (Beispielpfade anpassen)
rsync -a /srv/container-data/ "$DEST/container-data/"
# Host-Konfiguration sichern
rsync -a /etc/ "$DEST/etc/"
rsync -a /home/pi/ "$DEST/home-pi/" --exclude=.cache
# Alte Backups löschen (älter als 30 Tage)
find "$BACKUP_DIR" -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;
Beispiel: Cron-Job für tägliches Backup um 3 Uhr nachts
Diesen Eintrag kannst du mit crontab -e
hinzufügen:
0 3 * * * /home/pi/backup.sh >> /var/log/backup.log 2>&1
Voraussetzung: Das oben gezeigte Skript liegt unter /home/pi/backup.sh
und ist ausführbar (chmod +x backup.sh
).
Wiederherstellung: So einfach wie möglich
Ziel ist, dass ich im Fehlerfall schnell wieder starten kann:
-
Raspberry Pi neu flashen und Basis-Setup einrichten
-
Konfigurationen zurückspielen
-
Docker installieren und
docker-compose
ausführen
Die Wiederherstellung habe ich bisher noch nicht komplett getestet – das steht demnächst auf meiner Liste.
Fazit
Mein Sicherungskonzept ist einfach, aber effektiv. Es verzichtet bewusst auf Voll-Backups und setzt stattdessen auf Klarheit, Kontrolle und Schnelligkeit. Wer auf seinem Raspberry Pi Container-Hosts betreibt, kann mit wenig Aufwand ein ähnlich schlankes Konzept umsetzen – Hauptsache, man hat überhaupt eines.