PlusMagi's Blog By Pitt Phunsanit Cloud Computing rsync: (Remote Sync )คัดลอกไฟล์

rsync: (Remote Sync )คัดลอกไฟล์

ในฐานะ System Architect ที่ต้องดูแลระบบฐานข้อมูลขนาดใหญ่ เช่น PostgreSQL การจัดการข้อมูลและการสำรองข้อมูล (Backup) อย่างมีประสิทธิภาพถือเป็นหัวใจสำคัญของความมั่นคงของระบบ เครื่องมือที่ทรงพลังและเป็นมาตรฐานอุตสาหกรรมสำหรับการคัดลอกและซิงค์ไฟล์คือ rsync (Remote Sync) ครับ

rsync ไม่ใช่แค่คำสั่งคัดลอกไฟล์ธรรมดา แต่เป็นเครื่องมือที่ชาญฉลาด เพราะมันทำงานโดยการเปรียบเทียบไฟล์ต้นทางและปลายทาง และส่งถ่ายเฉพาะส่วนของข้อมูลที่เปลี่ยนแปลง (Delta Transfer) เท่านั้น ทำให้ประหยัดแบนด์วิดท์และประหยัดเวลาในการซิงค์ข้อมูลระหว่างเซิร์ฟเวอร์ได้อย่างมหาศาล ไม่ว่าจะเป็นการทำ Disaster Recovery หรือการอัปเดตข้อมูลระหว่าง Staging และ Production Environment

หลักการทำงานและไวยากรณ์ของ rsync

รูปแบบคำสั่งพื้นฐานของ rsync คือ rsync [options] [ต้นทาง] [ปลายทาง]

การทำความเข้าใจ Options ที่ใช้บ่อยถือเป็นสิ่งสำคัญที่สุดในการใช้งานจริง โดยเฉพาะการใช้ชุด Option -avz ร่วมกับ --delete

รายละเอียด Option สำคัญ

  • -a (Archive Mode): คือโหมดเก็บถาวร ซึ่งเป็นการรักษาคุณสมบัติเดิมของไฟล์ทั้งหมดอย่างสมบูรณ์ (เช่น สิทธิ์การเข้าถึง, เจ้าของไฟล์, วันที่แก้ไข) และรวมถึงการซิงค์โฟลเดอร์ย่อยทั้งหมด
  • -v (Verbose): แสดงรายละเอียดของไฟล์ที่กำลังถูกคัดลอก ทำให้เราสามารถตรวจสอบสถานะการทำงานได้
  • -z (Compress): ทำการบีบอัดข้อมูลระหว่างการส่งผ่านเครือข่าย (Network) ซึ่งช่วยเพิ่มความเร็วในการซิงค์ข้อมูลจำนวนมาก
  • --delete: เป็น Option ที่ทรงพลังและต้องระวัง! มันจะลบไฟล์ที่ปลายทาง หากไฟล์นั้นถูกลบไปแล้วจากต้นทาง ทำให้มั่นใจได้ว่าปลายทางจะเหมือนกับต้นทางทุกประการ
  • --dry-run: เป็นคำสั่งที่สำคัญที่สุดในการทดสอบระบบ! มันจะจำลองการทำงานทั้งหมดโดยไม่ทำการคัดลอกหรือลบไฟล์จริง ทำให้เราสามารถตรวจสอบว่าคำสั่งของเราจะส่งผลกระทบอะไรบ้างก่อนที่จะรันจริง

ตัวอย่างการใช้งาน rsync ในบริบทของ PostgreSQL

เมื่อเราทำการสำรองฐานข้อมูล PostgreSQL ด้วย pg_dump แล้วได้ไฟล์ backup ไปเก็บไว้ที่โฟลเดอร์หนึ่ง เรามักจะต้องซิงค์โฟลเดอร์สำรองนี้ไปยังเซิร์ฟเวอร์สำรอง (DR Site) หรือเซิร์ฟเวอร์ Staging โดยใช้ rsync

1. การซิงค์แบบทดสอบ (Dry Run)

ก่อนใช้งานจริงเสมอ ควรทดสอบก่อนเพื่อดูว่าไฟล์ใดจะถูกคัดลอกหรือลบ:

BASH / Shell

rsync -avn --delete /path/to/pg_backup/ user@remote-server:/path/to/backup/

2. การซิงค์ข้อมูลแบบสมบูรณ์ (Production Sync)

เมื่อมั่นใจว่าการทดสอบผ่านแล้ว ให้รันคำสั่งจริงเพื่อซิงค์ข้อมูลทั้งหมด:

BASH / Shell

rsync -avz --delete /path/to/pg_backup/ user@remote-server:/path/to/backup/

บทสรุปสำหรับ System Architect

rsync เป็นเครื่องมือที่ขาดไม่ได้สำหรับวิศวกรระบบที่ต้องจัดการข้อมูลขนาดใหญ่ การใช้ -a, -v, -z และการใช้ --delete ควบคู่กับการทดสอบด้วย --dry-run จะช่วยให้กระบวนการสำรองข้อมูลและการซิงค์ข้อมูลระหว่างเซิร์ฟเวอร์ของคุณมีความแม่นยำ รวดเร็ว และเชื่อถือได้ในระดับ Enterprise ครับ