How to exclude rsync excludes from delete?
I'm using rsync to sync files across multiple machines, using the following:
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
I want to exclude all log files from being transferred from the source to destination, and delete all existing ones on the destination. So I'm using --exclude=*.log
with --delete-excluded
which works great.
But I want to keep a certain log file intact on the destination. I want an --exclude-from-delete
option.
Is this possible with rsync?
The "protect" filter should accomplish just what you want:
protect, P specifies a pattern for protecting files from deletion.
Just specify the following filter before the relevant excludes:
--filter='P my-specific-logfile.log'
(Notice the space after the letter P.)