pulando copiando o conteúdo dos subdiretórios usando o rsync

2
rsync -avzm -e ssh /path/to/src/folder/ /path/to/dest/folder 
 --include=*/ --include=*/config.xml --exclude=*

Eu preciso copiar arquivos (digamos, config.xml) que estão nos diretórios de 2º nível usando o rsync. Atualmente, estou usando o script acima e copiando o config.xml de todos os níveis de diretório.

Que mudanças devo fazer no comando acima?

    
por ARK 07.06.2014 / 01:35

1 resposta

2

Tente isto:

rsync -avzm -e ssh -f'- /*/*/' -f'+ config.xml' \
    /path/to/src/folder/ /path/to/dest/folder

Explicação

  • -f faz com que rsync ative a regra de filtro.
  • %código%:
    • - /*/*/ significa excluir regra.
    • - exlucde qualquer subdiretório de /*/*/ level.
  • 3rd : + config.xml significa incluir regra, porque o rsync copia todos os arquivos que possuem + no nome do arquivo.

Exemplo

$ ls -R dir1/
dir1/:
dir2  dir22

dir1/dir2:
config.xml.2  dir3

dir1/dir2/dir3:
config.xml

dir1/dir22:
config.xml.22  dir33

dir1/dir22/dir33:
config.xml

$ rsync -r -f'- /*/*/' -f'+ config.xml' dir1/ /tmp

$ ls -R /tmp/dir2*
/tmp/dir2:
config.xml.2

/tmp/dir22:
config.xml.22
    
por 07.06.2014 / 03:43

Tags