Score:2

rsync ไฟล์ PDF ทั้งหมดยกเว้นในบางไดเรกทอรี?

ธง cn

ฉันพยายามอย่างมากที่จะเข้าใจระบบกรอง 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 ?

Score:1
ธง cn

สำหรับคนรุ่นหลัง ในที่สุดฉันก็ทำสิ่งนี้ได้สำเร็จ และนี่คือคำแนะนำที่ฉันหวังว่าจะมี:

  • รีซิงค์ เริ่มกระบวนการกรองด้วยรายการไฟล์ทั้งหมด
  • กฎตัวกรองได้รับการจัดการตามลำดับ (ฉันใช้เวลาสักครู่เพื่อให้ได้สิ่งนี้)
  • คุณอาจมีกฎที่ถูกต้องทั้งหมด แต่ไม่มีลำดับที่ถูกต้อง ดังนั้นหากคุณใช้ไฟล์ที่แยกหรือรวมภายนอก อาจจำเป็นต้องจัดเรียงกฎใหม่ด้วยไฟล์ตัวกรองซึ่งอนุญาตให้คุณผสมและจับคู่กฎรวม/ไม่รวม หรืออยู่ใน cli เอง
  • สำหรับแต่ละไฟล์ กฎตัวกรองแรกที่ตรงกันจะวางไฟล์ไว้ในหนึ่งใน 2 ที่ฝากข้อมูล รวมหรือไม่รวม
  • กฎหลังจากกฎการจับคู่แรกจะไม่ถูกนำไปใช้!
  • กฎแต่ละข้อจะทำงานเฉพาะกับไฟล์ที่ทำให้ "ผ่าน" กฎก่อนหน้านี้ที่ไม่ตรงกัน
  • รวมไฟล์ที่ไม่ตรงกับกฎใดๆ
  • กฎข้อสุดท้ายเป็นกฎที่สำคัญที่สุดและไม่เป็นไปตามสัญชาตญาณ และนั่นหมายถึงการยกเว้นทุกสิ่งที่ไม่ได้รวมไว้อย่างเฉพาะเจาะจงจนถึงจุดนั้น

นี่คือสิ่งที่ลงเอยด้วยการทำงาน:

-/ *ไม่รวม*/
+/ */
+/ *.pdf
-/ *

เดิมทีฉันมีกฎเหล่านั้นในไฟล์รวมจากและแยกจากไฟล์ และนั่นจะไม่อนุญาตให้มีลำดับที่ถูกต้อง

TomOnTime avatar
pt flag
อุปกรณ์ประกอบฉากสำหรับการส่งคืนและโพสต์สิ่งที่คุณได้เรียนรู้และวิธีการเรียนรู้!
Score:0
ธง jp

ฉันยังคงใช้ --exclude-from ใน rsync ของฉัน แต่ลิงก์นี้มีประโยชน์อย่างมากเมื่อฉันพยายามกรองให้ทำงาน

https://stackoverflow.com/questions/35364075/using-rsync-filter-to-include-exclude-files

แก้ไข - OP ตอกย้ำสิ่งนี้ในคำตอบของเขาเอง แต่ตามที่ร้องขอ ... บิตที่เป็นประโยชน์จากลิงก์นั้น

คำอธิบาย:

(แค่เปลี่ยนคำอธิบายในตอนท้าย แต่อย่างที่คุณบอกว่าคู่มือนั้นค่อนข้าง>คลุมเครือ)

กฎจะถูกอ่านจากบนลงล่างทุกครั้งที่ต้องถ่ายโอนไฟล์โดย >rsync แต่ในกรณีของคุณ /mnt/data/i-want-to-rsyncthisdirectory/ จะไม่ได้ >สำรองไว้ เนื่องจากคุณไม่รวม /mnt และการดำเนินการนี้จะทำให้การรวม >กฎของคุณลัดวงจร วิธีแก้ไขคือรวมแต่ละโฟลเดอร์และโฟลเดอร์ย่อยไว้ด้วยกันจนกว่าจะถึง >โฟลเดอร์ที่คุณต้องการสำรองข้อมูล จากนั้นให้แยกสิ่งที่คุณไม่ต้องการสำรองข้อมูล >อัพโฟลเดอร์ย่อยทีละโฟลเดอร์

หมายเหตุ * ที่ส่วนท้ายของการยกเว้นแต่ละโฟลเดอร์ย่อย มันจะป้องกันไม่ให้ rsync >สำรองไฟล์และโฟลเดอร์ที่อยู่ในโฟลเดอร์ย่อยเหล่านี้ ซึ่งเป็นสิ่งที่คุณ >ต้องการ ฉันคิดว่า วิธีแก้ปัญหาที่ง่ายกว่า: (แก้ไข 2)

คุณยังสามารถทำให้สิ่งนี้ง่ายขึ้นด้วยรูปแบบ *** ที่เพิ่มเข้ามาในเวอร์ชัน >2.6.7:

  • /mnt/
  • /mnt/ข้อมูล/
  • /mnt/data/i-want-to-rsyncthisdirectory/***
  • /mnt/**

ตัวดำเนินการนี้อนุญาตให้คุณใช้สัญลักษณ์แทน ** สำหรับการยกเว้น และ > ดังนั้น จึงมีบรรทัดการยกเว้นเพียงบรรทัดเดียว

ฉันยังพบว่าคุณสามารถเข้าใจกฎตัวกรองที่แยก/รวม >แต่ละไฟล์หรือโฟลเดอร์ได้ด้วยอาร์กิวเมนต์ rsync ต่อไปนี้:

--เวอร์โบส --เวอร์โบส

เมื่อรวมกับอาร์กิวเมนต์ --dry-run คุณควรจะแก้ปัญหาได้ >:)

cn flag
ขอบคุณสำหรับคำตอบ! คุณสามารถดึงส่วนที่เป็นประโยชน์มากที่สุดออกมาได้ไหม ในกรณีที่คำถามหรือคำตอบถูกลบในอนาคต

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา