TAG 09: Der Backup-Wächter

LinuxBeginner
Jetzt üben

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.

Wichtiger Hinweis
Die kommenden Challenges könnten den Umfang des Kurses Quick Start with Linux überschreiten.
Falls du während der Challenge auf Schwierigkeiten stößt:
  1. Überspringe die Challenge vorübergehend und fahre mit den nachfolgenden geführten Labs im Linux-Lernpfad fort.
  2. 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.txt im 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.txt heißen.
  • Die Datei muss sich im Verzeichnis ~/project befinden.
  • Die Datei muss die folgenden drei Einträge enthalten, jeweils in einer eigenen Zeile:
    • data
    • config
    • logs

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 nano verwenden, 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.gz heißen.
  • Das Archiv muss im Verzeichnis ~/project/backups/ abgelegt werden.
  • Der Inhalt des Archivs sollte durch die Datei backup-list.txt bestimmt werden, die du im vorherigen Schritt erstellt hast.

Anforderungen

  • Das finale Archiv muss sich unter ~/project/backups/system-backup.tar.gz befinden.
  • Du musst den tar-Befehl verwenden.
  • Du musst die Option -T mit tar verwenden, um die Liste der Dateien/Verzeichnisse aus backup-list.txt zu lesen.
  • Das Archiv muss mit gzip komprimiert werden (verwende die Option z in tar).

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 tar sind c (create), z (compress with gzip), v (verbose, um den Fortschritt zu sehen) und f (Dateinamen angeben).
  • Die Option -T weist tar an, 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 Archivs system-backup.tar.gz aufzulisten, ohne es zu entpacken.
  • Leite die Ausgabe dieses Befehls in eine neue Datei namens backup-contents.txt im Verzeichnis ~/project um.

Anforderungen

  • Du musst eine Datei namens backup-contents.txt in ~/project erstellen.
  • Diese Datei muss die Liste aller Dateien und Verzeichnisse enthalten, die in system-backup.tar.gz gespeichert 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 t mit z (für gzip), v (für eine detaillierte Liste) und f (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

  1. Simuliere zuerst den Unfall, indem du die Datei config/app.conf löschst.
  2. Verwende dann den tar-Befehl, um nur die Datei config/app.conf aus deinem Archiv system-backup.tar.gz wiederherzustellen. Die Datei sollte an ihrem ursprünglichen Speicherort wiederhergestellt werden.

Anforderungen

  • Die Datei ~/project/config/app.conf muss vorhanden sein, nachdem du die Aufgabe abgeschlossen hast.
  • Du musst nur die einzelne Datei config/app.conf extrahieren, 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 Option x, 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 -e verwenden, 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 -e aus, um den Cron-Job-Editor zu öffnen. Möglicherweise wirst du aufgefordert, einen Editor auszuwählen; nano ist 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 erzeugt date +%Y-%m-%d_%H-%M-%S ein Format wie 2023-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 dem date-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.

✨ Lösung prüfen und üben✨ Lösung prüfen und üben✨ Lösung prüfen und üben✨ Lösung prüfen und üben✨ Lösung prüfen und üben