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:
- Ein angegebenes Verzeichnis sichern
- Backups mit Zeitstempel erstellen
- Alle Aktionen in einer Logdatei protokollieren
- Alte Backups automatisch löschen
- 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
oderzstd
- Remote-Backups via
rsync
oderscp
Schreibe einen Kommentar