rsync com caminhos absolutos e excluindo subcaminhos

rsync com caminhos absolutos e excluindo subcaminhos

Digamos que eu tenha a seguinte estrutura no caminhoorigin_path

origin_path/X=1/A/...
origin_path/X=1/B/...
origin_path/X=1/C/...
...
origin_path/X=2/A/...
origin_path/X=2/B/...
origin_path/X=2/C/...
...
...

Eu gostaria de replicar a estrutura acima em um caminho diferente chamado destination_path, masapenasincluindo os caminhos correspondentes aos diretóriosBacima.

Em outras palavras, eu gostaria de obter o seguinte emdestination_path

destination_path/X=1/B/...
destination_path/X=2/B/...
destination_path/X=3/B/...
...

Para esclarecer, parte dessa estrutura no caminho de destino já pode existir (por exemplo, as pastas destination_path/X=*).

Pelo que entendi, graças ao comentário de @Gilles, rsyncos filtros podem ser uma ótima opção para isso. No entanto, nunca os usei antes e é um pouco difícil extrapolar o exemplo fornecido emFiltro Rsync: copiando apenas um padrãopara a minha situação.

Em que ordem devo incluir ou excluir coisas no meu caso? E como digo ao rsync para usar origin_pathe destination_pathcomo caminhos globais? (em vez de copiar coisas com caminhos relativos)

Responder1

O seguinte deve fazer o que você deseja:

rsync --recursive --prune-empty-dirs --include '*/' --include '*/B/**' --exclude '**' origin_path/ destination_path/

A primeira regra inclui todos os diretórios (caso contrário, o rsync não descerá para os diretórios de nível superior). A segunda regra inclui tudo em subdiretórios “B”. A terceira regra exclui todo o resto. A --prune-empty-dirsopção ignora diretórios vazios (já que incluímos todos os diretórios na primeira regra).

informação relacionada