วิธีใช้ Rsync เพื่อซิงค์ไฟล์ใหม่หรือไฟล์ที่เปลี่ยนแปลง/แก้ไขใน Linux
ในฐานะผู้ดูแลระบบหรือผู้ใช้ Linux ระดับสูง คุณอาจเคยพบเห็นหรือหลายครั้งที่ใช้เครื่องมือ Linux Rsync ซึ่งช่วยให้ผู้ใช้สามารถคัดลอกหรือซิงโครไนซ์ไฟล์ทั้งภายในเครื่องและจากระยะไกลได้อย่างรวดเร็ว นอกจากนี้ยังเป็นเครื่องมือที่ยอดเยี่ยมซึ่งนิยมใช้สำหรับการสำรองข้อมูลและการมิเรอร์
คุณสมบัติและข้อดีที่โดดเด่นบางประการ ได้แก่ มันมีความหลากหลายเป็นพิเศษ โดยสามารถคัดลอกในเครื่อง ไปยัง/จากรีโมตเชลล์หรือ rsync ระยะไกล นอกจากนี้ยังมีความยืดหยุ่นอย่างน่าทึ่ง ทำให้ผู้ใช้สามารถระบุจำนวนไฟล์ที่จะคัดลอกเท่าใดก็ได้
แนะนำให้อ่าน: 10 ตัวอย่างการใช้งานจริงของคำสั่ง Rsync ใน Linux
นอกจากนี้ยังอนุญาตให้คัดลอกลิงก์ อุปกรณ์ เจ้าของไฟล์หรือไดเร็กทอรี กลุ่ม และการอนุญาต นอกจากนี้ยังรองรับการใช้งานโดยไม่มีสิทธิ์รูทควบคู่ไปกับคุณสมบัติอื่น ๆ อีกมากมาย
ความแตกต่างที่จำเป็นอย่างหนึ่งของ rsync เมื่อเปรียบเทียบกับคำสั่งการเขียนไฟล์อื่นๆ ใน Linux คือการใช้โปรโตคอลการอัพเดตระยะไกล เพื่อถ่ายโอนเฉพาะความแตกต่างระหว่างไฟล์หรือเนื้อหาไดเร็กทอรี
ดังนั้นในบทความนี้ เราจะตรวจสอบว่า rsync สามารถช่วยให้เราซิงค์เฉพาะไฟล์ใหม่หรือที่เปลี่ยนแปลงหรือเนื้อหาไดเร็กทอรีในขณะที่ทำการสำรองข้อมูลและอื่น ๆ ใน Linux ได้อย่างไร
ในการเริ่มต้น คุณต้องจำไว้ว่ารูปแบบการใช้ rsync แบบธรรมดาและง่ายที่สุดมีดังนี้:
rsync options source destination
อย่างไรก็ตาม ให้เราเจาะลึกตัวอย่างบางส่วนเพื่อดูว่าแนวคิดข้างต้นทำงานอย่างไร
การซิงค์ไฟล์ในเครื่องโดยใช้ Rsync
การใช้คำสั่งด้านล่างทำให้สามารถคัดลอกไฟล์จากไดเร็กทอรี Documents ของฉันไปยังไดเร็กทอรี /tmp/documents ภายในเครื่อง:
rsync -av Documents/* /tmp/documents
ในคำสั่งด้านบน ตัวเลือก:
-a
– หมายถึงโหมดเก็บถาวร-v
– หมายถึงรายละเอียดที่แสดงรายละเอียดของการดำเนินการที่กำลังดำเนินอยู่
ตามค่าเริ่มต้น rsync จะคัดลอกเฉพาะไฟล์ใหม่หรือไฟล์ที่เปลี่ยนแปลงจากต้นทางไปยังปลายทางเท่านั้น เมื่อฉันเพิ่มไฟล์ใหม่ลงในไดเรกทอรี เอกสาร ของฉัน นี่คือสิ่งที่เกิดขึ้นหลังจากเรียกใช้คำสั่งเดียวกัน ครั้งที่สอง:
rsync -av Documents/* /tmp/documents
ดังที่คุณสามารถสังเกตและสังเกตได้จากผลลัพธ์ของคำสั่ง เฉพาะไฟล์ใหม่เท่านั้นที่ถูกคัดลอกไปยังไดเร็กทอรีปลายทาง
แนะนำให้อ่าน: วิธีซิงค์เว็บเซิร์ฟเวอร์/เว็บไซต์ Apache สองตัวโดยใช้ Rsync
ตัวเลือก --update
หรือ -u
อนุญาตให้ rsync ข้ามไฟล์ที่ยังใหม่ในไดเร็กทอรีปลายทาง และตัวเลือกที่สำคัญอย่างหนึ่ง --dry-run
หรือ -n
ช่วยให้เราสามารถดำเนินการทดสอบโดยไม่ต้องทำการเปลี่ยนแปลงใดๆ มันแสดงให้เราเห็นว่าไฟล์ใดบ้างที่จะคัดลอก
rsync -aunv Documents/* /tmp/documents
หลังจากดำเนินการทดสอบแล้ว เราสามารถยกเลิก -n
และดำเนินการจริงได้:
rsync -auv Documents/* /tmp/documents
การซิงค์ไฟล์จาก Local ไปยัง Remote Linux
ในตัวอย่างด้านล่าง ฉันกำลังคัดลอกไฟล์จากเครื่องของฉันไปยังเซิร์ฟเวอร์ระยะไกลด้วยที่อยู่ IP – 10.42.1.5 เพื่อที่จะซิงค์เฉพาะไฟล์ใหม่บนเครื่องท้องถิ่นที่ไม่มีอยู่ในเครื่องระยะไกล เราสามารถรวมตัวเลือก --ignore-existing
ได้:
rsync -av --ignore-existing Documents/* [email :~/all/
ต่อจากนั้น หากต้องการซิงค์เฉพาะไฟล์ที่อัปเดตหรือแก้ไขบนเครื่องระยะไกลที่มีการเปลี่ยนแปลงบนเครื่องท้องถิ่น เราสามารถดำเนินการทดลองก่อนคัดลอกไฟล์ได้ดังนี้:
rsync -av --dry-run --update Documents/* [email :~/all/
rsync -av --update Documents/* [email :~/all/
ในการอัปเดตไฟล์ที่มีอยู่และป้องกันการสร้างไฟล์ใหม่ในปลายทาง เราใช้ตัวเลือก --ที่มีอยู่
คุณสามารถเรียกใช้ผ่านหน้า man rsync
เพื่อค้นหาตัวเลือกที่มีประโยชน์เพิ่มเติมสำหรับการใช้งานขั้นสูง ตามที่ฉันได้กล่าวไปแล้ว rsync เป็นเครื่องมือ Linux ที่ทรงพลังและอเนกประสงค์ และระบบอีกมากมาย ผู้ดูแลระบบและผู้ใช้ระดับสูงของ Linux รู้ดีว่ามันมีข้อได้เปรียบเพียงใด
สิ่งสำคัญที่สุดคือ คุณสามารถแบ่งปันมุมมองของคุณเกี่ยวกับตัวอย่างที่เราได้กล่าวถึงในที่นี้ หรือที่ดียิ่งกว่านั้น เสนอเคล็ดลับอันมีค่าเกี่ยวกับการใช้เครื่องมือบรรทัดคำสั่งที่สำคัญนี้ผ่านส่วนความคิดเห็นด้านล่าง