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).