tar - wie kann man dies ausschließen: "/ path / excludeRoot / ** / directoryToExclude"

545
ardabro

Ich möchte einige Verzeichnisse von der Sicherung ausschließen. Aber nicht alle mit einem bestimmten Namen - nur diejenigen, die unter dem angegebenen Stammverzeichnis liegen. Bei rsync würde ich die Ausschlussmaske folgendermaßen verwenden:

/path/excludeRoot/**/directoryToExclude 

Dies bedeutet, dass alle Verzeichnisse mit dem directoryToExcludedarunter liegenden Namen /path/excludeRootausgeschlossen werden.

Auf der anderen Seite: Jedes Verzeichnis, dessen Name directoryToExcludeaber anderswo liegt, wird eingeschlossen

Kann man es mit Teer machen?

2

1 Antwort auf die Frage

1
Wejn

Das ist leider nicht ohne weiteres möglich, da die --excludeOptionenfamilie nicht stark genug ist.

Ein Ansatz wäre, die Liste der Objekte mithilfe eines externen Programms (beispielsweise) abzurufen findund dann mit -Tdem Befehl tar anzugeben, welche Dateien / Objekte enthalten sein sollen.

Zitieren aus der Manpage:

-T, --files-from FILE get names to extract or create from FILE 

Wenn die Dateinamen spezielle Symbole (und / oder Leerzeichen) enthalten, würde ich --nulldie Befehlszeile von tar hinzufügen . -print0Um die Liste zu erzeugen, würde ich auch mit find - die Dateien / Verzeichnisse mit dem NUL ( \000) - Zeichen trennen .