tar - как исключить так: "/ путь /excludeRoot/**/directoryToExclude"
Я хотел бы исключить некоторые каталоги из резервной копии. Но не все с определенным именем - только те, которые лежат под указанным корневым каталогом. С rsync я бы использовал исключающую маску следующим образом:
/path/excludeRoot/**/directoryToExclude
что означает, что все каталоги с именем directoryToExclude
лежащий ниже /path/excludeRoot
будут исключены.
С другой стороны: каждый каталог с именем directoryToExclude
но лежать в другом месте будут включены
Можно ли сделать это с помощью tar?
1 ответ
Это, к сожалению, не так просто, как --exclude
Семейство вариантов недостаточно мощное.
Одним из подходов было бы получить список объектов с использованием внешней программы (скажем, find
), а затем использовать -T
Переключить, чтобы сказать tar, какие файлы / объекты должны быть включены.
Цитата из справочной страницы:
-T, --files-from FILE
get names to extract or create from FILE
Если имена файлов содержат специальные символы (и / или пробелы), я бы добавил --null
в командную строку tar; для создания списка я бы также использовал -print0
с find - для разделения файлов /dirs с NUL (\000
) персонаж.