Wie schließe ich einen bestimmten Ordner am Ziel aus, wenn ich rsync verwende?

9

Betrachten Sie das folgende Beispiel:

/source
  /source/folder1
  /source/folder2
  /source/folder3

/destination
  /destination/folder2
  /destination/folder3
    /destination/folder3/mytestfolder1
  /destination/folder4
    /destination/folder4/mytestfolder1
    /destination/folder4/mytestfolder2

Ich möchte die Quelle mit dem Ziel synchronisieren, aber "/ destination / folder4 / mytestfolder1" muss ignoriert werden.

Ich habe versucht, den Ausschlussparameter zu verwenden

rsync -av --delete --progress --exclude "mytestfolder1" /source/ /destination/

Dies ignoriert jedoch alle Ordner mit dem Namen "mytestfolder1".

Wenn ich den vollständigen Pfad angegeben habe, wird nichts ignoriert, da rsync den Eindruck hat, dass sich der Pfad in der Quelle und nicht im Ziel befindet.

rsync -av --delete --progress --exclude "/destination/folder4/mytestfolder1" /source/ /destination/

rsync -av --delete --progress --exclude "destination/folder4/mytestfolder1" /source/ /destination/

Ich habe im Internet gesucht, aber nichts hilfreiches gefunden.

Danke für die Hilfe. :) :)

mrjayviper
quelle

Antworten:

9

Wenn Sie einen absoluten Pfad in einem Filter verwenden (Einschließen / Ausschließen), wird dieser ab dem Stamm der Synchronisation interpretiert. Sie schließen kein Verzeichnis in der Quelle oder ein Verzeichnis im Ziel aus, sondern ein Verzeichnis in der Baumstruktur, das synchronisiert werden soll.

Somit:

rsync -av --delete --progress --exclude " / folder4 / mytestfolder1 " / source / / destination /
Gilles 'SO - hör auf böse zu sein'
quelle