Linux / Befehl rsync: Dateien und Verzeichnisse synchronisieren

rsync kopiert Dateien und synchronisiert Änderungen effizient zwischen lokalen oder entfernten Standorten. Es ist nützlich für wiederholte Übertragungen großer Datenmengen, aber wenn der Zielpfad und die Löschoptionen falsch angegeben werden, können Daten verloren gehen.

Im Grunde wählt es die Übertragungsziele aus, indem Größe und Änderungszeiten verglichen werden. -a ist der Archivmodus, der rekursives Kopieren und die Erhaltung wichtiger Metadaten kombiniert. source/ kopiert den Inhalt eines Verzeichnisses, während source das Verzeichnis selbst zum Ziel kopiert; dieser Unterschied ist wichtig. Für SSH-ähnliche Remote-Pfade verwenden Sie user@host:path.

Grundlegende Syntax

rsync [options] source destination

Die installierte Implementierung und die Optionen können je nach Distribution variieren. Überprüfen Sie die Beschreibung für Ihr aktuelles System mit man rsync.

Beispiele

Vorschau vor den tatsächlichen Änderungen

Überprüfen Sie den Zielpfad und den Kopierbereich mit der Ausgabeliste.

rsync -av --dry-run project/ backup/project/

Synchronisierung lokaler Verzeichnisse

Kopiert den Inhalt des Quellverzeichnisses in das Zielverzeichnis.

rsync -av project/ backup/project/

Remote-Übertragung via SSH

rsync muss auch auf dem Remote-System installiert sein, und das Konto/der Pfad muss auf die tatsächlichen Werte geändert werden.

rsync -av project/ alice@server.example.com:/home/alice/project/

Vorschau vor dem eigentlichen Kopieren

rsync --dry-run zeigt die Liste der Dateien an, die geändert werden sollen, kopiert die Daten jedoch nicht wirklich. Die im Ziel erstellte Verzeichnisstruktur variiert je nachdem, ob ein abschließender Schrägstrich vorhanden ist.

rsync -av --dry-run source/ backup/

Beispielausgabe, wenn source/ notes.txt enthält, das Ziel jedoch nicht:

sending incremental file list
notes.txt

Dieser Befehl bedeutet, dass der Inhalt des Verzeichnisses source und nicht das Verzeichnis selbst mit backup/ synchronisiert wird. Wenn Sie --delete hinzufügen, können Dateien, die nur im Ziel vorhanden sind, gelöscht werden. Überprüfen Sie daher unbedingt die --dry-run-Ergebnisse. Nach der tatsächlichen Ausführung sollten wichtige Dateien anhand der Dateianzahl, Größe oder Prüfsumme überprüft werden. Für die damit verbundenen Bedingungen und Verfahren siehe tar-Backups erstellen und Wiederherstellung überprüfen. Für die damit verbundenen Bedingungen und Verfahren siehe Server-Backups erstellen und unabhängige Zustandsprüfungen durchführen.

-a kombiniert rekursives Kopieren mit der Erhaltung mehrerer Metadatenfelder, ist jedoch kein vollständiges Backup jeder ACL, erweiterten Attributs oder harten Verknüpfung. Wählen Sie zusätzliche Optionen basierend auf den erforderlichen Metadaten, dem Ziel-Dateisystem und den Berechtigungen. Testen Sie bei wichtigen Daten auch das Wiederherstellen vom Zielort aus.

Hauptoptionen und Format

Optionen/Format Beschreibung
-a Dies ist der Archivmodus, der rekursives Kopieren und die Erhaltung der Hauptattribute kombiniert.
-v Zeigt detaillierte zu verarbeitende Elemente an.
-n, --dry-run Druckt den Arbeitsplan, ohne tatsächliche Änderungen vorzunehmen.
--delete Löscht Ziel-Dateien, die nicht in der Quelle vorhanden sind. Eine vorherige Überprüfung ist erforderlich.
--exclude=pattern Schließt Dateien, die dem angegebenen Muster entsprechen, vom Transfer aus.
-e 'ssh -p port' Gibt den Remote-Shell-Befehl und den Port an.

Vorsichtsmaßnahmen bei der Verwendung

--delete entfernt tatsächlich die Ziel-Dateien. Überprüfen Sie die nachgestellten Schrägstriche in den Quell- und Zielpfaden sowie die Filterregeln und überprüfen Sie die Löschliste mit --dry-run. rsync ist selbst keine Backup-Lösung, und Fehler oder Beschädigungen in der Quelle können ebenfalls repliziert werden. Fernübertragungen erfordern normalerweise rsync auf beiden Seiten, und der Archivmodus bewahrt ACLs oder erweiterte Attribute nicht vollständig.

Häufig gestellte Fragen

Was ist der Unterschied zwischen source und source/ in rsync?

source/ kopiert den Inhalt dieses Verzeichnisses, während source das Verzeichnis selbst unter dem Ziel kopiert.

Offizielle Dokumentation

Sie können das genaue Verhalten der Optionen und die Unterschiede in der Implementierung in der offiziellen rsync-Dokumentation nachprüfen.