Jak wykluczyć wykluczenia rsync z usunięcia?

31

Korzystam z rsync do synchronizacji plików na wielu komputerach, używając następujących opcji:

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

Chcę wykluczyć przeniesienie wszystkich plików dziennika ze źródła do miejsca docelowego i usunąć wszystkie istniejące w miejscu docelowym. Więc używam --exclude=*.logz --delete-excludedktórym działa świetnie.

Ale chcę zachować nietknięty plik dziennika w miejscu docelowym. Chcę --exclude-from-deleteopcję.

Czy jest to możliwe dzięki rsync?

Obrabować
źródło

Odpowiedzi:

47

Filtr „ochrony” powinien osiągnąć dokładnie to, co chcesz:

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

Po prostu określ następujący filtr, zanim odpowiednie wykluczenia:

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

(Zwróć uwagę na spację po literze P.)

koniiiik
źródło
2
To faktycznie działa.
Fish Monitor