2

Я хотел бы исключить некоторые каталоги из резервной копии. Но не все с конкретным именем - только те, которые лежат под указанным корневым каталогом. С rsync я бы использовал исключающую маску следующим образом:

/path/excludeRoot/**/directoryToExclude

Это означает, что все каталоги с именем directoryToExclude лежащим ниже /path/excludeRoot будут исключены.

С другой стороны: будет включен каждый каталог с именем directoryToExclude но лежащий в другом месте

Можно ли сделать это с помощью tar?

1 ответ1

1

То есть, к сожалению , не прямолинейно возможно как --exclude семейство вариантов не является достаточно мощным.

Один из подходов состоит в том, чтобы получить список объектов с использованием внешней программы (скажем, find), а затем использовать ключ -T чтобы указать tar, какие файлы / объекты должны быть включены.

Цитата из справочной страницы:

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

Если имена файлов содержат специальные символы (и / или пробелы), я бы добавил --null в командную строку tar; для создания списка я бы также использовал -print0 с find - для разделения файлов / dirs с символом NUL (\000).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .