Como excluir rsync exclui da exclusão?

30

Estou usando o rsync para sincronizar arquivos em várias máquinas, usando o seguinte:

rsync -az -e "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
  --delete --delete-excluded --force --exclude=.git  --exclude=.bundle \
  --exclude=tmp --exclude=log/* --exclude=*.log --exclude=*.pid \
  user@host:/path/to/src/ /var/build/dest

Desejo excluir todos os arquivos de log da transferência da origem para o destino e excluir todos os existentes no destino. Então, estou usando --exclude=*.log com --delete-excluded , o que funciona muito bem.

Mas quero manter um determinado arquivo de log intacto no destino. Eu quero uma opção --exclude-from-delete .

Isso é possível com o rsync?

    
por Rob 09.07.2010 / 17:31

1 resposta

43

O filtro "proteger" deve realizar exatamente o que você deseja:

          protect, P specifies a pattern for protecting files from deletion.

Basta especificar o seguinte filtro antes das exceções relevantes:

--filter='P my-specific-logfile.log'

(Observe o espaço após a letra P.)

    
por 13.03.2012 / 11:27