rsync apenas subdiretórios e conteúdo

1

Eu tenho um diretório que contém vários arquivos e subdiretórios. Veja abaixo:

baseDir
  bad1
  bad2
  subDir1
    file1
  subDir2
    file1

Eu gostaria de rsync o conteúdo de baseDir sem rsyncing bad1 e bad2.

resultando em

targetDir
  SubDir1
    file1
  SubDir2
    file1 

Eu não me importo se são necessários dois comandos, mas como faço isso?

    
por Andrew Hoos 28.06.2013 / 04:56

3 respostas

1

Você pode incluir os diretórios desejados e seus pais e excluir todo o resto ou excluir os diretórios inválidos. Observe que a ordem é importante: o rsync decide o que fazer com um arquivo do primeiro padrão correspondente (assim, por exemplo, qualquer coisa após --exclude=* ser efetivamente ignorada). Note também que a exclusão de um diretório impede que ele não apenas seja copiado, mas também que ele seja atravessado, de modo que isso exclui efetivamente tudo abaixo dele. Consulte esta primer de filtros rsync para obter mais informações.

rsync --include='/' --include='/subDir***' --exclude='*' baseDir/ targetDir/
rsync --exclude='/bad*' baseDir/ targetDir/
    
por 29.06.2013 / 02:03
0

Você pode usar a opção --exclude-from de rsync para definir o que você não deseja incluir para sincronizar

Por exemplo:

 #cat exclude.txt 
  baseDir/bad1
  baseDir/bad2

 #rsync --exclude-from=exclude.txt -avr source_dir_path destination_dir_path
    
por 28.06.2013 / 05:22
0

rsync terá curingas como argumentos para as opções --exclude para que você possa fazer algo assim:

$ pwd
$ /some/dir

$ rsync -avz baseDir/ --exclude 'bad[1,2]' targetDir/.

Por exemplo:

$ rsync -avz baseDir/ --exclude 'bad[1,2]' targetDir/.
sending incremental file list
./
subDir1/
subDir1/file1
subDir2/
subDir2/file1

sent 185 bytes  received 61 bytes  492.00 bytes/sec
total size is 0  speedup is 0.00
    
por 28.06.2013 / 06:33