rsync ist das Schweizer Taschenmesser der Dateiübertragung. Ob du einen Laptop sicherst, Server spiegelst oder eine Multi-Terabyte-Migration fährst — rsync hat ein Flag dafür. Dieser Guide behandelt 30 essenzielle Befehle nach Anwendungsfall sortiert — von den Grundlagen am ersten Tag bis hin zu produktionsreifen Workflows.
rsync (remote sync) ist ein Dateikopierprogramm, das 1996 von Andrew Tridgell und Paul Mackerras erstmals veröffentlicht wurde. Es ist bekannt für seinen Delta-Transfer-Algorithmus, der nur die Unterschiede zwischen Quell- und Zieldateien überträgt und so den Netzwerkverkehr bei nachfolgenden Syncs drastisch reduziert.
Zentrale Eigenschaften:
rsync [OPTIONS] SOURCE DESTINATION
rsync -av /src/ /dest/rsync -av /src/ user@host:/dest/rsync -av user@host:/src/ /dest/Trailing Slash ist wichtig
rsync -av /src/ /dest/ kopiert den Inhalt von /src nach /dest.
rsync -av /src /dest/ kopiert das Verzeichnis selbst und erstellt /dest/src/.
Dieser Trailing-Slash-Unterschied ist die #1-Fehlerquelle bei rsync.
rsync -av /source/ /destination/
Das -a (Archive) Flag erhält Berechtigungen, Zeitstempel, Symlinks und Ownership. -v liefert ausführliche Ausgabe. Das ist dein alltägliches Arbeitstier.
rsync -avn /source/ /destination/
Füge -n (oder --dry-run) hinzu, um zu sehen, was passieren würde, ohne tatsächlich etwas zu übertragen. Mach bei großen oder destruktiven Operationen immer zuerst einen Dry-Run.
rsync -av --progress /source/ /destination/
Zeigt den Fortschritt pro Datei — nützlich bei großen Dateien. Für den Gesamtfortschritt bei vielen Dateien verwende --info=progress2 (rsync 3.1+).
rsync -av --info=progress2 /source/ /destination/
Zeigt eine einzelne Fortschrittszeile mit übertragenen Bytes, Prozentsatz und Geschwindigkeit — viel übersichtlicher als der Fortschritt pro Datei bei Massentransfers.
rsync -avz -e ssh /local/data/ user@server:/remote/data/
Das -e ssh Flag (Standard in modernem rsync) nutzt SSH als Transport. Füge -z für Kompression hinzu — nützlich über WAN-Verbindungen.
rsync -av -e "ssh -p 2222" /local/ user@server:/remote/
Durch Umschließen des SSH-Befehls kannst du nicht standardmäßige Ports, Identity-Dateien oder beliebige SSH-Optionen angeben.
rsync -av --include='*.log' --exclude='*' /source/ /destination/
Kopiert nur .log-Dateien. Die --include/--exclude-Reihenfolge ist wichtig — rsync wertet Regeln von oben nach unten aus.
rsync -av --exclude='.git' --exclude='node_modules' /project/ /backup/
Überspringe Verzeichnisse, die du nicht im Backup brauchst. Verwende --exclude-from=file.txt für komplexe Ausschlusslisten.
rsync -av --delete /source/ /destination/
Destruktive Operation
—delete entfernt Dateien vom Ziel, die auf der Quelle nicht existieren. Kombiniert mit einem falschen Trailing Slash kann das Daten vernichten. Mach immer zuerst einen Dry-Run.
rsync -av --delete-before /source/ /destination/
Gibt Speicherplatz auf dem Ziel frei, bevor neue Dateien kopiert werden. Nützlich, wenn das Ziel fast voll ist.
rsync -av --delete-after /source/ /destination/
Sicherer als --delete-before — neue Dateien kommen an, bevor alte entfernt werden. Standardverhalten von --delete.
rsync -av --remove-source-files /source/ /destination/
Überträgt Dateien und löscht sie dann von der Quelle. Hinweis: Löscht nur Dateien, keine leeren Verzeichnisse.
rsync -av --update /source/ /destination/
Überspringt Dateien, die auf dem Ziel neuer sind. Nützlich, wenn mehrere Quellen zu einem Ziel beitragen.
rsync -avc --delete /source/ /destination/
Das -c Flag verwendet Checksummen statt Zeitstempel+Größe, um zu bestimmen, welche Dateien aktualisiert werden müssen. Langsamer, erkennt aber Korruption.
rsync -av --bwlimit=50000 /source/ user@server:/destination/
Begrenzt den Transfer auf ~50 MB/s (Wert in KiB/s). Unverzichtbar für Migrationen, die sich Bandbreite mit dem Produktionsbetrieb teilen.
rsync -avz /source/ user@server:/destination/
Das -z Flag komprimiert Daten während der Übertragung. Vorteilhaft für textlastige Transfers über langsame Verbindungen. Überspringe es in schnellen LANs — Kompression erzeugt CPU-Overhead.
find /source/ -maxdepth 1 -type d | xargs -P 4 -I {} rsync -av {} /destination/
Führt 4 parallele rsync-Prozesse aus, einen pro Top-Level-Verzeichnis. Grob, aber effektiv, um schnelle Netzwerke auszulasten.
ionice -c2 -n7 rsync -av /source/ /destination/
Führt rsync mit der niedrigsten I/O-Priorität aus, um die Produktionslast nicht zu beeinträchtigen.
rsync -av --partial --progress /source/ /destination/
Das --partial Flag behält teilweise übertragene Dateien bei, damit rsync dort weitermachen kann, wo es aufgehört hat. Füge --partial-dir=.rsync-partial hinzu, um Partials in einem versteckten Verzeichnis zu halten.
rsync -avW /source/ /destination/
Das -W Flag sendet ganze Dateien statt Deltas zu berechnen. Schneller für initiale Kopien in schnellen Netzwerken, wo Delta-Berechnung verschwendete CPU ist.
rsync -av --delete --link-dest=/backups/latest /source/ /backups/2026-02-25/
ln -snf /backups/2026-02-25 /backups/latest
Erstellt platzsparende inkrementelle Backups mittels Hard Links. Unveränderte Dateien teilen sich den Speicherplatz mit dem vorherigen Backup.
rsync -avAX /source/ /destination/
-A erhält ACLs, -X erhält erweiterte Attribute. Erforderlich für die vollständige Metadaten-Erhaltung auf Linux-Dateisystemen.
rsync -av --log-file=/var/log/rsync-migration.log /source/ /destination/
Erstellt ein detailliertes Log jeder übertragenen, übersprungenen oder gelöschten Datei. Unverzichtbar für Audit-Trails.
rsync -av --files-from=filelist.txt /source/ /destination/
Kopiert nur die in filelist.txt aufgelisteten Dateien (ein Pfad pro Zeile, relativ zur Quelle). Nützlich für selektive Migrationen.
rsync -avn --delete /source/ /destination/ | grep "deleting\|>f"
Nutzt den Dry-Run-Modus, um zu zeigen, welche Dateien sich zwischen Quelle und Ziel unterscheiden. Ein schnelles Diff-Tool.
rsync -av rsync://server/module/ /destination/
Verbindet sich mit einem rsync-Daemon (rsyncd) statt SSH. Nützlich für anonyme oder hochperformante Transfers in vertrauenswürdigen Netzwerken.
rsync -av --max-size=100M /source/ /destination/
Überspringt Dateien größer als 100MB. Nützlich, um große Dateien zu separieren, die besondere Behandlung brauchen.
rsync -av --timeout=300 /source/ user@server:/destination/
Bricht den Transfer ab, wenn 300 Sekunden lang keine Daten empfangen werden. Verhindert hängende rsync-Prozesse.
rsync -avn --checksum /source/ /destination/
Vergleicht Checksummen, ohne etwas zu übertragen — ein reiner Verifizierungsdurchlauf.
rsync -av --stats /source/ /destination/
Gibt am Ende eine Zusammenfassung mit Gesamtdateien, übertragenen Bytes, Speedup-Verhältnis und mehr aus.
| Problem | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| ”Permission denied” auf dem Ziel | Benutzer hat keine Schreibrechte | Ownership prüfen und chmod; --no-perms verwenden, wenn Berechtigungen egal sind |
| Transfer extrem langsam | Viele kleine Dateien, hohe Latenz | --whole-file verwenden, MaxStartups in sshd_config erhöhen |
| ”rsync error: some files vanished” | Dateien während des Scans gelöscht | Normalerweise harmlos; --ignore-missing-args verwenden |
| Dateien werden jedes Mal neu übertragen | Zeitstempel-Präzisionsunterschied (NFS) | --modify-window=1 oder --checksum verwenden |
| ”Argument list too long” | Zu viele Dateien in einem Verzeichnis | --files-from oder `find |
| Symlinks nicht erhalten | Fehlendes -l Flag | -a verwenden (enthält -l) oder -l explizit |
--whole-file für initiale Kopien — Delta-Berechnung ist verschwendet bei Dateien, die noch nicht existierenxargs -P oder GNU parallel für mehrere Streamsssh -c aes128-gcm@openssh.com ist schneller als der Standard--sockopts=SO_SNDBUF=4194304 bei Verbindungen mit hoher Latenzrsync ist brillant in dem, was es tut, aber es hat echte Einschränkungen für Enterprise-Migrationen:
--checksum fahrensyncopio macht all das mit einer Web-UI
syncopio vereint die Power von rsync-artigen Transfers in einem Web-Dashboard mit verteilten Workern, integrierter Verifizierung, Multi-Protokoll-Unterstützung (NFS, SMB, S3) und Echtzeit-Monitoring. Alle Features ansehen oder syncopio vs rsync im Detail vergleichen.