Я пытаюсь выполнить полное резервное копирование сервера 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.