Zum Inhalt

Backups unter Linux mit rsync erstellen & automatisieren

Backups unter Linux mit rsync erstellen & automatisieren

Backups unter Linux mit rsync erstellen & automatisieren

Zusammenfassung: Dieser Artikel dokumentiert den Einsatz von rsync für lokale und Remote-Backups unter Linux. Themen sind grundlegende Optionen und Flags, inkrementelle Backups mit Hard-Link-Rotation (ähnlich Time Machine), Remote-Backup via SSH sowie die Automatisierung mit Cron oder systemd-Timer.


1. rsync Grundlagen

rsync ist auf nahezu allen Linux-Distributionen vorinstalliert. Es synchronisiert Dateien und Verzeichnisse effizient, indem nur geänderte Teile übertragen werden.

Grundsyntax

rsync [Optionen] Quelle/ Ziel/

Wichtig: Ein abschließender / nach der Quelle kopiert den Inhalt des Verzeichnisses. Ohne / wird das Verzeichnis selbst kopiert.

Häufig verwendete Optionen

Option Beschreibung
-a Archivmodus (rekursiv, Symlinks, Berechtigungen, Zeitstempel erhalten)
-v Verbose: Dateien anzeigen
-z Komprimierung bei Übertragung
--delete Dateien im Ziel löschen, die in der Quelle nicht mehr existieren
--exclude Dateien oder Muster ausschließen
-n / --dry-run Vorschau ohne tatsächliche Änderungen
--progress Fortschritt pro Datei anzeigen

2. Lokales Backup

# Home-Verzeichnis auf externe Festplatte sichern
rsync -av --delete /home/benutzer/ /media/backup/home/

# Mit Dry-Run zunächst prüfen
rsync -avn --delete /home/benutzer/ /media/backup/home/

# Bestimmte Verzeichnisse ausschließen
rsync -av --delete \
  --exclude='.cache/' \
  --exclude='Downloads/' \
  /home/benutzer/ /media/backup/home/

3. Inkrementelles Backup mit Hard-Link-Rotation

Diese Methode erstellt täglich einen vollständigen Snapshot, ohne den vollen Speicherplatz zu verbrauchen – unveränderte Dateien werden als Hard-Links aus dem vorherigen Backup wiederverwendet.

#!/bin/bash
QUELLE="/home/benutzer/"
ZIEL="/media/backup"
DATUM=$(date +%Y-%m-%d)
LETZTES="$ZIEL/latest"

rsync -av --delete \
  --link-dest="$LETZTES" \
  "$QUELLE" "$ZIEL/$DATUM/"

# Symlink "latest" auf aktuelles Backup setzen
rm -f "$LETZTES"
ln -s "$ZIEL/$DATUM" "$LETZTES"

Alte Backups können einfach mit rm -rf /media/backup/2024-01-01/ gelöscht werden – Hard-Links bleiben für noch referenzierte Dateien erhalten.


4. Remote-Backup via SSH

# Lokales Verzeichnis auf entfernten Server sichern
rsync -avz --delete \
  /home/benutzer/ \
  benutzer@server.example.com:/backup/home/

# Entferntes Verzeichnis lokal sichern
rsync -avz --delete \
  benutzer@server.example.com:/var/www/ \
  /media/backup/webserver/

Für passwortloses Backup via Cron: SSH-Key ohne Passphrase erstellen und auf dem Server hinterlegen (siehe Artikel: SSH-Schlüssel unter Linux erstellen & verwalten).


5. Automatisierung via Cron

crontab -e

Eintrag für tägliches Backup um 02:00 Uhr:

0 2 * * * /home/benutzer/skripte/backup.sh >> /var/log/backup.log 2>&1

6. Automatisierung via systemd-Timer

Service-Datei ~/.config/systemd/user/backup.service:

[Unit]
Description=Tägliches rsync Backup

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

Timer-Datei ~/.config/systemd/user/backup.timer:

[Unit]
Description=Backup täglich um 02:00

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

[Install]
WantedBy=timers.target
systemctl --user enable --now backup.timer

7. Diagnose: Backup-Protokoll prüfen

# Log der letzten Ausführung
cat /var/log/backup.log

# systemd-Timer-Status
systemctl --user status backup.timer
journalctl --user -u backup.service

Hat euch dieser Beitrag gefallen?

Dann lasst gern ein Like da.

Kommentare

Noch keine Kommentare.
Neuen Kommentar schreiben

Deine E-Mail wird nicht veröffentlicht. Bei Antworten erhältst du eine Benachrichtigung.