Excluir diretório com tar [duplicado]

1
find /home/karl/dev/beer/ -printf "%P\n" | tar --exclude='./.git' -czf beer.tgz --no-recursion -C /home/karl/dev/beer/ -T -

O comando ainda inclui o diretório .git.

    
por Karl Morrison 22.04.2017 / 20:41

2 respostas

0

Você pode tentar excluir o diretório em encontrar assim:

find /home/karl/dev/beer -path .git -prune -printf "%P\n" | tar -czf beer.tar.gz --no-recursion  -T -

Você também pode verificar esta discussão.

    
por Romeo Ninov 22.04.2017 / 20:47
0

de man find :

 -printf
 ....
 %P     File's name with the name of the starting-point under which it was found 
        removed.

Então você está excluindo um diretório que não existe na sua saída. Se você olhar para a saída do seu comando find antes de canalizá-lo (geralmente uma boa ideia), verá que ele não possui nenhum ./ . Portanto, você deve usar --exclude='.git' não ./.git

Mas, em vez de usar find para isso, convém usar globstar para tornar a recursão de globbing:

shopt -s globstar
tar --exclude='.git' -czvf beer.tar.gz /home/karl/dev/beer/**
    
por Zanna 22.04.2017 / 21:29