Die Installation von rsync
Jetzt, wo wir schon mal wissen, was rsync überhaupt ist, darüber hinaus auch, was man damit umsetzten kann, fragen wir uns natürlich: „Was braucht man, um rsync zu verwenden?“
Um die Software, das kleine Powerprogramm, verwenden zu können benötigen wir ein Linux / Unix basiertes System auf dem wir rsync super einfach installieren können. Zwar gibt es auch online eine für Windows, jedoch scheint diese bereits veraltet.
Mit dem Windows Subsystem for Linux, kann man sich auch als Windows-Nutzer mit den Vorteilen des Programms sonnen.
Genug um den heißen Brei geredet: „Wie installiere ich das Teil nun?“
Zunächst aktualisieren wir – wie am besten immer – vor der Installation neuer Software bei Linux die Paketlisten. Unter Debian / Ubuntu funktioniert das so:
apt-get update
apt-get upgrade -y && apt-get dist-upgrade
apt-get install rsync
Gegebenenfalls spielen wir verfügbare Updates auch direkt ein! Achtung: Bei unserem untenstehenden Befehl werden auch verfügbare Betriebssystemaktualisierungen direkt mit eingespielt. Sollte dies nicht gewünscht sein, entfernen Sie bitte alles ab dem „&&“.
Paketlisten & Betriebssystem aktuell? Dann lassen Sie uns nun Rsync installieren!
Dazu nutzen wir, wie oben bereits auch schon heimlich, den Paketmanager „apt“ von Debian / Ubuntu. Mit dem Argument „install“ beschreiben wir, dass wir etwas installieren möchten. Infolgedessen übergeben wir den gewünschten Programmnamen, der installiert werden soll.
Tadaa. Rsync ist jetzt verfügbar und wartet darauf, verwendet zu werden!
Anwendung des Befehls
Schauen wir uns nun an, wie wir den rsync-Befehl für unsere und verschiedene Wunschzwecke verwenden.
rsync [Optionen] Quelle(n) Ziel
Die Optionen stellen bei dem Befehl alle möglichen Zusatzoptionen/ Parameter dar, die mit übergeben werden können. Verschiedene Parameter und deren Argumente sind unten genauer aufgelistet. Außerdem definiert die Quelle den Ort, von welchem Daten kopiert werden sollen oder von wo aus etwas synchronisiert werden möchte. Als Ziel dient der Pfad, wohin etwas synchronisiert werden soll. Beispielsweise in einen Ordner auf einer weiteren lokalen Festplatte oder auf einen entfernten Remote-Server.
Sollte nur einer der Platzhalter angegeben werden, wird dieser automatisch als das Ziel interpretiert und der aktuelle Ort als Quelle.
Die Parameter
In den meisten Fällen ist es eine sehr gute Idee, die Option „-a“ zu verwenden. Denn diese fasst die folgenden Optionen bereits zusammen:
- -r kopiert auch Unterverzeichnisse
- -l kopierte auch symbolische Links
- -p sorgt dafür, dass die Rechte der Quelldatei beibehalten werden
- -t sorgt dafür, dass der Zeitstempel der Quelldatei beibehalten wird
- -g sorgt dafür, dass die Gruppenrechte der Quelldatei beibehalten werden
- -o behält den Besitzer der Quelldatei bei. (Nur bei Root)
- -D behält die Gerätedateien der Quelldatei bei. (Ebenfalls nur bei Root)
Natürlich gibt es auch noch einige weitere wichtige Parameter. Fortgeschrittener erhalten noch ausführlichere Erklärungen und weitere Parameter entweder auf der passenden Mainpage oder mithilfe des Befehls „rsync -h“
Parameter / Option |
Auswirkung / Das passiert dann! |
-u |
Es werden Dateien übersprungen im Zielpfad neuer sind, als die der Quelle. |
-v |
Zeigt während dem Synchronisierungsvorgang alle vom Programm ausgeführten Schritte an. |
-P |
Dieser Parameter aktiviert die folgenden Optionen: --progress „Fortschrittsanzeige beim Datentransfer anzeigen!“ --partial „Fortsetzung des Transfers im Falle eines / nach einem Abbruch“ |
-n |
Führe quasi eine Simulation von dem aus, was passieren könnte. |
--bwlimit |
Hiermit wird die Bandbreite limitiert, die Rsync für den Vorgang nutzen darf. Achtung: Wird dieser Parameter nicht genutzt, wird stets die gesamte verfügbare Bandbreite verwendet! |
--ignore-existing |
Hiermit werden die vorhandenen Dateien übersprungen und nur die neuen in das Ziel niedergeschrieben. |
-z |
Die Komprimierung für die Datenübertragung wird aktiviert. |
-e |
Mithilfe dieses Parameters kann eine Remote-Shell verwendet werden, beispielsweise als Ziel einer Datenübertragung via. SSH. Im Beispiel SSH wäre der Parameter wie folgt zu verwenden: „-e ssh“ |
-E |
Damit wird die Ausführbarkeit einer bestimmten Datei beibehalten. |
--execlude=DasMuster |
Schließt ein bestimmtes Muster von dem Vorgang der Synchronisierung oder dem Backup-Vorgang aus. |
--execlude=TESTODNER --execlude=TESTORDNER2 |
Hiermit werden bestimme Ordner von der Synchronisierung bzw. dem Vorgang ausgeschlossen. |
--delete |
Alle Dateien, die in der Quelle nicht mehr vorhanden sind, werden ebenfalls im Ziel – durch einen Abgleich er Verzeichnisse – gelöscht. |
-b |
Dieser Parameter sorgt dafür, dass alle durch „—delete“ gelöschten Daten gesichert werden. Beachte hierzu die Option „—backup-dir“! |
--backup-dir |
Hiermit wird ein Verzeichnis, in das alle gelöschten oder veränderten Daten abgelegt werden sollen, deklariert. Hierzu bitte die Option „-b“ beachten! |
-c |
Diese Option aktiviert einen Dateivergleich, der auf Basis der Prüfsumme stattfindet. |
--stats | Zeigt am Ende einen ausführlichen Bericht einer Übertragung an! |
--size-only | Dateien mit der exakt gleichen Dateigröße werden übersprungen. |
--progress | Gibt den Fortschritt eines Vorgangs aus. |
-4 | Bevorzugt IPv4 |
-6 | Bevorzugt IPv6 |
-x | Es werden keine Dateisystemgrenzen überschritten! |
Beispiele
Bevor Sie sich die Beispiele ansehen: Sofern Sie die Möglichkeit haben auf einem Server eine Datei „testweise“ zu synchronisieren, nutzen Sie diese und spielen mit dem Befehl mal ein wenig rum.
Beispiel von rsync anhand von „Kopie auf eine zweite Festplatte zur Datensicherung“:
Wir möchten die Daten im Ordner „Test“ auf eine zweite Festplatte „synchronisieren“. Hintergrund ist, dass wir mit einem anderen Skript beispielsweise Backups oder wichtige Dateien in diesen Ordner verlagert haben.
Hier ein Beispiel: rsync -avP /Test /mnt/festplatte/Test
Dieser Befehl besagt, dass sämtliche Dateien von „/Test“ nach „/mnt/festplatte/Test“ synchronisiert werden. Dabei bewirkt das „-a“, dass alle Rechte und Eigentümer einer Quelldatei weiterhin beibehalten, wegen des „-v“ alle ausgeführten Schritte angezeigt und aufgrund des „-P“ auch nach dem Abbruch des Transfers, dieser wieder fortgesetzt wird (wo dieser zuletzt aufgehört hat).
Fertig ist unser grundlegender Befehl, um Daten von A nach B bzw. in diesem Beispiel von der einen auf eine weitere Festplatte zu synchronisieren. Das Beispiel berücksichtigt nicht das sogenannte „Mounten“ einer Festplatte, falls es sich bei dieser beispielsweise um eine externe oder noch nicht einhängende handelt.
Beispiel: Daten auf einen anderen Server per SSH-Protokoll sichern.
Ja, das funktioniert auch. Rsync unterstützt auch die Sicherung beispielsweise auf einem anderen SSH-Server. Aus früheren Tests möchte ich aber zu bedenken geben, dass es bei rekursiver bzw. Orderweiser Übertragung möglicherweise zu Fehlern oder „schwer zu öffnenden“ Dateien kommen kann. Der Hinweis versteht sich unverbindlich.
Hier ein Beispielbefehl: rsync -avzP -e ssh /Test/datei.txt username@server.tld:/verzeichnis/datei.txt
In diesem Befehl wird die Datei „datei.txt“ im Verzeichnis „/Test“ in das Verzeichnis „/verzeichnis“ auf dem Remote-Server per SSH synchronisiert. In meinem Test sollte dieser Befehl problemlos funktionieren, da hier eine mögliche Dateiproblematik nicht auftritt, weil es sich um eine einzelne Datei handelt.
Nach dem absenden des Befehls wird man zur Passworteingabe (Login Daten für den Remote-Server) aufgefordert, daher eignet sich der Befehl auch nicht für die Automatisierung in Skripts.
Eine angepasste Version mit sogenannten „SSH-Keys“ (die auf dem Client für den Remote-Server vorhanden sein müssen und NICHT mit einem Passwort geschützt werden dürfen) die zur Authentifizierung genutzt werden existiert ebenfalls. Diese Variante kann man nutzten, wenn man eine Synchronisierung automatisiert auf einen externen Server via. SSH laufen lassen möchte.
Aus Sicherheitsgründen empfiehlt sich diese Variante allerdings nur unten den Umständen, dass entsprechende Kenntnisse zum sicheren Konfigurieren eines SSH-Servers vorhanden sind. – Wie man einen SSH-Server sicher konfiguriert, wird hier nicht beschrieben!
Kurze Zusammenfassung:
Rsync eignet sich super um beispielsweise Backuppläne zu realisieren beziehungsweise automatisierte Backups (Rechner zu Server oder ähnlich) umzusetzen. Aufgrund der vielen Parameter ergeben sich viele Möglichkeiten und Optionen zur Nutzung des Tools. – Eine professionelle Backup-Software ersetzt rsync meiner Meinung nach aber nicht.
Als Nachteil könnte man auf jeden Fall mögliche SSH-Probleme (ich weiß nicht ob diese mittlerweile behoben sind) bezeichnen, die bei einer Ordnerweise Übertragung auftreten könnten.