/ / วิธีแยกไฟล์จาก Rsync

วิธียกเว้นไฟล์จาก Rsync

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

ไม่รวมอยู่ในรายการในไฟล์

นี่เป็นวิธีที่เหมาะสำหรับการยกเว้นไฟล์และโฟลเดอร์เนื่องจากคุณสามารถแก้ไขรายการและปรับแต่งสิ่งต่าง ๆ ได้หากจำเป็น นี่คือไวยากรณ์:

rsync --exclude-from=/path/to/exclusion-file /path/to/source /path/to/dest

สิ่งที่ยุ่งยากกับ rsync ก็คือคุณต้องใช้เส้นทางสัมพัทธ์เมื่อคุณพยายามที่จะแยกสิ่งต่าง ๆ เพราะเมื่อมันพยายามจับคู่การยกเว้นมันจะไม่ใช้ส่วนแรกของเส้นทางสำหรับการแข่งขัน ... มันแปลก

ตัวอย่างเช่นคุณกำลังพยายามสำรองข้อมูล/ data / web / และส่งไปยังเซิร์ฟเวอร์อื่นดังนั้นคุณจึงใช้คำสั่งเช่น rsync -a / data / web / user @ server: / backups / data / web / เพื่อให้มันเกิดขึ้น… แต่คุณอยากจะข้าม การซิงค์ / data / web / cache / โฟลเดอร์ เมื่อ rsync ไปตรวจสอบรายการการยกเว้นของคุณสำหรับแต่ละรายการที่ซิงค์มันจะไม่ตรวจสอบ / data / web / cache / เนื่องจากคำสั่ง rsync ดั้งเดิมของคุณนั้นอยู่ใน / data / web / โฟลเดอร์ เพียงตรวจสอบ“ แคช /” กับรายการ ดังนั้นคุณจะต้องใส่ "แคช" ลงในรายการไม่ใช่เส้นทางแบบเต็ม ตัวอย่าง:

rsync -a --exclude-from=/data/exclusions /data/web/ /backups/

ตอนนี้เพื่อแยก / data / web / cache และ / data / web / temp จาก rsync โดยใช้คำสั่งนี้เราจะลบ / data / web / ส่วนของเส้นทางและไฟล์ / data / exclusions จะประกอบด้วย:

cache*
temp*

คุณจะทราบว่าฉันเพิ่ม * ลงในเส้นทางเพื่อตรวจสอบให้แน่ใจว่าตรงกับสิ่งที่ขึ้นต้นด้วย“ แคช” ที่จุดเริ่มต้น คุณสามารถใช้รูปแบบดาวนี้เพื่อเหตุผลที่มีประโยชน์มากขึ้นถ้าคุณต้องการ - บอกว่าคุณต้องการยกเว้นไฟล์. txt ทั้งหมดไม่ให้ซิงค์ คุณเริ่มต้นรูปแบบกับดาวเพื่อให้แน่ใจว่าตรงกันเสมอและเพิ่มสิ่งนี้:

*.txt

นั่นจะทำให้แน่ใจว่าไฟล์ประเภทนั้นถูกข้ามไปในระหว่างการซิงค์ มันค่อนข้างง่ายกว่านั้น

ไม่รวมรายการเดียว

เทคนิคนี้มีประโยชน์น้อยกว่ามาก แต่คุณทำได้ใช้งานได้ทันทีหากคุณต้องการ หากคุณกำลังตั้งค่าสคริปต์ให้ใช้ rsync ซึ่งโดยปกติคุณควรใช้เวลาเพิ่มอีกหนึ่งนาทีเพื่อแยกออกจากรายการไฟล์แทนเพื่อให้การบำรุงรักษาง่ายขึ้นในอนาคต ไวยากรณ์คล้ายกันมาก:

rsync --exclude=relative/path/to/exclusion /source /dest

เส้นทางสัมพัทธ์เดียวกันควรใช้ที่นี่เหมือนด้านบน