Übersicht
Die Ausschlussfunktion von `rsync` ist für komplexe Dateisynchronisationsszenarien von entscheidender Bedeutung. Durch das Ausschließen bestimmter Protokolldateien, temporärer Dateien oder Metadaten von Versionskontrollsystemen (.git, .svn) aus dem Synchronisationsziel können Sie die Übertragungszeit verkürzen, Speicherplatz sparen und die Kopie unnötiger Daten vermeiden.
Hauptmerkmale
Dies sind die Kernmerkmale der Ausschlussfunktion von `rsync`.
- **Ausschluss basierend auf Mustern**: Sie können Dateien oder Pfade basierend auf Dateinamen oder Pfaden mithilfe von Wildcard-Mustern (Glob) ausschließen.
- **Ausschluss basierend auf Dateilisten**: Sie können Muster, die ausgeschlossen werden sollen, in einer separaten Datei auflisten und verwalten.
- **Flexible Regelanwendung**: Sie können komplexe Einbeziehungs-/Ausschlussregeln in Kombination mit der Option `--include` definieren.
- **Leistungsoptimierung**: Reduziert unnötige Dateiübertragungen, um die Synchronisationsgeschwindigkeit zu verbessern.
Wichtige Optionen
Dies sind die wichtigsten Optionen, die im Befehl `rsync` zum Ausschließen von Dateien und Verzeichnissen verwendet werden.
Angabe von Ausschlussregeln
Weitere nützliche Optionen
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`rsync-exclude` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele
Dies sind praktische Anwendungsbeispiele für die Verwendung von Ausschlussoptionen mit `rsync`.
Bestimmte Dateierweiterungen ausschließen
rsync -av --exclude='*.log' --exclude='*.tmp' /path/to/source/ /path/to/destination/
Synchronisiert Dateien aus dem Quellverzeichnis in das Zielverzeichnis und schließt dabei `.log`- und `.tmp`-Dateien aus.
Bestimmte Verzeichnisse ausschließen
rsync -av --exclude='node_modules/' --exclude='.git/' /path/to/source/ /path/to/destination/
Synchronisiert das Quellverzeichnis und schließt dabei die Verzeichnisse `node_modules` und `.git` aus.
Verwendung einer Ausschlussliste-Datei
rsync -av --exclude-from=exclude_list.txt /path/to/source/ /path/to/destination/
Schließt Elemente von der Synchronisation aus, indem Muster aus der Datei `exclude_list.txt` verwendet werden. **Beispielinhalt von exclude_list.txt:** ``` *.bak /temp_files/ logs/ ```
Nur bestimmte Dateien einschließen und den Rest ausschließen
rsync -av --include='*.conf' --exclude='*' /path/to/source/ /path/to/destination/
Schließt standardmäßig alle Dateien aus und schließt nur Dateien mit der Erweiterung `.conf` ein. Die Reihenfolge von `--include` und `--exclude` ist wichtig.
Bestimmte Dateien beim Synchronisieren mit einem entfernten Server ausschließen
rsync -avz --exclude='.DS_Store' --exclude='cache/' /path/to/local/user@remote_host:/path/to/remote/
Synchronisiert den Inhalt eines lokalen Verzeichnisses mit einem entfernten Server und schließt dabei die Dateien `.DS_Store` und das Verzeichnis `cache/` aus.
Tipps & Hinweise
Dies sind Tipps und Hinweise zur effektiven Nutzung der Ausschlussoptionen von `rsync` und zur Vermeidung potenzieller Probleme.
Verständnis der Musterabgleichregeln
Ausschlussmuster funktionieren gemäß den Filterregeln von `rsync`.
- **Wildcards**: `*` stimmt mit einer beliebigen Zeichenfolge überein, `?` stimmt mit einem einzelnen Zeichen überein. `**` stimmt über Verzeichnisgrenzen hinweg überein.
- **Pfade**: Wenn ein Muster mit `/` beginnt, ist es relativ zum Stammverzeichnis des Quellverzeichnisses. Wenn es mit `/` endet, stimmt es nur mit Verzeichnissen überein.
- **Relative Pfade**: Wenn ein Muster kein `/` enthält, stimmt es auf allen Verzeichnisebenen überein. Beispiel: `--exclude='temp'` schließt sowohl `/path/to/source/temp` als auch `/path/to/source/subdir/temp` aus.
Wichtigkeit der Optionsreihenfolge
Die Optionen `--include` und `--exclude` werden in der Reihenfolge verarbeitet, in der sie in der Befehlszeile erscheinen. Um also bestimmte Dateien einzuschließen und den Rest auszuschließen, müssen Sie zuerst `--include` und dann `--exclude='*'` verwenden.
- `--include='*.txt' --exclude='*'` (Alle `.txt`-Dateien einschließen, den Rest ausschließen)
- `--exclude='*' --include='*.txt'` (Alle Dateien ausschließen, auch `.txt`-Dateien werden ausgeschlossen - unerwartetes Ergebnis)
Nutzung von Testläufen (`--dry-run`)
Bevor Sie wichtige Daten tatsächlich synchronisieren, verwenden Sie immer die Option `-n` oder `--dry-run`, um das erwartete Verhalten zu überprüfen. Dies ist sehr effektiv, um unerwünschte Dateiausschlüsse oder -einschlüsse zu verhindern.
- `rsync -avn --exclude='*.log' /path/to/source/ /path/to/destination/`
Option `-vv` zur Fehlersuche
Wenn Ausschlussregeln nicht wie erwartet funktionieren, hilft die zusätzliche Option `-vv` (verbose) bei der Fehlersuche, indem sie detaillierte Informationen darüber ausgibt, welche Dateien `rsync` überspringt und welche Regeln sie ausgeschlossen haben.
- `rsync -avv --exclude='*.bak' /path/to/source/ /path/to/destination/`