Linux Terminal: Bash-Scripting – Praxisprojekt & Abschluss

Wir haben bisher die Grundlagen des Bash-Scripting, Bedingungen, Schleifen, Funktionen, Textverarbeitung und Automatisierung kennengelernt. In diesem Beitrag setzen wir alles zu einem praktischen Automatisierungsprojekt zusammen:

Ein Backup- und Log-Management-Skript, das Daten sichert, protokolliert und alte Backups automatisch löscht.


1. Ziel des Projekts

Das Skript soll:

  1. Ein angegebenes Verzeichnis sichern
  2. Backups mit Zeitstempel erstellen
  3. Alle Aktionen in einer Logdatei protokollieren
  4. Alte Backups automatisch löschen
  5. Fehlerbehandlung integrieren

2. Vorbereitung

Verzeichnisstruktur anlegen:

mkdir -p ~/backup/logs

Verzeichnis mit Testdateien:

mkdir -p ~/daten
echo "Testdatei" > ~/daten/datei1.txt

3. Das Skript

Speichern als backup.sh:

#!/bin/bash

# Konfiguration
QUELLE="$HOME/daten"
ZIEL="$HOME/backup"
LOGDATEI="$ZIEL/logs/backup.log"
MAX_ALTER=7   # Tage

# Funktion: Logeintrag schreiben
log_schreiben() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOGDATEI"
}

# Funktion: Backup erstellen
backup_erstellen() {
    BACKUP_DATEI="$ZIEL/backup_$(date '+%Y%m%d_%H%M%S').tar.gz"
    tar -czf "$BACKUP_DATEI" "$QUELLE"
    if [ $? -eq 0 ]; then
        log_schreiben "Backup erstellt: $BACKUP_DATEI"
    else
        log_schreiben "Fehler beim Erstellen des Backups!"
        exit 1
    fi
}

# Funktion: Alte Backups löschen
alte_backups_loeschen() {
    find "$ZIEL" -name "backup_*.tar.gz" -type f -mtime +$MAX_ALTER -exec rm {} \;
    log_schreiben "Alte Backups älter als $MAX_ALTER Tage gelöscht."
}

# Hauptprogramm
log_schreiben "Backup startet..."
backup_erstellen
alte_backups_loeschen
log_schreiben "Backup abgeschlossen."

4. Ausführbar machen und starten

chmod +x backup.sh
./backup.sh

Das Skript erstellt ein Backup, schreibt eine Logdatei und entfernt alte Backups automatisch.


5. Automatisierung mit cron

Backup täglich um 2 Uhr:

crontab -e

Eintrag:

0 2 * * * /home/user/backup.sh

6. Erweiterungsmöglichkeiten

  • E-Mail-Benachrichtigung nach erfolgreichem Backup
  • Komprimierung optimieren mit xz oder zstd
  • Remote-Backups via rsync oder scp


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert