Em um rsync, estou tentando excluir subdiretórios que correspondem a um padrão. Mas não consigo fazer funcionar. Eu segui vários exemplos encontrados aqui e no Google. Mas não obtenho os resultados corretos. Aqui está a parte do meu comando:
-avh --exclude 'branch*' --stats --delete --link-dest=$LNK
Minha estrutura de diretórios de origem é
/root
/branch1
/branch2
/branch3
/other
/stillAnother
/etc
Isso faz parte de um script de backup. $ LNK é um link para o destino rsync do dia anterior.
Eu não quero / root / branch1, / root / branch2, / root / branch3. ou seu conteúdo a ser sincronizado. Mas eles são.
Aqui estão os bits de exclusão que eu já tentei:
--exclude=branch*
--exclude='branch*'
--exclude '/branch*'
--exclude /branch*
Obrigado por qualquer ajuda / conselho.
EDIT - para endereçar o sinalizador "possível duplicado"
Esta pergunta é referente a uma lista conhecida de diretórios. Preciso excluir todos os diretórios que seguem um padrão, mesmo que esses diretórios ainda não existam. ou seja, do meu exemplo, outros diretórios nomeados /branch*
podem ser adicionados. Preciso tornar meu script à prova de futuro e evitar a edição do script quando um diretório que corresponda ao padrão for adicionado, pois esses diretórios podem ser temporários.
*branch*
ou/root/branch*
não, obranch*
formulário curto - curto não é encontrado e, portanto, não é excluído.--exclude '*branch*
)Respostas:
Você exclui a regra está correta. No entanto, o rsync não excluirá os arquivos excluídos no destino sem o parâmetro extra
--delete-excluded
:Exemplo:
fonte
-avh --exclude 'branch*' --stats --delete --delete-excluded --link-dest=$LNK
o backup da noite passada e ainda fiz o backup dos diretórios / branch *.A versão 3.1.3 do rsync (possivelmente anterior, não foi verificada) exclui corretamente os subdiretórios usando esta sintaxe (obviamente substituindo
exclude_dirname
pelo padrão que você deseja excluir):Isso também funciona com caracteres curinga. Utiliza a pergunta original
'branch*'
, então isso funciona:Espero que isto ajude.
fonte