Skip to content

Projekt 3: Linux-Systembackup und -wiederherstellung

Projektbeschreibung

In diesem Projekt lernen wir, wie man wichtige Dateien und Verzeichnisse unter Linux mit tar sichert und wiederherstellt.

Lernziele

  • tar-Befehl zum Archivieren und Komprimieren verwenden
  • Backup-Strategien entwickeln
  • Automatische Backups mit Cron-Jobs einrichten
  • Backup-Dateien überprüfen und wiederherstellen

Projektanforderungen

  1. Wichtige Dateien und Verzeichnisse mit tar archivieren
  2. Backup-Dateien komprimieren
  3. Backup-Prozess automatisieren (Cron-Job)
  4. Backup-Dateien überprüfen
  5. Dateien aus Backup wiederherstellen

Schritt-für-Schritt-Anleitung

Schritt 1: Backup-Verzeichnis erstellen

bash
sudo mkdir -p /backup
sudo chmod 755 /backup

Schritt 2: Wichtige Verzeichnisse identifizieren

Zu sichernde Verzeichnisse könnten sein:

  • /home: Benutzerverzeichnisse
  • /etc: Konfigurationsdateien
  • /var/log: Protokolldateien
  • /var/www: Webseiten-Dateien

Schritt 3: Manuelles Backup mit tar erstellen

Einfaches Backup erstellen:

bash
# Syntax: tar -czvf backup_datei.tar.gz zu_sichernde_verzeichnisse
sudo tar -czvf /backup/home_backup_$(date +%Y%m%d).tar.gz /home

Erklärung der Optionen:

  • -c: Erstellt ein neues Archiv
  • -z: Komprimiert mit gzip
  • -v: Zeigt den Fortschritt an (verbose)
  • -f: Gibt den Dateinamen des Archivs an
  • $(date +%Y%m%d): Fügt das aktuelle Datum zum Dateinamen hinzu

Mehrere Verzeichnisse gleichzeitig sichern:

bash
sudo tar -czvf /backup/system_backup_$(date +%Y%m%d).tar.gz /home /etc /var/log

Schritt 4: Backup-Datei überprüfen

Inhalt des Archivs auflisten:

bash
tar -tzvf /backup/home_backup_20240527.tar.gz

Erklärung der Optionen:

  • -t: Listet den Inhalt des Archivs auf
  • -z: Dekomprimiert mit gzip (bei Überprüfung notwendig)
  • -v: Zeigt detaillierte Informationen an
  • -f: Gibt den Dateinamen des Archivs an

Schritt 5: Dateien aus Backup wiederherstellen

Gesamtes Archiv wiederherstellen:

bash
sudo tar -xzvf /backup/home_backup_20240527.tar.gz -C /

Einzelne Datei wiederherstellen:

bash
sudo tar -xzvf /backup/home_backup_20240527.tar.gz -C / home/benutzer/datei.txt

Erklärung der Optionen:

  • -x: Extrahiert Dateien aus dem Archiv
  • -C: Wechselt vor der Extraktion in das angegebene Verzeichnis

Schritt 6: Automatisches Backup mit Cron-Job einrichten

Backup-Skript erstellen:

bash
sudo vim /backup/backup_skript.sh

Fügen Sie folgenden Inhalt hinzu:

bash
#!/bin/bash

# Konfiguration
BACKUP_DIR="/backup"
ZEITSTEMPEL=$(date +%Y%m%d_%H%M%S)
BACKUP_DATEI="$BACKUP_DIR/backup_$ZEITSTEMPEL.tar.gz"

# Zu sichernde Verzeichnisse
QUELLEN="/home /etc /var/log"

# Backup erstellen
echo "Starte Backup: $BACKUP_DATEI"
tar -czvf "$BACKUP_DATEI" $QUELLEN

# Alte Backups löschen (älter als 7 Tage)
find "$BACKUP_DIR" -name "backup_*.tar.gz" -mtime +7 -delete

echo "Backup abgeschlossen: $BACKUP_DATEI"

Skript ausführbar machen:

bash
sudo chmod +x /backup/backup_skript.sh

Cron-Job einrichten:

bash
sudo crontab -e

Fügen Sie folgende Zeile hinzu (tägliches Backup um 2 Uhr morgens):

0 2 * * * /backup/backup_skript.sh >> /backup/backup.log 2>&1

Schritt 7: Backup-Strategie optimieren

Inkrementelles Backup: Anstatt jedes Mal ein vollständiges Backup zu erstellen, können Sie inkrementelle Backups verwenden.

rsync für inkrementelles Backup verwenden:

bash
# Installation (falls nicht vorhanden)
sudo apt install rsync         # Ubuntu/Debian
sudo yum install rsync         # CentOS/RHEL

# Inkrementelles Backup mit rsync
rsync -av --delete /home/ /backup/home_incrementell/

Erklärung der Optionen:

  • -a: Archivmodus (behält Berechtigungen, Datum usw.)
  • -v: Zeigt Fortschritt an
  • --delete: Löscht Dateien im Ziel, die in der Quelle nicht mehr existieren

Schritt 8: Backup auf externen Speicher kopieren

Backup auf USB-Stick kopieren:

bash
# USB-Stick einhängen
sudo mount /dev/sdb1 /mnt

# Backup kopieren
sudo cp /backup/backup_20240527.tar.gz /mnt/

# Auswerfen
sudo umount /mnt

Backup in die Cloud kopieren (mit rclone):

bash
# rclone installieren und konfigurieren
curl https://rclone.org/install.sh | sudo bash
rclone config

# Backup hochladen
rclone copy /backup/backup_20240527.tar.gz remote:backup_ordner

Fehlerbehebung

Problem 1: "Permission denied" beim Erstellen des Backups

  • Lösung: sudo verwenden oder Berechtigungen mit chmod anpassen

Problem 2: Nicht genügend Speicherplatz

  • Lösung:
    bash
    df -h               # Speicherplatz überprüfen
    sudo rm -f /backup/altes_backup.tar.gz   # Alte Backups löschen

Problem 3: Backup-Datei ist beschädigt

  • Lösung:
    bash
    tar -tzvf backup_datei.tar.gz   # Archiv auf Beschädigung prüfen

Projekterweiterungen

  1. Backup-Verschlüsselung: Backup-Dateien mit GPG verschlüsseln
  2. Backup-Benachrichtigung: E-Mail senden, wenn Backup abgeschlossen ist
  3. Backup-Überwachung: Überwachungsskript erstellen, das prüft, ob Backup erfolgreich war
  4. Externe Festplatte: Backup auf externe Festplatte automatisieren

Projektzusammenfassung

In diesem Projekt haben wir:

  • Manuelles Backup mit tar erstellt
  • Backup-Dateien komprimiert und überprüft
  • Dateien aus Backup wiederhergestellt
  • Automatisches Backup mit Cron-Job eingerichtet

Wichtige Befehle, die verwendet wurden:

  • tar -czvf: Backup erstellen (komprimiert)
  • tar -tzvf: Backup-Inhalt auflisten
  • tar -xzvf: Backup extrahieren
  • rsync -av: Inkrementelles Backup
  • crontab -e: Cron-Job erstellen

Frei für alle Anfänger