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 istrsyncdas mächtigste Werkzeug für Backups, Migrationen und das Spiegeln von Datenbeständen über das Netzwerk. Ein Senior Admin muss den Unterschied zwischendirunddir/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 vonsrcnachdest./src(Ohne Slash): Kopiert den Ordnersrcselbst nachdest.
# 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 |