2016-07-07 33 views
0

würde Ich mag einrsync: Ausschließen Verzeichnis in einem Zweig, aber nicht in anderen

rsync master slave 

mit folgenden Einschränkung tun: Das Verzeichnis master/foo/xxx sollte nicht kopiert ausgeschlossen werden, aber das Verzeichnis master/bar/xxx soll kopiert werden .

I

rsync --exclude xxx master slave 

nicht schreiben kann, weil dies auch master/bar/xxx ausschließen würde. Zu meiner Überraschung kann ich auch nicht

rsync --exclude master/foo/xxx master slave 

verwenden, weil es BEIDE xxx Verzeichnisse kopiert (warum?).

Natürlich kann ich das Schreiben zwei rsync zurückkehren:

rsync --exclude xxx master slave 
rsync master/bar/xxx slave/bar/xxx 

aber ich frage mich, ob dies kann nicht einfacher durchgeführt werden.

Antwort

1

Der richtige Befehl ist dies:

rsync --exclude /foo/xxx master slave 

/Include Regeln mit / sind an der Wurzel der Übertragung (nicht die Wurzel des Dateisystems) relativ Anfang auszuschließen.

Regeln mit anderen Zeichen werden zum Ende jeden Dateinamen angepasst starten, arbeiten foo/xxx würde so auch, aber vielleicht passen Verzeichnisse, die Sie nicht erwartet haben, wenn es ein foo woanders im Verzeichnisbaum ist.

Ihr Befehl hat nicht arbeiten, weil "Master" außerhalb der Wurzel der Übertragung ist.