Bagaimana cara mengecualikan rsync mengecualikan dari menghapus?

31

Saya menggunakan rsync untuk menyinkronkan file di beberapa mesin, menggunakan yang berikut ini:

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

Saya ingin mengecualikan semua file log dari yang ditransfer dari sumber ke tujuan, dan menghapus semua yang ada di tujuan. Jadi aku menggunakan --exclude=*.logdengan --delete-excludedyang bekerja besar.

Tapi saya ingin menyimpan file log tertentu di tempat tujuan. Saya ingin --exclude-from-deletepilihan.

Apakah ini mungkin dengan rsync?

rampok
sumber

Jawaban:

47

Filter "protect" harus memenuhi apa yang Anda inginkan:

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

Cukup tentukan filter berikut sebelum yang relevan tidak termasuk:

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

(Perhatikan spasi setelah huruf P.)

koniiiik
sumber
2
Ini sebenarnya berfungsi.
Fish Monitor