In einem rsync versuche ich, Unterverzeichnisse auszuschließen, die einem Muster entsprechen. Aber ich kann es nicht zum Laufen bringen. Ich habe einige Beispiele verfolgt, die hier und bei Google gefunden wurden. Aber ich bekomme nicht die richtigen Ergebnisse. Hier ist das Optionsbit meines Befehls:
-avh --exclude 'branch*' --stats --delete --link-dest=$LNK
Meine Quellverzeichnisstruktur ist
/root
/branch1
/branch2
/branch3
/other
/stillAnother
/etc
Dies ist Teil eines Sicherungsskripts. $ LNK ist ein Link zum rsync-Ziel des Vortages.
Ich möchte nicht / root / branch1, / root / branch2, / root / branch3. oder deren zu synchronisierende Inhalte. Aber sie sind.
Hier sind die Ausschlussbits, die ich bereits ausprobiert habe:
--exclude=branch*
--exclude='branch*'
--exclude '/branch*'
--exclude /branch*
Vielen Dank für jede Hilfe / Beratung.
BEARBEITEN - um das Flag "Mögliches Duplikat" zu adressieren
Diese Frage bezieht sich auf eine bekannte Liste von Verzeichnissen. Ich muss alle Verzeichnisse ausschließen, die einem Muster folgen, auch wenn diese Verzeichnisse noch nicht existieren. dh aus meinem Beispiel können andere benannte Verzeichnisse /branch*
hinzugefügt werden. Ich muss mein Skript zukunftssicher machen und vermeiden, das Skript zu bearbeiten, wenn ein Verzeichnis hinzugefügt wird, das dem Muster entspricht, da diese Verzeichnisse möglicherweise temporär sind.
*branch*
oder/root/branch*
nicht, die Kurzformbranch*
wird nicht gefunden und ist daher nicht ausgeschlossen.--exclude '*branch*
)Antworten:
Sie schließen Regel ist korrekt. Rsync löscht jedoch keine ausgeschlossenen Dateien auf dem Ziel ohne den zusätzlichen Parameter
--delete-excluded
:Beispiel:
quelle
-avh --exclude 'branch*' --stats --delete --delete-excluded --link-dest=$LNK
Letzte Nacht" geändert und die Verzeichnisse / branch * gesichert.rsync Version 3.1.3 (möglicherweise früher, nicht überprüft) schließt Unterverzeichnisse mit dieser Syntax korrekt aus (offensichtlich durch
exclude_dirname
das Muster ersetzen, das Sie ausschließen möchten):Dies funktioniert auch mit Platzhaltern. Ursprüngliche Frage verwendet
'branch*'
, so funktioniert dies:Hoffe das hilft.
quelle