ฉันพยายามอย่างมากที่จะเข้าใจระบบกรอง rsync และมันทำให้ฉันงุนงงไปหมด
ฉันมีโครงสร้างไดเรกทอรี "ทดสอบ" ต่อไปนี้เพื่อพยายามทำความเข้าใจ โดยไม่มีตัวเลือกการกรอง นี่คือไฟล์ทั้งหมดของฉัน:
rsync -amv --dry-run /source /target
สร้างรายการไฟล์ ... เสร็จแล้ว
แหล่งที่มา/
ที่มา/1.pdf
ที่มา/2.pdf
ที่มา/exclude_rules.txt
ที่มา/filter_rules.txt
ที่มา/excludedir/
ที่มา/excludedir/2.jpg
ที่มา/excludedir/4.pdf
ที่มา/subdir/
ที่มา/subdir/1.jpg
ที่มา/subdir/1.txt
ที่มา/subdir/3.pdf
ที่มา/subdir/subdir2/
ที่มา/subdir/subdir2/6.jpg
ที่มา/subdir/subdir2/6.pdf
ฉันแค่ต้องการซิงค์ทั้งหมด *.ไฟล์ PDF
ไฟล์ยกเว้นในบางไดเร็กทอรี ได้แก่ ไดเร็กทอรีใดๆ ที่มี *ไม่รวม*
ในนั้น.
ฉันใช้ไฟล์ที่มีกฎการกรองอยู่ในนั้นด้วยคำสั่งต่อไปนี้:
rsync -amv --dry-run --filter='merge /filter_rules' /source /target
filter_rules ดูเหมือนรูปแบบต่างๆ ต่อไปนี้ แต่ฉันไม่สามารถสร้างผลลัพธ์ที่ต้องการได้:
-/ *ไม่รวม*/
+/ *.pdf
-/ *
สิ่งที่ใกล้เคียงที่สุดที่ฉันได้รับคือการยกเว้นอย่างง่าย:
-/ *ไม่รวม*/
ซึ่งให้:
สร้างรายการไฟล์ ... เสร็จแล้ว
แหล่งที่มา/
ที่มา/1.pdf
ที่มา/2.pdf
ที่มา/exclude_rules.txt
ที่มา/filter_rules.txt
ที่มา/subdir/
ที่มา/subdir/1.jpg
ที่มา/subdir/1.txt
ที่มา/subdir/3.pdf
ที่มา/subdir/subdir2/
ที่มา/subdir/subdir2/6.jpg
ที่มา/subdir/subdir2/6.pdf
ฉันจะกรองส่วนที่เหลือเพื่อรับได้อย่างไร *.ไฟล์ PDF
?