← กลับไปยังบทความทั้งหมด

rsync เครื่องมือซิงค์ไฟล์และสำรองข้อมูลประสิทธิภาพสูง

สรุปใจความสำคัญ

  • rsync เป็นเครื่องมือซิงค์ไฟล์ที่ใช้ delta encoding เพื่อลดปริมาณการส่งข้อมูลผ่านเครือข่าย
  • เปิดตัวครั้งแรกในปี 1996 โดย Andrew Tridgell และ Paul Mackerras
  • รองรับการทำงานบนหลายแพลตฟอร์ม เช่น Linux, macOS, FreeBSD, NetBSD และ OpenBSD
  • ใช้การเปรียบเทียบเวลาการแก้ไขและขนาดไฟล์เพื่อระบุไฟล์ที่ต้องถ่ายโอน

rsync (remote sync) เป็นยูทิลิตี้สำหรับถ่ายโอนและซิงโครไนซ์ไฟล์ระหว่างคอมพิวเตอร์และไดรฟ์เก็บข้อมูล หรือระหว่างคอมพิวเตอร์ที่เชื่อมต่อกันผ่านเครือข่าย โดยใช้การเปรียบเทียบเวลาการแก้ไขไฟล์ (modification times) และขนาดของไฟล์ เพื่อให้การถ่ายโอนข้อมูลมีความรวดเร็วและมีประสิทธิภาพสูงสุด

ประวัติความเป็นมา

Andrew Tridgell และ Paul Mackerras เป็นผู้เขียน rsync รุ่นแรก ซึ่งเปิดตัวครั้งแรกเมื่อวันที่ 19 มิถุนายน 1996 โดยมีหน้าที่การทำงานที่คล้ายกับ rdist (rdist -c) ของ Ralph Campbell ที่สร้างขึ้นในปี 1983

Wayne Davison ได้กลายเป็นผู้ดูแลหลักในปี 2002 ต่อมาในเดือนเมษายน 2024 Andrew Tridgell ได้กลับมาดูแลการพัฒนาและบำรุงรักษา rsync อีกครั้งภายใต้หน่วยงาน RsyncProject โดยมี Tridgell เป็นผู้ดูแลโครงการ

อัลกอริทึมการทำงาน

การระบุไฟล์ที่ต้องส่ง

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

การระบุส่วนของไฟล์ที่เปลี่ยนแปลง

rsync ใช้เทคนิคที่เรียกว่า delta encoding เพื่อลดการใช้เครือข่าย โดยระบบรับจะแบ่งไฟล์ออกเป็นส่วนๆ (chunks) และคำนวณค่า checksums สองแบบคือ MD5 hash และ rolling checksum ซึ่งจะส่งกลับไปยังระบบส่ง

ระบบส่งจะคำนวณ rolling checksum สำหรับทุกส่วนของไฟล์ในเวอร์ชันของตนเอง หากพบว่าส่วนใดตรงกับ checksum ของระบบรับ ระบบส่งจะส่งเพียงตำแหน่งของส่วนนั้นแทนที่จะส่งข้อมูลทั้งหมด ทำให้การถ่ายโอนไฟล์ที่มีการแทรกหรือลบข้อมูลมีความรวดเร็วอย่างยิ่ง นอกจากนี้ยังสามารถใช้ Zlib เพื่อบีบอัดข้อมูลเพิ่มเติมได้

ข้อวิจารณ์และประเด็นดราม่า

เมื่อ rsync ถูกอัปเดตเป็นเวอร์ชัน 3.4.3 ในวันที่ 20 พฤษภาคม 2026 (ตามข้อมูลแหล่งที่มา) ผู้ใช้หลายรายรายงานว่าไม่สามารถทำการสำรองข้อมูลแบบ incremental backup ได้ ซึ่งนำไปสู่การถกเถียงเรื่องการใช้เครื่องมือ AI-assisted coding (เช่น Claude ของ Anthropic) ในการเขียนโค้ดของ Andrew Tridgell

Tridgell ตอบโต้ว่าเขาใช้ AI เพื่อเพิ่มชุดการทดสอบ (test suites) และเทคนิคการป้องกันเชิงลึก (defence-in-depth hardening) โดยประเด็นนี้ได้กลายเป็นกรณีศึกษาเกี่ยวกับการยอมรับโค้ดที่สร้างโดย AI ในโครงสร้างพื้นฐาน open source ที่สำคัญ

เครื่องมือที่เกี่ยวข้องและตัวแปร

  • rdiff: ใช้ rsync algorithm เพื่อสร้างไฟล์ delta ที่แสดงความแตกต่างระหว่างไฟล์ A และ B
  • rdiff-backup: สคริปต์สำหรับรักษา mirror backup ของไฟล์หรือไดเรกทอรี ทั้งในเครื่องและผ่านเครือข่าย โดยเก็บข้อมูลแบบ incremental rdiff deltas
  • librsync: ไลบรารีอิสระที่ใช้ rsync algorithm โดยไม่ใช้โปรโตคอลเครือข่ายของ rsync และถูกนำไปใช้ใน Dropbox, duplicity และเครื่องมืออื่นๆ
  • acrosync: ไลบรารี cross-platform ที่รองรับโปรโตคอลเครือข่ายของ rsync (เวอร์ชัน 29 หรือ 30)
  • duplicity: ซอฟต์แวร์สำรองข้อมูลที่เขียนด้วย Python ซึ่งใช้ librsync เพื่อสร้างข้อมูล delta และเข้ารหัสด้วย GPG

คำถามที่พบบ่อย

rsync ทำงานอย่างไรในการลดการใช้แบนด์วิดท์?

rsync ใช้ delta encoding โดยจะส่งเฉพาะส่วนของไฟล์ที่เปลี่ยนแปลงไปเท่านั้น แทนที่จะส่งไฟล์ทั้งหมดใหม่ทุกครั้ง

rsync สามารถใช้สำรองข้อมูลจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่งได้หรือไม่?

rsync สามารถซิงโครไนซ์ไฟล์ระหว่างคอมพิวเตอร์สองเครื่องผ่านเครือข่าย หรือระหว่างคอมพิวเตอร์กับไดรฟ์เก็บข้อมูลภายนอกได้

rsync เป็นซอฟต์แวร์ฟรีหรือไม่?

rsync เป็นซอฟต์แวร์เสรีและโอเพนซอร์สที่เผยแพร่ภายใต้ GNU General Public License