Eu encontrei o problema. Meus problemas foram causados pela maneira como rsync
está processando os nomes dos arquivos. O caminho include absoluto (ou seja, relativo à raiz de transferência) não funciona diretamente porque os diretórios pai também devem ser incluídos. Caso contrário, toda a estrutura de diretório já estará excluída e o arquivo ou subdiretório desejado nunca será processado.
O manual real diz isso (em algum lugar), mas é altamente contra-intuitivo.
Para incluir apenas determinadas sub-pastas, todos os diretórios pai devem ser incluídos e todas as outras sub-dirs deles devem ser excluídas novamente:
include sub/
include sub/dir/
include sub/dir/I/
include sub/dir/I/want/***
exclude sub/*
exclude sub/dir/*
exclude sub/dir/I/*
include other/
include other/sub/
include other/sub/dir/
include other/sub/dir/I/
include other/sub/dir/I/want/***
exclude other/*
exclude other/sub/*
exclude other/sub/dir/*
exclude other/sub/dir/I/*
...
protect .hg*
exclude /*
A segunda e última linha protege todos os diretórios e arquivos .hg*
, como .hg/
e .hgtags
.
A linha exclui todos os outros dirs na raiz de transferência.
Eu escrevi um script Perl para produzir o arquivo de filtro acima da lista de subdiretórios desejados. Está acessível no link .