Подтвердить что ты не робот

Tar исключить отдельные файлы/каталоги, а не шаблоны

Я использую tar для ежедневного резервного копирования сервера и хочу избежать резервного копирования /system и/sys системных каталогов, но без исключения каких-либо каталогов с именем "proc" или "sys" где-то еще в дереве файлов.

Для примера, имеющего следующее дерево каталогов ( "bla" - обычные файлы):

# find
.
./sys
./sys/bla
./foo
./foo/sys
./foo/sys/bla

Я хотел бы исключить ./sys, но не ./foo/sys.

Я не могу найти шаблон --exclude, который делает это...

# tar cvf /dev/null * --exclude=sys
foo/

или...

# tar cvf /dev/null * --exclude=/sys
foo/
foo/sys/
foo/sys/bla
sys/
sys/bla

Любые идеи? (Linux Debian 6)

4b9b3361

Ответ 1

Вы можете указать абсолютные пути к шаблону exclude, таким образом будут заархивированы другие каталоги sys или proc:

tar --exclude=/sys --exclude=/proc /

Ответ 2

В этом случае вы можете использовать:

--anchored --exclude=sys/\*

потому что в случае, если ваш tar не показывает ведущую "/", у вас есть проблема с фильтром.

Ответ 3

Используя tar, вы можете исключить каталоги, поместив файл тега в любую директорию, которая должна быть пропущена.

Создайте файлы тегов,

touch /sys/.exclude_from_backup
touch /proc/.exclude_from_backup

Затем

tar -czf backup.tar.gz --exclude-tag-all=.exclude_from_backup *