วิธีการยกเว้น rsync แยกออกจากการลบได้อย่างไร


31

ฉันใช้ rsync เพื่อซิงค์ไฟล์กับหลาย ๆ เครื่องโดยใช้สิ่งต่อไปนี้:

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

ฉันต้องการแยกไฟล์บันทึกทั้งหมดจากการถ่ายโอนจากต้นทางไปยังปลายทางและลบไฟล์ที่มีอยู่ทั้งหมดบนปลายทาง ดังนั้นฉันใช้--exclude=*.logกับที่ใช้--delete-excludedงานได้ดี

แต่ฉันต้องการเก็บไฟล์บันทึกบางไฟล์ไว้บนปลายทาง ฉันต้องการ--exclude-from-deleteตัวเลือก

เป็นไปได้ด้วย rsync หรือไม่


คำตอบ:


47

ตัวกรอง "ป้องกัน" ควรบรรลุสิ่งที่คุณต้องการ:

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

เพียงระบุตัวกรองต่อไปนี้ก่อนหน้าการยกเว้นที่เกี่ยวข้อง:

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

(สังเกตช่องว่างหลังตัวอักษร P)


2
มันใช้งานได้จริง
Fish Monitor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.