Ausschließen eines Ordners aus dem Basisverzeichnis mit der Rsync-Ausschlussliste

6970
Alex

Ich versuche, rsyncOS X 10.8.4 mit einer Ausschlussdatei einzurichten. Es erkennt jedoch nicht die Pfade, die ich ausschließen möchte.

Ich möchte das ABCHome-Verzeichnis des Benutzers in einen Ordner kopieren, der Backup_Macauf einem externen externen Laufwerk aufgerufen wird .

rsync -av --progress --exclude-from='/Users/ABC/excludelist.txt' /Users/ABC /Volumes/Backup_Mac 

excludelist.txt enthält

- /Users/ABC/Dropbox/ 

Es schließt den Dropbox-Ordner nicht aus.

Nun, wenn ich die Ausschlussdatei in ändere

- Dropbox/ 

es sind ABC/Dropboxaber auch alle anderen Ordner mit dem Namen Dropbox an anderer Stelle im Dateibaum. Dies ist nicht das, was ich will - ich möchte nur den Ordner ausschließen, ABC/Dropboxaber alle anderen genannten Ordner einschließen Dropbox, z ABC/Application Support/Dropbox.

Gibt es einen Hinweis, wie das zu erreichen ist? Wie muss ich den Ausschlusspfad angeben, relativ zum gesicherten Ordner oder relativ zum Stammordner?

4
Enthält Ihre Liste wörtlich einen Bindestrich und ein Leerzeichen vor dem Pfad? slhck vor 10 Jahren 1
Es tut. Ich habe verschiedene Varianten ausprobiert (Bindestrich und / oder Leerzeichen entfernen), keine davon funktioniert. Alex vor 10 Jahren 0

1 Antwort auf die Frage

4
slhck

Einfach ausgedrückt, rsyncverwendet relative Pfade, um zu bestimmen, was ausgeschlossen werden soll. Aus der  rsyncManpage :

Wenn das Muster mit einem / beginnt, wird es an einer bestimmten Stelle in der Hierarchie der Dateien verankert, andernfalls wird es mit dem Ende des Pfadnamens abgeglichen. Dies ähnelt einem führenden ^ in regulären Ausdrücken. Daher würde "/ foo" mit einer Datei mit dem Namen "foo" in der "Wurzel der Übertragung" übereinstimmen (für eine globale Regel) (…)

Die einfachste Möglichkeit, dies zu umgehen, ist die Verwendung von --relative/ -R, wodurch Sie Dropbox wie folgt ausschließen können:

rsync -avR --exclude='/Users/alex/Dropbox' /Users/alex /Volumes/Backup_Mac 

Der Name relativebezieht sich darauf, wie rsyncdie Pfade gesendet werden, und hat daher nichts mit der Angabe von absoluten Ausschlussmustern zu tun.

Beachten Sie, dass hierdurch die vollständige Verzeichnisstruktur erstellt /Volumes/Backup_Mac/Users/alex/wird. In Ihrem Fall ist das jedoch keine besonders schlechte Sache.

Das ist in der Tat die Lösung. Vielen Dank mein Freund. Es funktioniert auch mit der 'Exclude-Datei', super! Alex vor 10 Jahren 0
** Bonus Followup: ** Muss das Volume-Verzeichnis ausgeschlossen werden? Ich mache Folgendes, aber die Fortschrittsmeldungen sehen so aus, als würden Dateien im Verzeichnis Volumes berücksichtigt: `rsync --archive --progress --verbose --inplace - exclude '/ Volumes' / / Volumes / NetBackup / iMacRsync / ` flipdoubt vor 8 Jahren 0
@flipdoubt Da `/ Volumes` ein direktes Kind der Wurzel ist, müssen Sie es ausschließen, wenn Sie` / `synchronisieren möchten. slhck vor 8 Jahren 1