project:backup
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| project:backup [2026/03/03 09:40] – torsten.roehl | project:backup [2026/03/03 16:06] (aktuell) – [Backup-Rotation (Round Robin Prinzip)] torsten.roehl | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Projekt: Raspberry PI als Backupserver ====== | ====== Projekt: Raspberry PI als Backupserver ====== | ||
| - | |||
| [[raspberry_pi: | [[raspberry_pi: | ||
| - | //In diesem Projekt | + | //In diesem Projekt |
| - | + | Dabei wird bewusst **keine Benutzer-Synchronisation | |
| - | Dabei wird __bewusst kein__ Benutzerabgleich | + | |
| - | + | ||
| - | + | ||
| - | ===== Konzept ===== | + | |
| + | ====== Konzept ====== | ||
| Der Server stellt zwei Verzeichnisse bereit: | Der Server stellt zwei Verzeichnisse bereit: | ||
| - | * /'' | + | * '' |
| * ''/ | * ''/ | ||
| - | Für das Datenverzeichnis wird ein technischer Service-User mit der '' | + | {{ : |
| + | |||
| + | Für das Datenverzeichnis wird ein technischer Service-User mit der '' | ||
| Alle Schreibzugriffe werden mittels '' | Alle Schreibzugriffe werden mittels '' | ||
| - | Dieses Modell verhindert UID-Konflikte zwischen unterschiedlichen Systemen im Netzwerk. | + | Dieses Modell verhindert UID-Konflikte zwischen unterschiedlichen |
| + | Alle schreibenden Zugriffe auf ''/ | ||
| - | Alle schreibenden Zugriffe auf ''/ | + | <note important> |
| - | auf '' | + | **SERVER** |
| + | Die IP-Adresse des Servers wird hier mit '' | ||
| + | </ | ||
| + | ====== NFS Server ====== | ||
| - | ===== NFS SERVER ===== | + | Im Kurs steht der Server bereits zur Verfügung, sodass es primär darum geht, ihn korrekt einzubinden. |
| + | Wer einen eigenen | ||
| + | ++++ Einrichtung Server | | ||
| <code bash> | <code bash> | ||
| sudo apt update | sudo apt update | ||
| Zeile 46: | Zeile 50: | ||
| sudo chown -R 2000:2000 / | sudo chown -R 2000:2000 / | ||
| sudo chmod -R 2775 / | sudo chmod -R 2775 / | ||
| - | |||
| # ================================ | # ================================ | ||
| Zeile 54: | Zeile 57: | ||
| / | / | ||
| / | / | ||
| - | |||
| # anwenden | # anwenden | ||
| Zeile 65: | Zeile 67: | ||
| </ | </ | ||
| + | Nach dem Neustart des Dienstes stellt der **Raspberry Pi** beide Verzeichnisse im Netzwerk bereit. | ||
| + | Das öffentliche Verzeichnis ist ausschließlich lesbar, während im Datenverzeichnis alle Schreibzugriffe auf den Service-User 2000 abgebildet werden. | ||
| + | ++++ | ||
| + | ====== NFS Client ====== | ||
| - | ===== NFS CLIENT ===== | + | Um die Freigaben zu verwenden, wird auf dem Client zunächst das notwendige Paket installiert. |
| - | ==== Verfügbare Exports anzeigen ==== | + | ===== Verfügbare Exports anzeigen |
| <code bash> | <code bash> | ||
| Zeile 76: | Zeile 82: | ||
| </ | </ | ||
| + | Der Befehl zeigt an, welche Verzeichnisse der Server exportiert. | ||
| - | ==== Manuell Mounten ==== | + | ===== Manuell Mounten ===== |
| + | |||
| + | Für einen ersten Test werden lokale Mountpunkte angelegt und die Freigaben manuell eingebunden. | ||
| <code bash> | <code bash> | ||
| Zeile 87: | Zeile 96: | ||
| </ | </ | ||
| + | Das Verzeichnis ''/ | ||
| + | Im Verzeichnis ''/ | ||
| - | ==== Automatisch Mounten (/ | + | ===== Automatisch Mounten (/ |
| + | |||
| + | Damit der Client auch dann startet, wenn der Server nicht erreichbar ist, erfolgt die Einbindung per systemd-Automount in der ''/ | ||
| <code bash> | <code bash> | ||
| Zeile 98: | Zeile 111: | ||
| </ | </ | ||
| + | Der Mount erfolgt nun erst beim ersten Zugriff. | ||
| + | Ist der Server nicht erreichbar, blockiert der Bootvorgang nicht. | ||
| - | ===== Ergebnis | + | < |
| * / | * / | ||
| Zeile 106: | Zeile 121: | ||
| * Mount erfolgt erst bei Zugriff (automount) | * Mount erfolgt erst bei Zugriff (automount) | ||
| * Keine UID-Anpassung auf Clients erforderlich | * 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 ''/ | ||
| + | |||
| + | Im Kurs werden zwei einfache Verfahren verwendet: | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | ===== Einfache Kopie mit scp ===== | ||
| + | |||
| + | <code bash> | ||
| + | core) torsten@hiketas: | ||
| + | 2026-03-03_11-50-46 | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | scp -r / | ||
| + | </ | ||
| + | |||
| + | Es wird ein datumsbasierter Ordner erzeugt. | ||
| + | Dieses Verfahren kopiert immer alle Dateien vollständig. | ||
| + | |||
| + | |||
| + | < | ||
| + | ===== Inkrementelles Backup mit rsync ===== | ||
| + | |||
| + | <code bash> | ||
| + | rsync -a --delete / | ||
| + | </ | ||
| + | |||
| + | Optionen: | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | ====== Backupkonzept: | ||
| + | |||
| + | 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, | ||
| + | |||
| + | ===== Backup-Rotation (Round Robin Prinzip) ===== | ||
| + | Beispiel mit **drei Generationen**: | ||
| + | |||
| + | |||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | set -euo pipefail | ||
| + | |||
| + | TARGET="/ | ||
| + | SOURCE="/ | ||
| + | |||
| + | rm -rf " | ||
| + | [ -d " | ||
| + | [ -d " | ||
| + | |||
| + | rsync -a --delete " | ||
| + | </ | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | < | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | 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 ''/ | ||
| + | |||
| + | <code bash> | ||
| + | chmod +x / | ||
| + | </ | ||
| + | |||
| + | Crontab öffnen: | ||
| + | |||
| + | <code bash> | ||
| + | crontab -e | ||
| + | </ | ||
| + | |||
| + | Beispiel: tägliches Backup um 22:00 Uhr: | ||
| + | |||
| + | <code bash> | ||
| + | 0 22 * * * / | ||
| + | </ | ||
| + | |||
| + | Damit wird das Rotationsskript jeden Tag automatisch gestartet. | ||
| + | |||
| + | < | ||
| + | **Ergebnis** | ||
| + | |||
| + | * 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 | ||
| + | </ | ||
project/backup.1772530847.txt.gz · Zuletzt geändert: von torsten.roehl
