Mobile-Menu

Inkrementelle Dateisynchronisation mit rsync: Optionen, Szenarien, Integrationen Rsync für Migration und Backup nutzen

Von Thomas Joos 5 min Lesedauer

Ob lokale Datensicherung oder netzwerkbasierte Systemmigration: Rsync bleibt unter Linux und Unix-artigen Systemen das präziseste Werkzeug zur Dateiübertragung. Auch durch alternative Frontends und GUI-Ableger bewährt sich das Original durch robuste Optionen und effiziente inkrementelle Synchronisierung.

Rsync unter Linux und Unix ist ideal für präzise Dateiübertragung und Systemmigration. Durch inkrementelle Synchronisation werden nur geänderte Dateiteile transferiert, was Netzwerkverkehr und Schreibzugriffe reduziert.(Bild:  Midjourney / KI-generiert)
Rsync unter Linux und Unix ist ideal für präzise Dateiübertragung und Systemmigration. Durch inkrementelle Synchronisation werden nur geänderte Dateiteile transferiert, was Netzwerkverkehr und Schreibzugriffe reduziert.
(Bild: Midjourney / KI-generiert)

Rsync unterscheidet sich grundlegend von klassischen Kopierwerkzeugen wie cp oder scp. Statt Dateien als Ganzes zu überschreiben, berechnet rsync anhand modifizierter Zeitstempel und Dateigrößen nur jene Teile, die tatsächlich verändert wurden. Diese inkrementelle Strategie basiert auf dem Delta-Transfer-Algorithmus, der durch Rolling Checksums und blockbasierte Vergleichsoperationen eine erhebliche Reduktion von Netzwerkverkehr und Schreibzugriffen erzielt. Auf schwach angebundenen Zielsystemen oder bei großen Datenbeständen ist genau diese selektive Datenübertragung entscheidend für die Performance.

Unidirektionale Replikation mit klarer Struktur

Rsync operiert grundsätzlich unidirektional. Synchronisiert wird von einer Quelle zu einem Ziel. Wer einen bidirektionalen Datenabgleich erwartet, verlässt den Anwendungsbereich dieses Werkzeugs. Rsync ersetzt keine verteilte Versionsverwaltung, sondern eignet sich für kontrollierte, deterministische Replikationspfade, zum Beispiel zur täglichen Spiegelung produktiver Daten in ein konsistentes Sicherungsverzeichnis.

Der Operator definiert explizit, welche Elemente übertragen, welche ignoriert und welche gelöscht werden sollen. Parameter wie „--exclude“, „--include“, „--delete“, „--backup-dir“ oder „--itemize-changes“ geben dabei eine differenzierte Kontrolle bis hin zur Behandlung einzelner Bytebereiche. In Kombination mit „--dry-run“ entsteht eine testbare Umgebung, die sich in produktive Abläufe ohne unbeabsichtigte Datenverluste übertragen lässt.

Verzeichnisstruktur und Pfadverhalten

Der abschließende Slash im Quellpfad ist mehr als syntaktische Nebensache. Er entscheidet darüber, ob der Inhalt oder das Verzeichnis selbst kopiert wird:

rsync -a /srv/daten/ /mnt/backup

resultiert in einer Replikation der Inhalte von /srv/daten in /mnt/backup. Hingegen erzeugt

rsync -a /srv/daten /mnt/backup

unter „/mnt/backup“ einen neuen Ordner „daten“, der die Inhalte aufnimmt. Diese Differenz wirkt sich nicht nur strukturell aus, sondern auch auf Skriptlogik und automatisierte Deployment-Vorgänge. Gerade bei Cron-basierten Sicherungsjobs kann eine fehlerhafte Slash-Setzung zu inkonsistenten Zielstrukturen führen.

Hardlinks, Geräte-Dateien und symbolische Verweise

Beim Umgang mit komplexeren Dateisystemen unterstützt rsync durch spezielle Flags auch den Transfer von Elementen jenseits regulärer Dateien. Mit „-H“ werden Hardlinks erkannt und im Zielsystem als solche rekonstruiert, was insbesondere bei UNIX-artigen Systemverzeichnissen oder deduplizierten Datenbeständen wichtig ist. Symbolische Links lassen sich durch „-l“ (bereits in „-a“ enthalten) ebenfalls übertragen, ohne sie zu dereferenzieren. Für den korrekten Umgang mit Geräten wie „/dev/null“, benannten Pipes oder Sockets dient der Parameter „-D“, der intern „--devices“ und „--specials“ kombiniert. Diese Parameter greifen nur, wenn der Benutzer entsprechende Root-Rechte besitzt, insbesondere bei Zielsystemen mit restriktiver Rechteverwaltung. Wird rsync zur Migration kompletter Systempartitionen genutzt, ist die Aktivierung dieser Optionen zwingend erforderlich, um Konsistenz zu gewährleisten.

Relevante Optionen und deren Zusammenspiel

Rsync ist modular aufgebaut. Optionen lassen sich kombinieren und beeinflussen sich gegenseitig. Der Parameter „-a“ steht für den Archivmodus und fasst rekursive Kopie, Rechte-, Besitzer-, Zeitstempel- und Link-Behandlung zusammen. Mit dem Parameter „-z“ aktiviert man Kompression auf Protokollebene, „-P“ vereint Fortschrittsanzeige und Unterstützung für unterbrochene Transfers.

Weitere zentrale Parameter:

  • „-i“ beziehungsweise „--itemize-changes“: differenzierte Auflistung aller Änderungen nach Typ (Inhalt, Metadaten, Links),
  • „--checksum“: byteweise Prüfung über Hashvergleich,
  • „--partial“: nicht vollständig übertragene Dateien bleiben erhalten,
  • „--delete“: entfernt Zielobjekte, die in der Quelle nicht mehr existieren,
  • „--exclude-from“: lädt Ausschlussregeln aus externer Datei,
  • „--backup“ + „--backup-dir“: kopiert ersetzte oder gelöschte Dateien in Archivstruktur,
  • „--out-format“: definierbare Log-Ausgabe über Platzhalter wie „%i“, „%l“, „%b“, „%m“.

Erweiterte Formatierung und Logging-Strategien

Für präzise Auswertung von Synchronisationsläufen bietet rsync anpassbare Log-Ausgaben über die Option „--out-format“. Hier lassen sich Platzhalter wie „%i“ (Änderungstyp), „%b“ (Dateigröße), „%l“ (lange Dateigröße), „%m“ (Änderungszeit), „%u“ (Benutzer-ID), „%g“ (Gruppen-ID) oder „%f“ (Pfadname) definieren. Damit entstehen maschinenlesbare Reports, die sich direkt in Logging-Infrastrukturen einbinden oder zur Change-Dokumentation weiterverarbeiten lassen. Ein Beispiel für ein detailliertes Format:

--out-format='%t %o %i %b bytes %f'

In Verbindung mit „--log-file=/var/log/rsync.log“ oder systemd-Redirects lassen sich diese Informationen persistieren. Für die Prüfung einzelner Übertragungsjobs empfiehlt sich zusätzlich die Kombination mit „--stats“ zur Ausgabe von Gesamtbilanz, Transferrate und gelöschter/veränderter Dateien.

Skriptintegration und Tagesrotation

Für tägliche Sicherungsläufe empfiehlt sich die Kombination mit einem Datumssuffix im Zielverzeichnis. Ein Beispiel:

DATE=$(date +%F)rsync -az --delete /data/ backup@192.168.1.100:/mnt/vol1/backups/$DATE

Diese Struktur erzeugt für jeden Sicherungslauf ein separates Unterverzeichnis. In Verbindung mit Rotationsskripten oder Pruning-Mechanismen lassen sich konsistente Backup-Zeitlinien abbilden. Die Integration in systemd-timers oder cron erlaubt eine exakte Steuerung.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Data-Storage und -Management

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

In klassischen Netzwerkinfrastrukturen lassen sich rsync-Operationen gezielt zur Sicherung zentraler Datenpfade, zum Roll-out von Konfigurationsdateien oder zur Synchronisierung von Verzeichnisbäumen zwischen Servern einsetzen. Die häufigste Konstellation ist ein Push-Modell über SSH, etwa vom Applikationsserver zu einem dedizierten Backup-Node. Der Befehl

rsync -azP /srv/webdata/ backupuser@10.0.0.50:/mnt/backup/webdata

sichert unter Kompression („-z“) und mit Fortschrittsanzeige („-P“) den Inhalt des Webdatenverzeichnisses inkrementell. Für bidirektionale Aufgaben wie Konfigurationsverteilung kann rsync im Pull-Modus betrieben werden:

rsync -az /etc/nginx/ root@web01:/etc/nginx/

Ergänzend empfiehlt sich in produktiven Umgebungen eine Dry-run-Prüfung:

rsync -avun --delete /quellpfad/ zielhost:/zielpfad/

Dadurch lassen sich Auswirkungen von „--delete“ gefahrlos vorab analysieren. In heterogenen Umgebungen mit Windows-Clients kommt rsync häufig über Cygwin, WSL oder dedizierte Wrapper wie DeltaCopy zum Einsatz. Wird der Dienst dauerhaft genutzt, etwa für stündliche Sicherungen, erfolgt die Integration meist per Cronjob, systemd-Timer oder zentral gesteuerten Orchestrierungs-Tools wie Ansible oder SaltStack.

Rsync unter macOS: Abkehr von GPL, Wechsel zu openrsync

Mit macOS 15.4 wurde die ursprünglich vorinstallierte Version 2.6.9 entfernt. Hintergrund sind Lizenzkonflikte im Übergang zur GPLv3. Apple ersetzt rsync durch openrsync, eine Implementation unter ISC-Lizenz, kompatibel zur BSD-Umgebung. Allerdings unterstützt openrsync nicht den vollen Funktionsumfang von rsync 3.2.x. Wer auf Parameter wie „--compress“, „--backup-dir“ oder differenzierte Filterregeln angewiesen ist, installiert rsync via Homebrew:

brew install rsync

Die Aufrufe erfolgen dann explizit per Pfadangabe:

/opt/homebrew/bin/rsync

Synology-NAS: Einsatz im Daemon-Modus

Auf Synology-Systemen lässt sich rsync im Push- und Pull-Modus betreiben. Aktivierung erfolgt über DSM: „Systemsteuerung > Dateidienste > rsync“. Zusätzlich muss unter Anwendungsberechtigungen der Zugriff auf rsync für Benutzer freigegeben werden. Im Daemon-Modus lauscht rsync auf TCP 873. Konfiguriert wird via „/etc/rsyncd.conf“, zum Beispiel:

[netbackup]path = /volume1/NetBackupcomment = Sicherungszielread only = noauth users = backupusersecrets file = /etc/rsyncd.secrets

Benutzer müssen angelegt, Gruppenrechte korrekt gesetzt und rsync-Konten aktiviert sein. In unverschlüsseltem Modus unterscheidet DSM zwischen DSM-Usern und rsync-Konten. Für verschlüsselte Verbindungen erfolgt der Zugriff über SSH mit regulären Benutzerkennungen.

Zur Begrenzung der Netzwerkbelastung können unter DSM Geschwindigkeitseinschränkungen aktiviert werden – global oder zeitabhängig. Feinsteuerung erlaubt abweichende Limits pro Benutzer oder Gruppe.

RsyncUI: Oberfläche für macOS-Transfers

Wer rsync nicht auf der Kommandozeile bedienen will, nutzt unter macOS RsyncUI. Die auf SwiftUI basierende GUI läuft nativ auf Apple-Silicon-und Intel-Macs, installiert per Homebrew oder Download. RsyncUI erlaubt die Konfiguration mehrerer Jobs, loggt Transfers und kann via LaunchAgent regelmäßige Abläufe starten. Intern greift es auf das systemeigene rsync oder eine benutzerdefinierte Version zu.

Aktuelles eBook

Storage-Software als Effizienzbooster

eBook Storage-Software als Effizienzbooster
eBook „Storage-Software als Effizienzbooster“
(Bild: Storage-Insider)

Mit der geeigneten Storage-Software kann sich ein Unternehmen einen Effizienzbooster ins Haus holen oder in der Cloud abonnieren. Dieser Booster steigert nicht nur die Performance der geschäftskritischen Anwendungen, sondern optimiert auch die Kosten der bereits installierten Speichersysteme.

Die Themen im Überblick:

  • Herausforderungen eines modernen Speichersystems
  • Methoden und Technologien effizienter Speichersysteme
  • Effizienter Speicher mit Pure Storage, AWS, Cohesity und Dell

(ID:50468775)