ค้นหาเว็บไซต์

วิธีใช้ 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

ในคำสั่งด้านบน ตัวเลือก:

  1. -a – หมายถึงโหมดเก็บถาวร
  2. -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 รู้ดีว่ามันมีข้อได้เปรียบเพียงใด

สิ่งสำคัญที่สุดคือ คุณสามารถแบ่งปันมุมมองของคุณเกี่ยวกับตัวอย่างที่เราได้กล่าวถึงในที่นี้ หรือที่ดียิ่งกว่านั้น เสนอเคล็ดลับอันมีค่าเกี่ยวกับการใช้เครื่องมือบรรทัดคำสั่งที่สำคัญนี้ผ่านส่วนความคิดเห็นด้านล่าง