¿Cómo excluir rsync excluye de eliminar?

31

Estoy usando rsync para sincronizar archivos en varias máquinas, usando lo siguiente:

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

Quiero excluir todos los archivos de registro de ser transferidos desde el origen al destino, y eliminar todos los existentes en el destino. Así que estoy usando --exclude=*.logcon lo --delete-excludedque funciona muy bien.

Pero quiero mantener un cierto archivo de registro intacto en el destino. Quiero una --exclude-from-deleteopcion.

¿Es esto posible con rsync?

Robar
fuente

Respuestas:

47

El filtro "proteger" debe lograr justo lo que desea:

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

Simplemente especifique el siguiente filtro antes de las exclusiones relevantes:

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

(Observe el espacio después de la letra P.)

koniiiik
fuente
2
Esto realmente funciona.
Fish Monitor