Übersicht
`rsync --delete` kopiert den Inhalt eines Quellverzeichnisses in ein Zielverzeichnis und löscht dann Dateien oder Verzeichnisse, die nur im Zielverzeichnis vorhanden sind, um beide Speicherorte perfekt zu synchronisieren. Es wird häufig für Backup-Synchronisierung, Webserver-Bereitstellung und Entwicklungsumgebungs-Synchronisierung verwendet.
Hauptmerkmale
- Perfekte Synchronisierung von Quell- und Zielverzeichnissen
- Löschen von Dateien/Verzeichnissen, die nur im Ziel vorhanden sind
- Effiziente Synchronisierung durch inkrementelle Übertragung
- Unterstützung für die Remote-Synchronisierung über Netzwerke
Wichtige Optionen
Dies sind die wichtigsten Optionen, die zusammen mit `rsync --delete` verwendet werden. Insbesondere die Option `--dry-run` sollte immer zuerst verwendet werden, um schwerwiegende Fehler zu vermeiden.
Synchronisationssteuerung
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`rsync-delete` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele
`rsync --delete` ist eine leistungsstarke Funktion, daher ist es wichtig, immer zuerst die Ergebnisse mit der Option `--dry-run` zu überprüfen.
Vorschau der Löschoperation (obligatorisch)
rsync -avn --delete /path/to/source/ /path/to/destination/
Überprüfen Sie, welche Dateien gelöscht werden, wenn Sie das Quellverzeichnis (`/path/to/source`) und das Zielverzeichnis (`/path/to/destination`) synchronisieren. Es werden keine tatsächlichen Änderungen vorgenommen.
Tatsächliche Synchronisierung und Löschung
rsync -av --delete /path/to/source/ /path/to/destination/
Nachdem Sie die Sicherheit mit der Vorschau überprüft haben, synchronisieren Sie die Quelle und das Ziel tatsächlich und löschen Sie Dateien, die nur im Ziel vorhanden sind. `-a` steht für Archivmodus und `-v` für ausführliche Ausgabe.
Synchronisieren und Löschen unter Ausschluss bestimmter Dateien/Verzeichnisse
rsync -av --delete --exclude='logs/' --exclude='*.tmp' /path/to/source/ /path/to/destination/
Löscht Dateien im Ziel, die in der Quelle nicht vorhanden sind, schließt jedoch bestimmte Dateien oder Verzeichnisse (z. B. das Verzeichnis `logs/` und Dateien `*.tmp`) vom Löschen aus und synchronisiert sie.
Synchronisieren und Löschen mit einem Remote-Server
rsync -av --delete /path/to/local/source/ user@remote_host:/path/to/remote/destination/
Synchronisiert den Inhalt eines lokalen Verzeichnisses mit einem Verzeichnis auf einem Remote-Server und löscht Dateien, die nur auf dem Remote-Server vorhanden sind. Die Übertragung erfolgt sicher über SSH.
Tipps & Vorsichtsmaßnahmen
`rsync --delete` kann ein sehr mächtiger und destruktiver Befehl sein. Beachten Sie daher unbedingt die folgenden Punkte bei der Verwendung.
Wichtigste Vorsichtsmaßnahmen
- **Verwenden Sie immer zuerst `--dry-run` (-n)**: Überprüfen Sie unbedingt, welche Dateien gelöscht werden, bevor Sie die Ausführung tatsächlich durchführen.
- **Überprüfen Sie die Quell- (Source) und Zielpfade (Destination)**: Falsche Pfadangaben können zu unbeabsichtigtem Datenverlust führen.
- **Backup ist unerlässlich**: Führen Sie immer ein Backup durch, bevor Sie mit wichtigen Daten arbeiten.
- **Bedeutung des Schrägstrichs (/)**: Wenn der Quellpfad mit einem Schrägstrich endet, werden die *Inhalte* des Verzeichnisses kopiert. Wenn nicht, wird das *Verzeichnis selbst* kopiert. Dieser Unterschied ist wichtig, wenn Sie `--delete` verwenden.
Unterschied des Pfad-Schrägstrichs (/)
Das Vorhandensein oder Fehlen eines abschließenden Schrägstrichs im Quellpfad beeinflusst das Verhalten.
- `rsync -av --delete source/ dest/`: Kopiert die *Inhalte* des `source`-Verzeichnisses nach `dest` und löscht Dateien, die nur in `dest` vorhanden sind. Das `source`-Verzeichnis selbst wird nicht in `dest` erstellt.
- `rsync -av --delete source dest/`: Kopiert das `source`-Verzeichnis *selbst* in das `dest`-Verzeichnis. Das bedeutet, der Pfad `dest/source/` wird erstellt. Wenn in `dest` eine andere Datei mit demselben Namen wie das `source`-Verzeichnis vorhanden ist, kann diese gelöscht werden.