Einführung
Du bist der „Backup-Wächter“, der neu ernannte Systemadministrator eines vielversprechenden Tech-Startups. Ein kürzlicher, kleinerer Stromstoß verursachte eine Serverstörung, die kurzzeitig eine nicht kritische Protokolldatei beschädigte. Obwohl diesmal keine wichtigen Daten verloren gingen, war es ein ernster Weckruf.
Der CTO hat dir persönlich eine kritische Mission übertragen: Implementiere eine robuste Backup- und Wiederherstellungsstrategie für den Hauptanwendungsserver des Unternehmens – und zwar heute. Die Integrität von Benutzerdaten, Anwendungskonfigurationen und wichtigen Protokollen liegt nun in deinen Händen.
Dies ist dein Moment zu glänzen. Indem du den Backup-Prozess erfolgreich erstellst, überprüfst und automatisierst, schützt du nicht nur das wertvollste Gut des Unternehmens – seine Daten –, sondern beweist dich auch als unverzichtbarer Wächter seiner digitalen Infrastruktur. Das System läuft, die Uhr tickt. Fangen wir an.
- Überspringe die Challenge vorübergehend und fahre mit den nachfolgenden geführten Labs im Linux-Lernpfad fort.
- Diskutiere mit Labby oder schau dir die Lösung an.
Identifizierung kritischer Daten für das Backup
Bevor du ein Backup erstellst, besteht deine erste Aufgabe darin, zu identifizieren, welche Daten kritisch sind. Ein vollständiges System-Backup ist oft unpraktisch. Für unseren Anwendungsserver befinden sich die wichtigsten Assets in den Verzeichnissen data, config und logs.
Um unseren Backup-Prozess sauber und überschaubar zu halten, 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 sollte 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 kritischen Verzeichnisse aufgelistet sehen:
data
config
logs
Tipps
- Du kannst einen Texteditor wie
nanoverwenden, um die Datei zu erstellen und zu bearbeiten. - Alternativ kannst du den
echo-Befehl mit Ausgabeumleitung (>) verwenden, um die Datei zu erstellen, und>>, um Zeilen anzuhängen.
Erstellen eines vollständigen System-Backup-Archivs
Nachdem die Liste der kritischen Verzeichnisse bereit ist, ist es an der Zeit, das Backup-Archiv zu erstellen. Das Standard-Linux-Tool für diese Aufgabe ist tar (Tape Archive). Es kann mehrere Dateien und Verzeichnisse in einer einzigen Datei bündeln. Wir werden das Archiv außerdem mit gzip komprimieren, um Platz zu sparen.
Aufgaben
- Verwende den
tar-Befehl, um ein komprimiertes Backup-Archiv zu erstellen. - Das Archiv sollte
system-backup.tar.gzheißen. - Das Archiv muss im Verzeichnis
~/project/backups/abgelegt werden. - Der Inhalt des Archivs sollte durch die Datei
backup-list.txtbestimmt werden, die du im vorherigen Schritt erstellt hast.
Anforderungen
- Das finale Archiv muss sich unter
~/project/backups/system-backup.tar.gzbefinden. - Du musst den
tar-Befehl verwenden. - Du musst die Option
-Tmittarverwenden, um die Liste der Dateien/Verzeichnisse ausbackup-list.txtzu lesen. - Das Archiv muss mit
gzipkomprimiert werden (verwende die Optionzintar).
Beispiele
Nach dem Erstellen 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
Tipps
- Die gängigen Optionen zum Erstellen eines komprimierten Archivs mit
tarsindc(create),z(compress with gzip),v(verbose, um den Fortschritt zu sehen) undf(Dateinamen angeben). - Die Option
-Tweisttaran, die Namen der zu archivierenden Dateien aus der folgenden Datei zu lesen, anstatt von der Befehlszeile. - Die Befehlsstruktur sieht in etwa so aus:
tar -czvf [archive_name] -T [list_file].
Überprüfung 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 Überprüfung. Du musst sicherstellen, dass das von dir erstellte Archiv alle beabsichtigten Dateien enthält und lesbar ist.
Aufgaben
- Verwende den
tar-Befehl, 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 Dateien und Verzeichnisse enthalten, die in
system-backup.tar.gzgespeichert sind. - Entpacke die Dateien nicht; liste sie nur auf.
Beispiele
Nach dem Erstellen der Überprüfungsdatei 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
Tipps
- Der
tar-Befehl hat 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 Ausgabeumleitungsoperator
>, um die Ausgabe des Befehls in einer Datei zu speichern.
Wiederherstellen von Dateien aus einem Backup
Die Katastrophe schlägt zu! Ein Junior-Entwickler hat versehentlich die Hauptkonfigurationsdatei der Anwendung, app.conf, gelöscht, während er versuchte, etwas Speicherplatz freizugeben. Die Anwendung ist nun ausgefallen. Es liegt an dir, dem Backup-Wächter, diese kritische Datei aus deinem Backup wiederherzustellen und den Tag zu retten.
Aufgaben
- Simuliere zuerst den Unfall, indem du die Datei
config/app.conflöschst. - Verwende dann den
tar-Befehl, um nur die Dateiconfig/app.confaus deinem Archivsystem-backup.tar.gzwiederherzustellen. Die Datei sollte an ihrem ursprünglichen Speicherort wiederhergestellt werden.
Anforderungen
- Die Datei
~/project/config/app.confmuss vorhanden sein, nachdem du die Aufgabe abgeschlossen hast. - Du musst nur die einzelne Datei
config/app.confextrahieren, nicht das gesamte Archiv.
Beispiele
Nach dem Wiederherstellen 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 prüfst, ob er die erwartete Konfiguration enthält:
## Dies sollte die Datenbank- und API-Schlüssel-Einstellungen anzeigen
cat ~/project/config/app.conf
Tipps
- Der
rm-Befehl wird verwendet, um Dateien zu löschen. - Der
tar-Befehl verwendet die Optionx, um Dateien zu extrahieren. - Um eine bestimmte Datei zu extrahieren, kannst du ihren Pfad (so wie er im Archiv erscheint) an das Ende des
tar -x-Befehls anhängen. - Der vollständige Pfad zur Datei innerhalb des Archivs lautet
config/app.conf.
Automatisierte Backup-Aufgaben planen
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, damit Backups regelmäßig ohne menschliches Eingreifen erstellt werden. Dafür verwenden wir cron, den Standard-Linux-Taskplaner.
Aufgaben
- Erstelle einen Cron-Job, der automatisch einen Backup-Befehl ausführt.
- Der Job sollte jede Minute ausgeführt werden (für die Zwecke dieser Challenge).
- Der Befehl sollte 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 ausgeführt zu werden. - 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
Nach dem Einrichten des Cron-Jobs kannst du überprüfen, ob er funktioniert, indem du deine Crontab überprüfst 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 einer Minute oder zwei sollte dein backups-Verzeichnis anfangen, zeitgestempelte Backup-Dateien 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
Tipps
- Führe
crontab -eaus, um den Cron-Job-Editor zu öffnen. Möglicherweise wirst du aufgefordert, einen Editor auszuwählen;nanoist eine 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
date-Befehl verwenden, 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, verwende
$(command). - Wichtig: In einer Crontab hat das Prozentzeichen (
%) eine besondere Bedeutung (es wird als Zeilenumbruch behandelt). Du musst es mit einem Backslash (\%) maskieren, wenn du es mit demdate-Befehl verwendest. - Dein finaler Befehl in der Crontab könnte so aussehen:
* * * * * tar -czf /path/to/backup-$(date +\%F_\%T).tar.gz -C /path/to/source dir1 dir2
Zusammenfassung
Herzlichen Glückwunsch, Wächter! Du hast erfolgreich eine vollständige, automatisierte Backup- und Wiederherstellungsstrategie entworfen und implementiert. Die Daten des Unternehmens sind nun dank deines Fleißes und Könnens sicher. Du hast nicht nur eine potenzielle Krise abgewendet, sondern auch ein System etabliert, das das Unternehmen für die Zukunft schützt.
In dieser Challenge hast du mehrere grundlegende Systemadministrations-Fähigkeiten gemeistert:
- Identifizierung kritischer Daten: Genau bestimmen, was gesichert werden muss.
- Erstellen von Archiven: Den
tar-Befehl verwenden, um komprimierte Backups zu erstellen. - Überprüfung der Integrität: Sicherstellen, dass Backups gültig und vollständig sind.
- Durchführen von Wiederherstellungen: Spezifische Dateien extrahieren, um Datenverlust zu beheben.
- Automatisieren von Aufgaben: Cron-Jobs für regelmäßige, unbeaufsichtigte Backups planen.
Dies sind wesentliche, praxisnahe Fähigkeiten für jeden Linux-Systemadministrator, Entwickler oder DevOps-Ingenieur. Du hast bewiesen, dass du das Zeug dazu hast, ein zuverlässiger Wächter kritischer Systeme zu sein.



