Benutzer-Werkzeuge

Webseiten-Werkzeuge


project:backup

Dies ist eine alte Version des Dokuments!


Projekt: Raspberry PI als Backupserver

☚ zurück - Einstiegskurs

In diesem Projekt bauen wir aus einem Raspberry Pi einen einfachen, aber sauberen NFS-Backupserver für ein lokales Netzwerk. Ziel ist es, eine klare Trennung zwischen einem öffentlichen, nur lesbaren Bereich und einem schreibbaren Datenbereich umzusetzen. Dabei wird bewusst kein Benutzerabgleich zwischen Client und Server verwendet. Stattdessen werden alle schreibenden Zugriffe serverseitig auf einen definierten Service-User abgebildet. Dadurch bleibt die Konfiguration auf den Clients einfach und konsistent.

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 Systemen im Netzwerk.

Alle schreibenden Zugriffe auf /srv/nfs/data werden serverseitig auf UID/GID 2000 abgebildet (all_squash).

NFS SERVER

sudo apt update
sudo apt install -y nfs-kernel-server
 
# Service-User für schreibendes Share
sudo groupadd -g 2000 nfsdata
sudo useradd -u 2000 -g 2000 -M -r nfsdata
 
# Verzeichnisse anlegen
sudo mkdir -p /srv/nfs/public
sudo mkdir -p /srv/nfs/data
 
# Rechte setzen
sudo chown -R root:root /srv/nfs/public
sudo chmod -R 755 /srv/nfs/public
 
sudo chown -R 2000:2000 /srv/nfs/data
sudo chmod -R 2775 /srv/nfs/data
 
 
# ================================
# /etc/exports
# ================================
 
/srv/nfs/public  IP/24(ro,sync,no_subtree_check,root_squash)
/srv/nfs/data    IP/24(rw,sync,no_subtree_check,all_squash,root_squash,anonuid=2000,anongid=2000)
 
 
# anwenden
sudo exportfs -ra
sudo systemctl restart nfs-kernel-server
sudo systemctl enable nfs-kernel-server
 
# prüfen
sudo exportfs -v

NFS CLIENT

Verfügbare Exports anzeigen

sudo apt install -y nfs-common
showmount -e IP

Manuell Mounten

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

Automatisch Mounten (/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

Ergebnis

  • /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
project/backup.1772530705.txt.gz · Zuletzt geändert: von torsten.roehl