In den letzten Kapiteln hast du gelernt, wie systemd funktioniert, Dienste gesteuert werden und wie du eigene Services und Timer erstellst.
Jetzt setzen wir dieses Wissen in einem kompletten Projekt um: Wir bauen einen Backup-Service, der täglich automatisch läuft und sich selbst überwacht.

🔹 Ziel des Projekts

Am Ende dieses Kapitels hast du:

  • einen eigenen systemd-Service, der ein Backup-Skript startet,
  • einen dazugehörigen Timer, der das Skript jeden Tag automatisch ausführt,
  • Logs, die dokumentieren, wann das Backup lief,
  • und ein robustes Setup, das sich leicht erweitern lässt.

🔹 Schritt 1: Backup-Skript schreiben

Lege ein einfaches Skript an:

#!/bin/bash
DATUM=$(date +%F)
BACKUP_DIR="/home/user/backups"
QUELLE="/home/user/Dokumente"

mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/backup_$DATUM.tar.gz" "$QUELLE" >> "$BACKUP_DIR/backup.log" 2>&1
  • Speichern als: /home/user/backup.sh
  • Ausführbar machen:
    chmod +x /home/user/backup.sh
    

🔹 Schritt 2: Service-Unit erstellen

Datei: /etc/systemd/system/backup.service

[Unit]
Description=Tägliches Backup meiner Dokumente
After=network.target

[Service]
Type=oneshot
ExecStart=/home/user/backup.sh

[Install]
WantedBy=multi-user.target

👉 Dieser Service führt dein Backup-Skript genau einmal aus, wenn er gestartet wird.

🔹 Schritt 3: Timer-Unit erstellen

Datei: /etc/systemd/system/backup.timer

[Unit]
Description=Backup-Timer

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target
  • Läuft täglich um 2 Uhr nachts.
  • Mit Persistent=true wird ein verpasstes Backup beim nächsten Start nachgeholt.

🔹 Schritt 4: Service & Timer aktivieren

  1. systemd neu laden:
    sudo systemctl daemon-reload
  2. Timer starten:
    sudo systemctl start backup.timer
  3. Timer aktivieren (beim Boot automatisch starten):
    sudo systemctl enable backup.timer

👉 Der Backup-Service läuft nun jeden Tag automatisch.

🔹 Schritt 5: Kontrolle & Logs

  • Aktive Timer anzeigen:
    systemctl list-timers
  • Status prüfen:
    systemctl status backup.timer
  • Logs ansehen:
    journalctl -u backup.service

👉 So weißt du jederzeit, ob dein Backup erfolgreich war.

🔹 Erweiterungen

  • Statt nur /Dokumente kannst du mehrere Ordner sichern.
  • Den Speicherort /home/user/backups könntest du auf eine externe Festplatte oder ein NAS legen.
  • Mit rsync statt tar lassen sich inkrementelle Backups erstellen.
  • Über einen zusätzlichen Service könntest du nach jedem Backup eine Benachrichtigungs-Mail verschicken.

🔹 Übung

  1. Erstelle dein eigenes Backup-Skript für ein wichtiges Verzeichnis.
  2. Baue einen systemd-Service, der das Skript ausführt.
  3. Erstelle einen Timer, der den Service täglich um eine feste Uhrzeit startet.
  4. Teste mit:
    systemctl start backup.service

    und prüfe anschließend die Logs.

  5. Bonus: Ergänze den Timer so, dass er das Backup zusätzlich jeden Sonntag um 12 Uhr mittags startet.

✅ Zusammenfassung

  • Ein Service führt dein Skript aus.
  • Ein Timer startet den Service automatisch nach Zeitplan.
  • Mit Persistent=true werden verpasste Backups nachgeholt.
  • Über systemctl list-timers und journalctl behältst du die Kontrolle.

👉 Damit hast du ein vollständiges, produktiv nutzbares Setup mit systemd erstellt. Herzlichen Glückwunsch 🎉 – du beherrschst jetzt die Grundlagen von systemd und kannst eigene Dienste und Timer für deine Projekte einrichten!
 

📚 Inhaltsverzeichnis

👉 systemd Kapitel 1: Grundlagen – Was ist systemd und wie arbeitet es?
👉 systemd Kapitel 2: Dienste steuern mit systemctl
👉 systemd Kapitel 3: Logs und Fehlersuche mit journalctl
👉 systemd Kapitel 4: Bootprozess & Targets verstehen
👉 systemd Kapitel 5: Eigene Services erstellen
👉 systemd Kapitel 6: Timer als moderne Cron-Alternative
👉 systemd Kapitel 7: Abschlussprojekt – Eigene Services & Timer kombinieren