Como excluir rsync exclui da exclusão?

31

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 a transferência de todos os arquivos de log da origem para o destino e excluir todos os existentes no destino. Então, eu estou usando --exclude=*.logcom o --delete-excludedque funciona muito bem.

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

Isso é possível com o rsync?

Roubar
fonte

Respostas:

47

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 que o relevante exclua:

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

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

koniiiik
fonte
2
Isso realmente funciona.
Fish Monitor