tar - como excluir da seguinte forma: “/ path / excludeRoot / ** / directoryToExclude”

2

Eu gostaria de excluir alguns diretórios do backup. Mas nem todos com nome específico - apenas aqueles que estão sob o diretório raiz especificado. Com o rsync eu usaria excluir máscara assim:

/path/excludeRoot/**/directoryToExclude

que significa que todos os diretórios com nome directoryToExclude mentindo abaixo de /path/excludeRoot será excluído.

Por outro lado: cada diretório com o nome directoryToExclude , mas deitado em outro lugar, ser incluído

É possível fazer isso com o tar?

    
por ardabro 22.12.2012 / 23:26

1 resposta

1

Isto infelizmente não é possível, pois a família de opções --exclude não é poderosa o suficiente.

Uma abordagem seria obter a lista de objetos usando um programa externo (digamos, find ) e, em seguida, usar a opção -T para informar ao tar quais arquivos / objetos devem ser incluídos.

Citando a página man:

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

Se os nomes dos arquivos contiverem símbolos especiais (e / ou espaços), eu adicionaria --null à linha de comando tar; para gerar a lista eu também usaria -print0 com find - para separar os arquivos / dirs com o caracter NUL ( %code%0 ).

    
por 22.12.2012 / 23:48

Tags