linux-cli-shell cli file-management backup rsync networking sync

Rsync Mastery: Efficient File Sync (Artikel 280)

Der definitive Guide zur Dateisynchronisation mit rsync. Erfahren Sie alles über das Delta-Transfer-Verfahren, die Absicherung via SSH und den effizienten Aufbau von Backup-Pipelines.

# Rsync Mastery: Synchronisation in Perfektion

TL;DR / Management Summary Ein normaler Kopierbefehl (cp) überträgt immer alles. rsync hingegen ist intelligent: Er vergleicht Quelle und Ziel und überträgt nur die Änderungen (Deltas). In Kombination mit SSH ist rsync das mächtigste Werkzeug für Backups, Migrationen und das Spiegeln von Datenbeständen über das Netzwerk. Ein Senior Admin muss den Unterschied zwischen dir und dir/ im Schlaf kennen, um keine “Verschachtelungs-Unfälle” zu produzieren.


# 1. Einführung & Architektur

Warum rsync unschlagbar ist.

Rsync nutzt einen speziellen Algorithmus, der Dateien in Blöcke unterteilt und nur geänderte Blöcke über die Leitung schickt.

# Der Sync-Workflow (Mermaid)

graph LR
    A[Source Host: 10GB Data] --> B{Rsync Algorithm}
    B -->|Check Hashes| C[Unchanged: Skip]
    B -->|Check Hashes| D[Changed: Send Delta]
    D -->|Compressed Stream| E[Target Host]
    E --> F[Reconstruct File]
    subgraph "Transfer Stats"
        D --- G[Line Speed: 1GBit]
        D --- H[Actual Data: 50MB]
    end

# 2. Der wichtigste Befehl: -avzP

Der Standard für Admins.

Nutzen Sie fast immer diese Kombination:

# -a: Archive (Behält Rechte, Times, Symlinks)
# -v: Verbose (Zeigt was passiert)
# -z: Compress (Spart Bandbreite)
# -P: Progress & Partial (Fortsetzbar)
sudo rsync -avzP /data/ user@remote-host:/backup/data/

# 3. Die Falle mit dem Schrägstrich /

Vermeiden Sie das Chaos.

In Rsync entscheidet der Trailing Slash am Quell-Ordner über die Struktur im Ziel:

  • /src/ (Mit Slash): Kopiert den Inhalt von src nach dest.
  • /src (Ohne Slash): Kopiert den Ordner src selbst nach dest.

# 4. Day-2 Operations: Spiegeln & Löschen

Quelle und Ziel identisch halten.

Standardmäßig löscht rsync im Ziel nichts, was in der Quelle entfernt wurde.

# Die --delete Option

# VORSICHT: Löscht Dateien im Ziel, die in der Quelle nicht mehr existieren!
rsync -av --delete /var/www/ /backup/www/

# Bandbreite begrenzen

Verhindern Sie, dass rsync das gesamte Firmennetz blockiert:

# Limitiert auf 5 MB/s
rsync -av --bwlimit=5000 /local/data/ /remote/

# 5. Troubleshooting & “War Stories”

Wenn der Sync hängen bleibt.

# Story 1: “Der Permission-Denial beim Klonen”

Symptom: rsync bricht mit tausenden Fehlermeldungen ab, obwohl der Zieluser Root-Rechte hat. Ursache: Der Remote-User wird via SSH eingeloggt, hat aber am Zielhost keine Sudo-Rechte für den rsync-Prozess selbst. Lösung: Nutzen Sie das Flag --rsync-path: rsync -av --rsync-path="sudo rsync" /local/ /remote/.

# Story 2: “Das volle Ziel-Verzeichnis (Temp-Files)”

Symptom: Mitten im Sync bricht rsync ab mit “No space left on device”, obwohl noch 5GB frei sein sollten. Ursache: Rsync erstellt temporäre Dateien (.file.xyz) im Zielverzeichnis, bevor es sie umbenennt. In Verzeichnissen mit Millionen kleiner Dateien kann dies den Platz sprengen. Lösung: Nutzen Sie das Flag --temp-dir=/tmp/rsync, um die temporären Dateien auf eine andere Partition zu legen.


# 6. Fazit & Empfehlung

  • Pflicht: Nutzen Sie rsync für alle Kopiervorgänge über das Netzwerk.
  • Backup: Nutzen Sie das Flag --link-dest, um platzsparende, inkrementelle Backups mit Hardlinks (ähnlich wie Time Machine) zu erstellen.
  • Wahl: Für die Synchronisation von Cloud-S3-Buckets nutzen Sie lieber rclone, das rsync-Prinzipien auf Objekt-Speicher anwendet.

# Anhang: Cheatsheet

Aufgabe Flag Beispiel
Archiv-Modus -a Behält Metadaten
Kompression -z Gut für langsame Netze
Fortschritt -P Zeigt Rate & Zeit
Löschen im Ziel --delete 1:1 Spiegelbild
Inkrementell --link-dest Hardlinks für Backups
SSH Port ändern -e 'ssh -p 2222'
Dateien filtern --exclude='*.tmp'
Trockenübung -n oder --dry-run WICHTIG VOR --delete!
Inodes sparen -H Behält Hardlinks bei
Zusammenfassung --stats Zeigt Effizienz-Statistik