วิธีการยกเว้นไฟล์ใน rsync


12

ฉันใช้เซิร์ฟเวอร์อูบุนตู 12.04 ตอนนี้ฉันต้องการสำรองข้อมูลบางไฟล์โดยใช้ rsync นี่คือลอง:

rsync -aAX $HOME/Documents/* $HOME/Backups/TEST --exclude={$HOME/Documents/another/*,$HOME/Documents/temp/*} 

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

ls $HOME/Backups/TEST/another
test

ทดสอบเป็นไฟล์ในโฟลเดอร์อื่นและมันก็ถูกคัดลอกไปด้วยแม้ว่าฉันจะแยกไฟล์ใน rsync ทำไม จะอนุญาตให้ยกเว้นไฟล์เหล่านั้นได้อย่างไร?

คำตอบ:


11

มีหลายปัญหาเกี่ยวกับคำสั่ง rsync ของคุณ (ดูmanpage สำหรับ rsyncสำหรับคำอธิบายโดยละเอียดเกี่ยวกับกฎตัวกรอง)

  • เราต้องการ--excludeคำสั่งแต่ละแบบสำหรับรูปแบบที่กำหนด
  • เส้นทางที่กำหนดต้องสัมพันธ์กับเส้นทางต้นทาง (ไม่มีเส้นทางแบบสัมบูรณ์)
  • ตัวเลือกจะต้องได้รับก่อนที่เราจะระบุแหล่งที่มาและปลายทาง

สำหรับตัวอย่างของคุณไวยากรณ์ต่อไปนี้จะใช้งานได้:

rsync -avAX --exclude=another/ --exclude=temp/ ~/Documents/ ~/Backups/TEST

โปรดทราบว่าหากรูปแบบ exlude ลงท้ายด้วย/มันจะอ้างอิงถึงไดเรกทอรี หากคุณไม่ใช้ทั้งสองไฟล์และไดเรกทอรีที่มีชื่อนั้นจะถูกยกเว้น แทนที่ด้วยอักขระตัวแทน*เพื่อแยกไฟล์หรือไดเรกทอรีทั้งหมดด้วยสตริงนั้นในชื่อ


6
สิ่งนี้ไม่ถูกต้องทั้งหมด ฉันไม่แน่ใจว่ามันทำงานอย่างไร แต่จากการทดลอง--exclude=/fooจะแยกไดเรกทอรีfooโดยตรงในแหล่งที่มา แต่--exclude=fooจะยกเว้นไดเรกทอรีใด ๆ ที่ชื่อ foo แม้ในไดเรกทอรีย่อย
Sparhawk

10

คุณอาจพบว่าการเพิ่ม.rsync-filterไฟล์ในไดเรกทอรีต้นทางของคุณนั้นง่ายขึ้นและใช้-Fตัวเลือก

จากหน้าคน:

-F: ตัวเลือก -F เป็นชวเลข [... ] สำหรับกฎนี้:

 --filter='dir-merge /.rsync-filter'

สิ่งนี้จะบอก rsync ให้ค้นหาไฟล์ .rsync-filter สำหรับแต่ละไดเร็กทอรีที่ถูกโปรยผ่านลำดับชั้นและใช้กฎเพื่อกรองไฟล์ในการถ่ายโอน

ตัวอย่างเช่น: ใน $ HOME / Documents / .rsync-filter

# you can add comments in filter files

- /another/
- /temp/

แทนที่จะเป็นเช่น-นั้นคุณสามารถเขียนทั้งคำexcludeได้

ตอนนี้คุณสามารถ

rsync -aAX -F $HOME/Documents/ $HOME/Backups/TEST/
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.