Linux: Gnu-Tar Exclui

1

Estou tentando realizar um backup completo de um servidor Linux usando o GNU-Tar. O sistema de arquivos é assim:

├── 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

Eu gostaria de excluir tmp e proc, mas preservar / data / tmp / *. No entanto, usando o seguinte comando:

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

com este arquivo de exclusão:

$cat exclude 
        proc/*
        tmp/*

Acho que / data / tmp também está excluído. Como posso incluir dados / tmp excluindo tmp? Mais importante, como devo entender a interpretação de curingas do tar e excluir a correspondência de padrões. Todo padrão no arquivo de exclusão se comporta como um grep?

Obrigado!

    
por alpha-lemming 03.01.2013 / 10:08

1 resposta

1

Tente modificar o comando tar para tar -X exclude -cvpf - . (ou seja, altere o * para um . ) e modifique o arquivo de exclusão para dizer

./proc/*
./tmp/*

Editar : realmente? Funciona para mim. Aqui está a minha estrutura de diretórios:

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

Este é o conteúdo do meu arquivo ../exclude

./tmp/*

Então eu faço tar cvf ../test.tar -X ../exclude . e obtenho

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

Observe que o conteúdo de ./b/tmp está incluído ( ./b/tmp/farr é coletado), mas os de ./tmp não são ( ./tmp/frotz não é selecionado).

tar é tar (GNU tar) 1.26 no Fedora 16.

    
por 03.01.2013 / 10:26

Tags