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ü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!

Wichtiger Hinweis
Die folgenden Aufgaben können über den Umfang des Kurses Quick Start with Linux hinausgehen.
Falls du während der Herausforderung auf Schwierigkeiten stößt:
  1. Überspringe die Herausforderung vorübergehend und fahre mit den nachfolgenden Guided Labs im Linux-Lernpfad fort.
  2. 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.txt im 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.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 aufgelisteten kritischen Verzeichnisse sehen:

data
config
logs

Hinweise

  • Du kannst einen Texteditor wie nano verwenden, um die Datei zu erstellen und zu bearbeiten.
  • Alternativ kannst du den Befehl echo mit 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.gz heißen.
  • Das Archiv muss im Verzeichnis ~/project/backups/ abgelegt werden.
  • Der Inhalt des Archivs soll durch die Datei backup-list.txt bestimmt werden, die du im vorherigen Schritt erstellt hast.

Anforderungen

  • Das fertige Archiv muss sich unter ~/project/backups/system-backup.tar.gz befinden.
  • Du musst den Befehl tar verwenden.
  • Du musst die Option -T bei 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 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 tar sind c (create/erstellen), z (mit gzip komprimieren), v (verbose/ausführlich, um den Fortschritt zu sehen) und f (filename/Dateiname angeben).
  • Die Option -T weist tar an, 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 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 im Archiv system-backup.tar.gz gespeicherten 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 tar 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 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

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

Anforderungen

  • Die Datei ~/project/config/app.conf muss nach Abschluss der Aufgabe vorhanden sein.
  • Du darfst nur die einzelne Datei config/app.conf extrahieren, 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 rm wird zum Löschen von Dateien verwendet.
  • Der Befehl tar verwendet die Option x (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 -x hinzufü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 -e verwenden, 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 -e aus, um den Cron-Job-Editor zu öffnen. Falls du nach einem Editor gefragt wirst, ist nano 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 Befehl date 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, 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 dem date-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.

✨ 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