Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Projekt: Raspberry PI als Backupserver
In diesem Projekt wird aus einem Raspberry Pi ein zentraler NFS-Backupserver für ein lokales Netzwerk aufgebaut. Ziel ist eine saubere und technisch nachvollziehbare Trennung zwischen einem ausschließlich lesbaren Bereich und einem schreibbaren Datenbereich.
Dabei wird bewusst keine Benutzer-Synchronisation zwischen Client und Server eingesetzt. Stattdessen werden alle Schreibzugriffe serverseitig auf einen definierten Service-User abgebildet. Dadurch bleibt die Client-Konfiguration minimal, konsistent und unabhängig von lokalen UID-Strukturen.
Konzept
Der Server stellt zwei Verzeichnisse bereit:
/srv/nfs/public→ nur lesend (ro)/srv/nfs/data→ lesend + schreibend (rw, Service-User 2000)
Für das Datenverzeichnis wird ein technischer Service-User mit der UID/GID 2000 eingerichtet.
Alle Schreibzugriffe werden mittels all_squash auf diesen Benutzer umgeleitet. Dadurch gehören sämtliche erzeugten Dateien immer demselben Systemkonto – unabhängig davon, welcher Client sie erstellt hat.
Dieses Modell verhindert UID-Konflikte zwischen unterschiedlichen Linux-Systemen im Netzwerk und sorgt für ein eindeutiges Besitzmodell auf dem Server.
Alle schreibenden Zugriffe auf /srv/nfs/data werden serverseitig auf UID/GID 2000 abgebildet (all_squash).
IP gekennzeichnet und muss im Kurs durch die tatsächliche IP-Adresse ersetzt werden.
NFS Server
Im Kurs steht der Server bereits zur Verfügung, sodass es primär darum geht, ihn korrekt einzubinden. Wer einen eigenen NFS-Server aufsetzen möchte, findet hier die vollständige Einrichtung.
NFS Client
Um die Freigaben zu verwenden, wird auf dem Client zunächst das notwendige Paket installiert.
Verfügbare Exports anzeigen
sudo apt install -y nfs-common showmount -e IP
Der Befehl zeigt an, welche Verzeichnisse der Server exportiert.
Manuell Mounten
Für einen ersten Test werden lokale Mountpunkte angelegt und die Freigaben manuell eingebunden.
sudo mkdir -p /mnt/public sudo mkdir -p /mnt/data sudo mount -t nfs -o ro IP:/srv/nfs/public /mnt/public sudo mount -t nfs -o rw,soft,timeo=50,retrans=3 IP:/srv/nfs/data /mnt/data
Das Verzeichnis /mnt/public ist nur lesbar.
Im Verzeichnis /mnt/data können Dateien erzeugt werden, die serverseitig immer UID/GID 2000 gehören.
Automatisch Mounten (/etc/fstab)
Damit der Client auch dann startet, wenn der Server nicht erreichbar ist, erfolgt die Einbindung per systemd-Automount in der /etc/fstab.
IP:/srv/nfs/public /mnt/public nfs ro,_netdev,noatime,x-systemd.automount,nofail 0 0 IP:/srv/nfs/data /mnt/data nfs rw,_netdev,noatime,x-systemd.automount,x-systemd.device-timeout=10s,x-systemd.idle-timeout=600,soft,timeo=50,retrans=3,nofail 0 0 sudo systemctl daemon-reload sudo mount -a
Der Mount erfolgt nun erst beim ersten Zugriff. Ist der Server nicht erreichbar, blockiert der Bootvorgang nicht.
- /srv/nfs/public → nur lesbar für alle Clients
- /srv/nfs/data → schreibbar, serverseitig UID/GID 2000
- Client bootet auch wenn Server offline ist
- Mount erfolgt erst bei Zugriff (automount)
- Keine UID-Anpassung auf Clients erforderlich
Damit steht ein wartungsarmes Backup-System auf Basis eines Raspberry Pi zur Verfügung.
Backup erstellen
Der NFS-Server stellt lediglich den zentralen Speicher bereit.
Die eigentlichen Backups werden auf den Clients erzeugt und anschließend in das Verzeichnis /mnt/data geschrieben.
Im Kurs werden zwei einfache Verfahren verwendet:
scp→ einfache vollständige Kopiersync→ effizientes inkrementelles Backup
Einfache Kopie mit scp
scp -r /home/pi/daten /mnt/data/backup_$(date +%Y-%m-%d)
Es wird ein datumsbasierter Ordner erzeugt. Dieses Verfahren kopiert immer alle Dateien vollständig.
Inkrementelles Backup mit rsync
rsync -a --delete /home/pi/daten/ /mnt/data/backup_aktuell/
Optionen:
-a→ Archivmodus (Rechte, Zeitstempel, Links)–delete→ entfernt Dateien im Ziel, die im Quellverzeichnis nicht mehr existieren
Backupkonzept: Rotation und Automatisierung
Ein Backup ist gut – mehrere Sicherungsstände sind besser. Ein verbreitetes Verfahren ist die Rotation nach dem Round-Robin-Prinzip. Dabei werden mehrere Backup-Ordner zyklisch überschrieben. So stehen mehrere Generationen zur Verfügung, ohne dass der Speicherplatz unbegrenzt wächst.
Damit ein Backup-Konzept zuverlässig funktioniert, muss es außerdem automatisiert werden. Andernfalls wird es im Alltag häufig vergessen. Hierfür verwenden wir cron, ein Standardwerkzeug zur zeitgesteuerten Ausführung von Aufgaben.
Backup-Rotation (Round Robin Prinzip)
Beispiel mit drei Generationen:
#!/bin/bash set -euo pipefail TARGET="/mnt/data" SOURCE="/home/pi/daten" rm -rf "$TARGET/backup_3" [ -d "$TARGET/backup_2" ] && mv "$TARGET/backup_2" "$TARGET/backup_3" || true [ -d "$TARGET/backup_1" ] && mv "$TARGET/backup_1" "$TARGET/backup_2" || true rsync -a --delete "$SOURCE/" "$TARGET/backup_1/"
Ergebnis:
backup_1→ aktuelles Backupbackup_2→ vorherige Versionbackup_3→ ältere Version
Bei jedem Lauf wird die älteste Version gelöscht und die anderen rücken nach.
Automatische Ausführung mit cron
Skript speichern, z.B. als /home/pi/backup.sh:
chmod +x /home/pi/backup.sh
Crontab öffnen:
crontab -e
Beispiel: tägliches Backup um 22:00 Uhr:
0 22 * * * /home/pi/backup.sh
Damit wird das Rotationsskript jeden Tag automatisch gestartet.
- Backups werden vom Client erzeugt
- Speicherung erfolgt zentral auf dem NFS-Server
- Mehrere Sicherungsstände durch Rotation
- Automatische Ausführung über cron
- Keine zusätzliche Backup-Software erforderlich


