Daten sind das schwarze Gold des 21. Jahrhunderts. Allerdings müssen die schier unermesslichen Mengen auch verwaltet werden. Und genau hier vom Rsync ins Spiel – ein vielseitiges und äußerst leistungsfähiges Befehlszeilen-Tool, das für seine Fähigkeit bekannt ist, Dateien nicht nur effizient zu kopieren, sondern auch intelligent zu synchronisieren.
Konkret bedeutet dies, dass du damit nicht nur einfache Datenübertragungen durchführen kannst. Stattdessen kannst du bei einem Dateitransfer alle Berechtigungen übernehmen oder Datenbestände 1 zu 1 an einen anderen Ort spiegeln. Rsync hat sich aufgrund dessen in meiner Laufbahn als unverzichtbares Werkzeug für Backups und Migrationen erwiesen.
Damit du bei diesem Artikel möglichst viel Wissen mitnehmen kannst, werde ich dir nicht nur erklären, wie man Rsync korrekt verwendet, sondern dir auch seine verschiedenen Anwendungsfälle zeigen. Nach der Lektüre dieses Artikels wirst du bestens gerüstet sein, um das volle Potenzial dieses bemerkenswerten Tools ausschöpfen zu können. Also lass uns loslegen.
Wie man rsync installiert:
Rsync findet man in so gut wie allen Standard-Repositories der gängigen Distributionen. Für eine erfolgreiche Installation brauchst du auf dem System natürlich administrative Recht. Entweder bist du also root eingeloggt oder du verfügst zumindest über passende Sudo-Berechtigungen. Die genauen Installationsschritte hängen von deiner Distribution ab.
Installation unter Debian & Ubuntu:
apt-get install rsync -y
Installation unter AlmaLinux, CentOS, Fedora, RedHat & Rocky Linux:
yum install rsync -y
Was man mit Rsync machen kann:
Die Einsatzmöglichkeiten sind wirklich vielseitig und ich habe auf Basis von Rsync bereits hunderte Zeilen lange Backup-Skripte geschrieben. Das ist aber längst nicht alles, was man mit dem Tool machen kann. Daher stelle ich dir im Folgenden verschiedene Szenarien vor. Vorher möchte ich aber noch kurz ein paar Punkte zur Arbeitsweise des Tools sagen.
Der Rsync-Nutzer muss am Quellsystem über Leseberechtigungen und am Zielsystem über Schreibberechtigungen verfügen. Andernfalls kann Rsync seinen Dienst nicht verrichten. Erwähnenswert ist außerdem noch, dass die Software alle Ordner am Zielsystem eigenständig anlegt. Warum ich das überhaupt erwähne? Weil der Zielordner daher auch nicht manuell angelegt werden muss.
1. Datensicherung und Replikation
Ein Hauptgrund, warum Rsync so beliebt ist, liegt in seiner Fähigkeit zur effizienten Datensicherung und Replikation. Es ermöglicht einem zum Beispiel das Erstellen von lokalen Backups. Dabei werden vorhandene Dateien und Ordner in ein Backup-Verzeichnis synchronisiert. Die inkrementelle Übertragung sorgt dabei dafür, dass nur geänderte Teile von Dateien übertragen werden.
In der Praxis kann man das Ganze wie folgt umsetzen:
rsync -av /quellverzeichnis /pfad/zum/zielverzeichnis
Der in diesem Befehl verwendete Parameter -a steht für archive und stellt sicher, dass die Berechtigungen der einzelnen Dateien und der Verzeichnisse auf beiden Seiten identisch sind. Der Buchstabe v hingegen steht für verbose und sorgt dafür, dass du ausführliche Zustandsmeldungen auf der Konsole erhältst. Und hinter dem kleinen r verbirgt sich das rekursive Vorgehen, es werden daher Unterordner und deren Dateien ebenfalls mit bearbeitet.
2. Remote-Dateiverwaltung
Rsync ermöglicht die Fernverwaltung von Dateien über SSH. Du kannst also über die verschlüsselte SSH-Verbindung Dateien sicher auf oder von entfernten Systemen kopieren, löschen und natürlich synchronisieren.
Lokale Dateien überträgst du auf diese Weise auf ein entferntes System:
rsync -av /lokaler/pfad benutzer@remote-server:/remote/pfad
Entgegengesetzt, also vom entfernten zum lokalen System, gelingt es dir so:
rsync -av benutzer@remote-server:/remote/pfad /lokaler/pfad
Je nach Anwendungsgebiet kann es noch sinnvoll sein, die Option –delete zu nutzen. Damit werden Dateien, die sich nicht mehr im Quell-Ordner befinden, im Zielordner gelöscht. So stellst du sicher, dass beide Ordner über die genau gleichen Dateien verfügen.
3. Backup-Verschiebung
Mit Rsync kannst du Backups auf verschiedene Speicherorte verschieben. Das ist besonders nützlich, um Sicherungen nicht lokal, sondern auf einem anderen Gerät aufzubewahren:
rsync -av --remove-source-files /quellverzeichnis benutzer@remote-server:/zielverzeichnis
Im obigen Code-Snippet wird der Parameter –remove-source-files genutt. Damit wird die Backup-Datei auf deinem lokalen System nach der erfolgreichen Datenübertragung endgültig gelöscht.
4. Bandbreiteneffiziente Übertragung
Besonders in Situationen mit begrenzter Bandbreite oder bei der Verarbeitung besonders großer Dateien über das Internet bietet Rsync einen spannenden Parameter. Die Rede ist natürlich von -z. Wenn du diese Option verwendest, werden die Daten vor der Übermittlung komprimiert und auf dem Zielserver wieder dekomprimiert.
Durchführen lässt sich das Ganze wie folgt:
rsync -avz /quellverzeichnis benutzer@remote-server:/zielverzeichnis
5. Empfehlenswerte Parameter:
Rsync verfügt über sehr interessante Optionen. Ein paar von ihnen werde ich dir an dieser Stelle noch vorstellen. So wird mithilfe von –update sichergestellt, dass ausschließlich neue Dateien auf das Ziel übertragen werden. Ich benutze diesen Parameter sehr gerne bei Backup-Skripten, um bestehende Backups nicht automatisch löschen zu lassen, wenn diese im Quell-Ordner nicht mehr existieren.
Möchtest du am Ende eine Zusammenfassung über den Kopiervorgang erhalten, dann musst du den Parameter –stats nutzen. Dann erhältst du Informationen zur übertragenen Datenmenge, zur Übertragungsgeschwindigkeit und vielen weiteren Punkten. Ebenfalls noch häufig benutze ich –exclude. Damit lassen sich Dateien und Ordner ausschließen, die auf den dort verwendeten Regex passen.
Du musst diese Option aber mit Bedacht wären. Trägst du beispielsweise ein kleines a ein, werden keine Ordner und Dateien mit diesem Buchstaben im Namen verarbeitet. Zu guter Letzt möchte ich dir noch –ignore-errors zeigen. Damit wird der Kopiervorgang so lange wie möglich durchgeführt und das auch, wenn Zugriffsprobleme auftreten.
2 Antworten auf „Praktische Anwendung: Rsync als Admin nutzen!“
Moin,
–exclude : Hier können Regex verwendet werden, wie im Artikel kurz erwähnt wird. Ein einfaches ‚a‘ ohne weitere Wildcards führt jedoch nicht zum Ausschluss aller Dateien, welche ein ‚a‘ im Namen haben. Dateien wie ‚bat‘, ‚cat‘, ‚a.doc‘, ‚a.txt‘, usw. werden weiterhin kopiert.
Hallo Pepe,
vielen Dank für deinen Kommentar.
Um dein Beispiel mit dem Regex für den Exclude-Modus aufzugreifen und für alle Leser noch verständlicher zu machen, hier ein paar Erklärungen:
Um Dateien auszuschließen, deren Namen mit einem kleinen „a“ beginnen, verwendet man:
–exclude=’a*‘
Kommt das kleine „a“ hingegen irgendwo im Namen vor, dann braucht man einen zweiten Asterisk:
–exclude=’*a*‘
Um sowohl Dateien, deren Namen mit einem kleinen „a“ als auch mit einem großen „A“ beginnen, auszuschließen, lautet der Regex:
–exclude='[aA]*‘
In Summe sollte der versierte Leser nun eine hilfreiche Anleitung zur erfolgreichen Anwendung des Exclude-Modus bekommen haben.
Viele Grüße
Fabian