Назад | Перейти на главную страницу

Linux: Gnu-Tar исключает

Я пытаюсь выполнить полное резервное копирование сервера Linux с помощью GNU-Tar. Файловая система выглядит так:

├── backup
├── data
│   ├── d1
│   ├── d2
│   └── tmp
│       ├── tt1
│       ├── tt2
│       └── tt3
├── exclude
├── home
│   ├── a
│   ├── b
│   ├── c
│   └── d
├── proc
│   ├── pa
│   ├── pb
│   ├── pc
│   └── pd
├── sys
│   ├── s1
│   ├── s2
│   ├── s3
│   └── s4
└── tmp
    ├── t1
        ├── t2
        └── t3

Я бы хотел исключить tmp и proc, но сохранить / data / tmp / *. Однако с помощью следующей команды:

$tar -X exclude -cvpf -  * | wc -l

с этим файлом исключения:

$cat exclude 
        proc/*
        tmp/*

Я считаю, что / data / tmp также исключен. Как я могу включить data / tmp, исключая tmp? Что еще более важно, как мне понять интерпретацию подстановочных знаков tar и исключить сопоставление с образцом. Каждый ли шаблон в файле исключения ведет себя как grep?

Спасибо!

Попробуйте изменить tar приказать tar -X exclude -cvpf - . (т. е. изменить * к .) и изменив файл исключения, чтобы сказать

./proc/*
./tmp/*

редактировать: действительно? Работает для меня. Вот моя структура каталогов:

|-- a
| |-- foo
|-- b
| |-- bar
| |-- tmp
| | |-- farr
|-- tmp
| |-- frotz

Вот содержимое моего ../exclude файл

./tmp/*

Тогда я делаю tar cvf ../test.tar -X ../exclude . и получить

./
./b/
./b/bar
./b/tmp/
./b/tmp/farr
./tmp/
./a/
./a/foo

Обратите внимание, что содержимое ./b/tmp включены (./b/tmp/farr подобрано), но таковые из ./tmp не (./tmp/frotz не подбирается).

смола tar (GNU tar) 1.26 в Fedora 16.