rsync certos arquivos, excluindo o resto, ignorando o diretório .svn /, recursivamente

2

Estou usando o rsync para copiar alguns arquivos de um compartilhamento para outro.

Recursivamente, eu preciso:

  • Excluir arquivos no destino que foram removidos da origem
  • Apenas sincronize arquivos php e js
  • Excluir todos os outros tipos de arquivo
  • Não exclua .svn/ diretórios no destino

Se eu usar isso:

rsync -zavC --delete --include='*.php' --include='*.js' --exclude="*" \
    /origiin /destination

Em seguida, o rsync não é recursivo porque exclude="*" exclui todos os arquivos, mas também pastas

Se eu adicionar --include="*/" , o diretório .svn/ será excluído (ele também será incluído)

Como posso resolver esse dilema de explosão mental?

uname -a:

Linux tux 3.9.2-1-ARCH #1 SMP PREEMPT Sat May 11 20:31:08 CEST 2013 x86_64 GNU/Linux

versão do rsync:

rsync 3.0.9-6

Obrigado antecipadamente

    
por canolucas 17.05.2013 / 22:45

1 resposta

0

Ok, depois de várias tentativas, resolvi isso:

rsync -vaiz --delete --exclude=.svn/ --include='*.php' --include='*.js' \
    --include='*/' --exclude='*' --prune-empty-dirs \
    --filter "protect .svn/" /origin /destination

Outra abordagem

caso você não se importe de sincronizar diretórios vazios, apenas:

rsync -vaiz --delete --exclude=.svn/ --include='*.php' --include='*.js' \
    --include='*/' --exclude='*' /origin /destination

A chave foi para --exclude=.svn/ antes do --include 's

    
por 18.05.2013 / 01:20