Einführung
Du bist der „Backup-Wächter“, der neu ernannte Systemadministrator eines vielversprechenden Tech-Startups. Ein kürzlich aufgetretener, kleiner Stromstoß verursachte einen Serverfehler, der kurzzeitig eine unkritische Log-Datei beschädigte. Obwohl diesmal keine wichtigen Daten verloren gingen, war es ein ernsthafter Weckruf.
Der CTO hat dich persönlich mit einer geschäftskritischen Mission betraut: Implementiere eine robuste Backup- und Wiederherstellungsstrategie für den Hauptanwendungsserver des Unternehmens – und zwar heute. Die Integrität der Benutzerdaten, Anwendungskonfigurationen und lebenswichtigen Protokolle liegt nun in deinen Händen.
Dies ist dein Moment, um zu glänzen. Indem du den Backup-Prozess erfolgreich erstellst, verifizierst und automatisierst, sicherst du nicht nur das wertvollste Gut des Unternehmens – seine Daten –, sondern beweist dich auch als unverzichtbarer Hüter der digitalen Infrastruktur. Das System ist live, die Uhr tickt. An die Arbeit!
- Überspringe die Herausforderung vorübergehend und fahre mit den nachfolgenden Guided Labs im Linux-Lernpfad fort.
- Diskutiere mit Labby oder sieh dir die Lösung an.
Identifizierung kritischer Daten für das Backup
Bevor du ein Backup erstellst, musst du zunächst festlegen, welche Daten kritisch sind. Ein vollständiges System-Backup ist oft unpraktisch. Für unseren Anwendungsserver befinden sich die wichtigsten Ressourcen in den Verzeichnissen data, config und logs.
Um unseren Backup-Prozess sauber und übersichtlich zu gestalten, erstellen wir eine Datei, die alle Verzeichnisse auflistet, die wir sichern möchten. Diese Liste dient als Manifest für unser Backup-Skript.
Aufgaben
- Erstelle eine Datei namens
backup-list.txtim Verzeichnis~/project. - Diese Datei soll die relativen Pfade zu den drei kritischen Verzeichnissen enthalten, wobei jeder Pfad in einer neuen Zeile steht.
Anforderungen
- Die Datei muss exakt
backup-list.txtheißen. - Die Datei muss sich im Verzeichnis
~/projectbefinden. - Die Datei muss die folgenden drei Einträge enthalten, jeweils in einer eigenen Zeile:
dataconfiglogs
Beispiele
Nachdem du die Datei backup-list.txt erstellt hast, sollte dein Projektverzeichnis die neue Manifest-Datei neben den bestehenden Verzeichnissen enthalten:
~/project/
├── backup-list.txt
├── backups/
├── config/
├── data/
└── logs/
Wenn du cat backup-list.txt ausführst, solltest du die drei aufgelisteten kritischen Verzeichnisse sehen:
data
config
logs
Hinweise
- Du kannst einen Texteditor wie
nanoverwenden, um die Datei zu erstellen und zu bearbeiten. - Alternativ kannst du den Befehl
echomit einer Ausgabeumleitung (>) verwenden, um die Datei zu erstellen, und>>, um Zeilen anzuhängen.
Erstellung eines vollständigen System-Backup-Archivs
Da die Liste der kritischen Verzeichnisse nun bereitsteht, ist es an der Zeit, das Backup-Archiv zu erstellen. Das Standard-Linux-Werkzeug für diese Aufgabe ist tar (Tape Archive). Es kann mehrere Dateien und Verzeichnisse in einer einzigen Datei bündeln. Wir werden das Archiv zusätzlich mit gzip komprimieren, um Speicherplatz zu sparen.
Aufgaben
- Verwende den Befehl
tar, um ein komprimiertes Backup-Archiv zu erstellen. - Das Archiv soll
system-backup.tar.gzheißen. - Das Archiv muss im Verzeichnis
~/project/backups/abgelegt werden. - Der Inhalt des Archivs soll durch die Datei
backup-list.txtbestimmt werden, die du im vorherigen Schritt erstellt hast.
Anforderungen
- Das fertige Archiv muss sich unter
~/project/backups/system-backup.tar.gzbefinden. - Du musst den Befehl
tarverwenden. - Du musst die Option
-Tbeitarverwenden, um die Liste der Dateien/Verzeichnisse ausbackup-list.txtzu lesen. - Das Archiv muss mit
gzipkomprimiert werden (verwende die Optionzintar).
Beispiele
Nach der Erstellung des Backup-Archivs sollte dein backups-Verzeichnis das neue komprimierte Archiv enthalten:
~/project/backups/
└── system-backup.tar.gz
Wenn du ls -lh ~/project/backups/ ausführst, solltest du die Archivdatei mit ihrer Größe sehen:
-rw-rw-r-- 1 labex labex 1.2K Sep 11 15:08 system-backup.tar.gz
Hinweise
- Die gängigen Optionen zum Erstellen eines komprimierten Archivs mit
tarsindc(create/erstellen),z(mit gzip komprimieren),v(verbose/ausführlich, um den Fortschritt zu sehen) undf(filename/Dateiname angeben). - Die Option
-Tweisttaran, die Namen der zu archivierenden Dateien aus der folgenden Datei zu beziehen, anstatt über die Befehlszeile. - Die Befehlsstruktur sieht in etwa so aus:
tar -czvf [archiv_name] -T [listen_datei].
Verifizierung der Backup-Integrität
Ein Backup ist nutzlos, wenn es beschädigt oder unvollständig ist. Ein entscheidender Schritt in jeder Backup-Strategie ist die Verifizierung. Du musst sicherstellen, dass das von dir erstellte Archiv alle beabsichtigten Dateien enthält und lesbar ist.
Aufgaben
- Verwende den Befehl
tar, um den Inhalt des Archivssystem-backup.tar.gzaufzulisten, ohne es zu entpacken. - Leite die Ausgabe dieses Befehls in eine neue Datei namens
backup-contents.txtim Verzeichnis~/projectum.
Anforderungen
- Du musst eine Datei namens
backup-contents.txtin~/projecterstellen. - Diese Datei muss die Liste aller im Archiv
system-backup.tar.gzgespeicherten Dateien und Verzeichnisse enthalten. - Entpacke die Dateien nicht; liste sie nur auf.
Beispiele
Nachdem du die Verifizierungsdatei erstellt hast, sollte dein Projektverzeichnis die neue Datei backup-contents.txt enthalten:
~/project/
├── backup-contents.txt
├── backup-list.txt
├── backups/
├── config/
├── data/
└── logs/
Wenn du cat backup-contents.txt ausführst, solltest du eine detaillierte Auflistung aller Dateien im Archiv sehen:
drwxrwxr-x labex/labex 0 2025-09-11 15:08 data/
-rw-rw-r-- labex/labex 46 2025-09-11 15:08 data/transactions.csv
drwxrwxr-x labex/labex 0 2025-09-11 15:08 config/
-rw-rw-r-- labex/labex 72 2025-09-11 15:08 config/app.conf
drwxrwxr-x labex/labex 0 2025-09-11 15:08 logs/
-rw-rw-r-- labex/labex 49 2025-09-11 15:08 logs/app.log
Hinweise
- Der Befehl
tarhat eine Option zum Auflisten (t) des Inhalts eines Archivs. - Kombiniere die Option
tmitz(für gzip),v(für eine detaillierte Liste) undf(um die Datei anzugeben). - Verwende den Ausgabeumleitungs-Operator
>, um die Ausgabe des Befehls in einer Datei zu speichern.
Wiederherstellung von Dateien aus einem Backup
Die Katastrophe tritt ein! Ein Junior-Entwickler hat beim Versuch, Speicherplatz freizugeben, versehentlich die Hauptkonfigurationsdatei der Anwendung, app.conf, gelöscht. Die Anwendung ist nun offline. Es liegt an dir, dem Backup-Wächter, diese kritische Datei aus deinem Backup wiederherzustellen und den Tag zu retten.
Aufgaben
- Simuliere zunächst den Unfall, indem du die Datei
config/app.conflöschst. - Verwende dann den Befehl
tar, um nur die Dateiconfig/app.confaus deinem Archivsystem-backup.tar.gzwiederherzustellen. Die Datei soll an ihrem ursprünglichen Speicherort wiederhergestellt werden.
Anforderungen
- Die Datei
~/project/config/app.confmuss nach Abschluss der Aufgabe vorhanden sein. - Du darfst nur die einzelne Datei
config/app.confextrahieren, nicht das gesamte Archiv.
Beispiele
Nach der Wiederherstellung der Datei app.conf sollte dein config-Verzeichnis die wiederhergestellte Datei enthalten:
~/project/config/
├── app.conf
└── ...
Wenn du ls -l ~/project/config/app.conf ausführst, solltest du die wiederhergestellte Datei sehen:
-rw-rw-r-- 1 labex labex 72 Sep 11 15:08 /home/labex/project/config/app.conf
Du kannst überprüfen, ob der Dateiinhalt korrekt ist, indem du sicherstellst, dass er die erwarteten Konfigurationen enthält:
## Dies sollte die Datenbank- und API-Schlüssel-Einstellungen zeigen
cat ~/project/config/app.conf
Hinweise
- Der Befehl
rmwird zum Löschen von Dateien verwendet. - Der Befehl
tarverwendet die Optionx(extract), um Dateien zu extrahieren. - Um eine bestimmte Datei zu extrahieren, kannst du deren Pfad (so wie er im Archiv erscheint) am Ende des Befehls
tar -xhinzufügen. - Der vollständige Pfad zur Datei innerhalb des Archivs lautet
config/app.conf.
Planung automatisierter Backup-Aufgaben
Du hast den Tag gerettet, aber die Arbeit eines Helden ist nie getan. Sich auf manuelle Backups zu verlassen, ist riskant. Der letzte Schritt besteht darin, den Prozess zu automatisieren, sodass Backups regelmäßig ohne menschliches Zutun erstellt werden. Hierfür verwenden wir cron, den Standard-Task-Planer unter Linux.
Aufgaben
- Erstelle einen Cron-Job, der automatisch einen Backup-Befehl ausführt.
- Der Job soll jede Minute laufen (für die Zwecke dieser Herausforderung).
- Der Befehl soll ein neues, komprimiertes
tar-Archiv im Verzeichnis~/project/backups/erstellen. - Um ein Überschreiben zu verhindern, muss jede neue Backup-Datei einen eindeutigen Namen haben, der einen Zeitstempel enthält (z. B.
backup-2023-10-27_15-30-00.tar.gz).
Anforderungen
- Du musst
crontab -everwenden, um deine Cron-Jobs zu bearbeiten. - Der Cron-Zeitplan muss
* * * * *sein, um jede Minute zu laufen. - Der Backup-Befehl innerhalb des Cron-Jobs muss absolute Pfade für das Ausgabeverzeichnis und die Quellverzeichnisse verwenden (z. B.
/home/labex/project/backups). - Der Backup-Dateiname muss einen Zeitstempel enthalten.
Beispiele
Nachdem du den Cron-Job eingerichtet hast, kannst du die Funktion überprüfen, indem du deine Crontab kontrollierst und darauf wartest, dass automatische Backups erscheinen. Wenn du crontab -l ausführst, solltest du deinen neuen Backup-Job sehen:
## Beispielausgabe (dein genauer Befehl kann variieren)
* * * * * tar -czf /home/labex/project/backups/backup-$(date +\%Y-\%m-\%d_\%H-\%M-\%S).tar.gz -C /home/labex/project data config logs
Nach ein oder zwei Minuten sollte dein backups-Verzeichnis anfangen, Backup-Dateien mit Zeitstempel anzuzeigen:
~/project/backups/
├── backup-2025-09-11_15-30-00.tar.gz
├── backup-2025-09-11_15-31-00.tar.gz
├── backup-2025-09-11_15-32-00.tar.gz
└── system-backup.tar.gz
Hinweise
- Führe
crontab -eaus, um den Cron-Job-Editor zu öffnen. Falls du nach einem Editor gefragt wirst, istnanoeine gute Wahl. - Das Format für einen Cron-Job ist:
[Minute] [Stunde] [Tag_des_Monats] [Monat] [Wochentag] [Befehl].* * * * *bedeutet jede Minute jeder Stunde jedes Tages. - Du kannst den Befehl
dateverwenden, um einen Zeitstempel zu generieren. Zum Beispiel erzeugtdate +%Y-%m-%d_%H-%M-%Sein Format wie2023-10-27_15-30-00. - Um die Ausgabe eines Befehls innerhalb eines anderen Befehls zu verwenden, nutze
$(befehl). - Wichtig: In einer Crontab hat das Prozentzeichen (
%) eine Sonderbedeutung (es wird als Zeilenumbruch behandelt). Du musst es mit einem Backslash (\%) maskieren, wenn du es mit demdate-Befehl verwendest. - Dein endgültiger Befehl in der Crontab könnte so aussehen:
* * * * * tar -czf /pfad/zu/backup-$(date +\%F_\%T).tar.gz -C /pfad/zu/quelle verz1 verz2
Zusammenfassung
Herzlichen Glückwunsch, Wächter! Du hast erfolgreich eine vollständige, automatisierte Backup- und Wiederherstellungsstrategie entworfen und implementiert. Die Daten des Unternehmens sind dank deiner Sorgfalt und deines Geschicks nun sicher. Du hast nicht nur eine potenzielle Krise abgewendet, sondern auch ein System etabliert, das das Unternehmen in Zukunft schützen wird.
In dieser Herausforderung hast du mehrere grundlegende Fähigkeiten der Systemadministration gemeistert:
- Identifizierung kritischer Daten: Genau bestimmen, was gesichert werden muss.
- Erstellung von Archiven: Verwendung des
tar-Befehls zur Erstellung komprimierter Backups. - Verifizierung der Integrität: Sicherstellen, dass Backups gültig und vollständig sind.
- Durchführung von Wiederherstellungen: Extrahieren spezifischer Dateien zur Behebung von Datenverlusten.
- Automatisierung von Aufgaben: Planung von Cron-Jobs für regelmäßige, unbeaufsichtigte Backups.
Dies sind essenzielle, praxisnahe Fähigkeiten für jeden Linux-Systemadministrator, Entwickler oder DevOps-Ingenieur. Du hast bewiesen, dass du das Zeug dazu hast, ein zuverlässiger Hüter kritischer Systeme zu sein.



