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


