Kopieren und Sichern von Dateien und Ordnern mit dem Dienstprogramm Rsync
Rsync ist ein schnelles und vielseitiges Tool zum Kopieren von Dateien und Ordnern. Das Dienstprogramm kann Daten sowohl lokal als auch auf andere Hosts kopieren, einschließlich Cloud Storage von INTROSERV. Die Optionen des Dienstprogramms ermöglichen es Ihnen, viele Aspekte des Datenkopierens und -spiegelns zu steuern. Eine nützliche Funktion ist die Möglichkeit, Daten während der Übertragung zu komprimieren, wodurch der Netzwerkverkehr reduziert und die Übertragungsgeschwindigkeit verbessert werden kann, wenn die Netzwerkbandbreite der limitierende Faktor ist. Ein weiterer Vorteil besteht darin, dass Rsync die Übertragung von Dateien vermeidet, die nicht aktualisiert werden müssen. Standardmäßig vergleicht es Dateigröße und Änderungszeitpunkt und überträgt nur Dateien, die sich offenbar geändert haben, was beim Synchronisieren großer Verzeichnisse zweifellos Zeit spart.
Warum das Flag -a verwenden? Die Option -a (archive) ist die gängigste Wahl. Sie aktiviert das rekursive Kopieren und bewahrt gängige Dateiattribute: Berechtigungen, Eigentümer, Gruppe, Änderungszeiten und symbolische Links. Da -a die Rekursion bereits einschließt, müssen Sie -r nicht zusätzlich hinzufügen.
Optionen des Dienstprogramms
Schauen wir uns Beispiele für die Verwendung von Rsync zum Kopieren von Dateien und Verzeichnissen in den entfernten Cloud Storage von INTROSERV über das SSH-Protokoll an.
Diese Befehle sind universell einsetzbar. Ersetzen Sie einfach die Zieladresse und den Pfad, um Dateien mit einem beliebigen Remote-Server über SSH zu synchronisieren.
Werfen wir einen Blick auf einige der wichtigsten Optionen des Dienstprogramms, die am häufigsten verwendet werden. Eine detailliertere Liste der verfügbaren Optionen finden Sie in der man-Dokumentation (Befehl man rsync):
-v – zeigt detaillierte Informationen über den Prozess an
-c – überprüft Datei-Prüfsummen
-q – minimale Informationen
-a – Archivierungsmodus
-R – relative Pfade
-y – neuere Dateien nicht überschreiben
-b – erstellt eine Sicherungskopie
-l – kopiert symbolische Links
-L – kopiert den Inhalt von Links
-H – kopiert Hardlinks
-g – Gruppe speichern
-p – Dateiberechtigungen beibehalten
-t – Änderungszeit speichern
-x – nur in diesem Dateisystem arbeiten
-e – ein anderes Übertragungsprotokoll verwenden (zum Beispiel ssh)
-z – Dateien vor der Übertragung komprimieren
--delete – Dateien löschen, die nicht in der Quelle vorhanden sind
--exclude – Dateien ausschließen
--recursive – Verzeichnisse rekursiv auflisten
--no-recursive – Rekursion deaktivieren
--progress – Fortschritt der Dateiübertragung anzeigen
--stat – Übertragungsstatistiken anzeigen
--max-size – maximale Dateigröße für die Übertragung
--bwlimit – Geschwindigkeitsbegrenzung für Dateiübertragungen
Kurze Erläuterung der Syntax
Die Regel des abschließenden Schrägstrichs (/). Hier machen die meisten Benutzer Fehler: /ordner (ohne Schrägstrich) kopiert den Ordner selbst. /ordner/ (mit Schrägstrich) kopiert nur den Inhalt des Ordners.
rsync -az --progress /home/user/test.file boxxxx@storage_ip:/remote_folder/
-a – Archivmodus: eine rekursive Kopie, die Dateiattribute bewahrt
-z – komprimiert die Daten während der Übertragung
--progress – zeigt den Übertragungsfortschritt an
/home/user/test.file – dies ist der Pfad zur Datei und die eigentliche Datei, die übertragen werden muss
boxxxx@storage_ip: – dies ist die Zielressource (in unserem Beispiel handelt es sich um Cloud Storage, es kann aber auch ein Remote-Server sein). boxxxx ist der Benutzername, nach dem Zeichen @ folgt der Ressourcenname oder die IP-Adresse des Remote-Servers
/remote_folder/ – dies ist ein Ordner auf einer entfernten Ressource. In unserem Beispiel im INTROSERV Cloud Storage.
Eine Datei in einen Ordner auf einem entfernten Speicher kopieren
rsync -az --progress /home/user/Desktop/test.file boxxxx@storage_ip:/remote_folder/
Sie werden nach einem Passwort für die Verbindung zum Speicher gefragt. Geben Sie das Passwort ein und fahren Sie fort. Sie sehen den Fortschritt und die Übertragungsgeschwindigkeit der Datei.
Ordner in den Ordner auf einem entfernten Speicher kopieren
Achten Sie auf die Schrägstriche in den Zeilen des Quellordners und des Zielordners. Das Fehlen eines Schrägstrichs im Quellordner bedeutet, dass wir den lokalen Ordner Desktop selbst mit seinem gesamten Inhalt in den Ordner remote_folder übertragen möchten.
rsync -az --progress /home/user/Desktop boxxxx@storage_ip:/remote_folder/
Sie sehen, wie das Verzeichnis und alle darin enthaltenen Dateien übertragen werden.
Den Inhalt eines lokalen Ordners in einen Ordner auf einem entfernten Speicher kopieren
Achten Sie auf den Schrägstrich am Ende des Quellordners. Sein Vorhandensein bedeutet, dass das Dienstprogramm den Inhalt des lokalen Ordners in einen Ordner auf dem entfernten Speicher kopieren soll.
rsync -az --progress /home/user/Desktop/ boxxxx@storage_ip:/remote_folder/
Sie sehen den Fortschritt und die Kopiergeschwindigkeit.
Kopieren eines Ordners von einem entfernten Speicher in einen lokalen Serverordner
Mit Rsync können Sie das Kopieren eines Ordners von einem entfernten Speicher starten. Der Befehl sieht wie folgt aus:
rsync -az --progress boxxxx@storage_ip:/remote_folder /home/user/Desktop/
Sie sehen den Fortschritt und die Geschwindigkeit beim Kopieren eines entfernten Ordners in einen Ordner auf dem lokalen Server.
Kopieren des Inhalts eines Ordners von einem entfernten Speicher in einen lokalen Serverordner
Auch hier lohnt es sich, auf den Schrägstrich am Ende des Quellordnerpfads zu achten. Sein Vorhandensein bedeutet, dass nur der Inhalt des Ordners kopiert werden muss.
rsync -az --progress boxxxx@storage_ip:/remote_folder/ /home/user/Desktop/
Kopieren des Inhalts eines Ordners unter Ausschluss und/oder Einschluss von Dateien
Das Dienstprogramm ermöglicht es Ihnen, explizit anzugeben, welche Dateien übertragen und welche ausgeschlossen werden sollen. Verwenden Sie dazu die Optionen --include und --exclude. Regeln werden in der angegebenen Reihenfolge verarbeitet, daher muss eine Include-Regel vor einer Exclude-Regel stehen, die andernfalls auf dieselbe Datei zutreffen würde.
Testen Sie mit einem Probelauf. Bevor Sie einen Befehl ausführen, der viele Dateien ändert oder löscht, fügen Sie das Flag -n oder --dry-run hinzu. Rsync zeigt Ihnen genau, was es tun würde, ohne tatsächlich etwas zu verschieben oder zu löschen.
rsync -az --progress --include='test.file' --exclude='*' /home/user/Desktop/ boxxxx@storage_ip:/remote_folder/
Dieser Befehl überträgt test.file und schließt alles andere im Quellverzeichnis aus. Die Regel --exclude='*' ist es, die die Übertragung auf die einzige eingeschlossene Datei beschränkt, daher werden hier beide Optionen zusammen benötigt.
Nur Dateien kopieren, die sich von den Dateien im Zielordner unterscheiden
Standardmäßig entscheidet Rsync anhand der Dateigröße und des Änderungszeitpunkts, ob eine Datei übertragen werden muss. Verwenden Sie die Option -c, wenn Sie möchten, dass Rsync stattdessen den Dateiinhalt anhand von Prüfsummen vergleicht. Dies ist zuverlässiger, wenn den Zeitstempeln nicht vertraut werden kann, ist jedoch langsamer, da beide Seiten die Dateien lesen müssen, um die Prüfsummen zu berechnen.
rsync -azc --progress /home/user/Desktop/ boxxxx@storage_ip:/remote_folder/
Mit -c vergleicht Rsync den Inhalt der Quell- und Zieldateien anhand von Prüfsummen und überträgt nur die Dateien, deren Inhalt sich unterscheidet.
Verwendung von Rsync über SSH mit einem nicht standardmäßigen SSH-Port
Um Dateien von/zu einem Server mit geändertem SSH-Port zu übertragen, verwenden Sie die Option -e 'ssh -p port_number'.
Der Befehl zum Kopieren einer Datei auf einen Server, auf dem der SSH-Port auf 44 geändert wurde, sieht wie folgt aus:
rsync -azc --progress -e 'ssh -p 44' /home/user/Desktop/ user@server_ip:/remote_folder/
Sicherheitshinweis: Das Ändern des Standard-SSH-Ports kann automatisiertes Scannen und unerwünschte Verbindungsversuche reduzieren, ersetzt jedoch keine ordnungsgemäße SSH-Sicherheit wie schlüsselbasierte Authentifizierung und Firewall-Regeln. Stellen Sie immer sicher, dass Ihre Firewall den Datenverkehr auf dem von Ihnen gewählten Port zulässt.