O shell expande caracteres curinga em argumentos, portanto, a maioria dos aplicativos não precisa executar nenhuma expansão de caractere curinga. No entanto, a lista de exclusão do tar faz suporta curingas, que correspondem aos curingas suportados pelos shells tradicionais. Cuidado, pois pode haver pequenas diferenças; por exemplo, o tar não distingue *
e **
como ksh, bash e zsh can. Com tar, *
pode corresponder a qualquer caractere, incluindo /
, portanto, por exemplo, */.svn
exclui um arquivo chamado .svn
em qualquer nível da hierarquia. Você pode usar tar --no-wildcars-match-slash
e, nesse caso, *
não corresponde aos separadores de diretório.
Por exemplo, excluir /home/me/websites/*log.txt
exclui /home/me/websites/log.txt
, /home/me/websites/foo-log.txt
e /home/me/websites/subdir/log.txt
. A exclusão de /home/me/websites/**/vendor
exclui /home/me/websites/one/vendor
e /home/me/websites/one/two/vendor
, mas não /home/me/websites/vendor
. Com a opção --no-wildcars-match-slash
, /home/me/websites/*log.txt
não exclui /home/me/websites/subdir/log.txt
e /home/me/websites/**/vendor
não exclui /home/me/websites/one/two/vendor
.
tar … --exclude='/home/www-data/sites/*include' …
exclui os arquivos e diretórios em /home/www-data/sites
cujo nome termina com include
. Você pode sair sem as aspas, mas não se você escrever (porque o shell expandiria os curingas antes que --exclude /home/www-data/sites/*include
tar
possa vê-los) ou se você usar um shell que sinalize um erro em curingas não correspondentes (por exemplo, zsh em sua configuração padrão - e recomendada).
A opção --exclude-from
requer um nome de arquivo. O arquivo deve conter um padrão por linha. Não confunda --exclude
(seguido por um padrão) e --exclude-from
(seguido pelo nome de um arquivo contendo padrões).