คู่มือการใช้ rsync บน Ubuntu – สำรองข้อมูลและซิงค์ไฟล์อย่างมีประสิทธิภาพ

目次

1. บทนำ

rsync คืออะไร?

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

ข้อดีของการใช้ rsync บน Ubuntu

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

ตัวอย่างสถานการณ์ที่ rsync เหมาะสม:

  • สำรองข้อมูลไปยัง HDD ภายนอก หรือ NAS เป็นประจำ
  • ซิงค์โฟลเดอร์โปรเจกต์ระหว่างการพัฒนา
  • ดีพลอยไฟล์ไปยังเซิร์ฟเวอร์ระยะไกล
  • ปรับปรุงความพร้อมใช้งานด้วยการมิเรอร์ไฟล์

ความแตกต่างเมื่อเทียบกับคำสั่งอื่น

เมื่อเปรียบเทียบกับคำสั่ง cp rsync จะถ่ายโอนเฉพาะความแตกต่างระหว่างต้นฉบับและปลายทางเท่านั้น ทำให้ประหยัดเวลาได้มาก เมื่อเทียบกับ scp rsync รองรับฟังก์ชันการทำงานต่อเมื่อเกิดข้อผิดพลาด และสามารถจำกัดแบนด์วิดท์ได้อย่างยืดหยุ่น อีกทั้งยังคงรักษาคุณสมบัติไฟล์ (เจ้าของ สิทธิ์ เวลา ฯลฯ) ขณะถ่ายโอนอีกด้วย

วัตถุประสงค์ของบทความนี้

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

2. วิธีติดตั้ง rsync (Ubuntu)

ตรวจสอบว่า Ubuntu ติดตั้ง rsync ไว้แล้วหรือไม่

โดยทั่วไปแล้ว rsync จะถูกติดตั้งมาใน Ubuntu อยู่แล้ว คุณสามารถตรวจสอบได้ด้วยคำสั่งต่อไปนี้:

rsync --version

หากแสดงข้อมูลเวอร์ชัน แสดงว่าได้ติดตั้ง rsync แล้วและสามารถใช้งานได้ทันที

ขั้นตอนกรณีที่ยังไม่ได้ติดตั้ง rsync

หากมีข้อความเช่น “command not found” หรือ “rsync: command not found” ให้ดำเนินการติดตั้งตามขั้นตอนดังนี้

  1. อัปเดตข้อมูลแพ็กเกจ:
sudo apt update
  1. ติดตั้ง rsync:
sudo apt install rsync
  1. ตรวจสอบเวอร์ชันอีกครั้งหลังติดตั้ง:
rsync --version

หากแสดงข้อมูลเวอร์ชันได้อย่างถูกต้อง แสดงว่าการติดตั้งสำเร็จแล้ว

จำเป็นต้องติดตั้งผ่าน snap หรือวิธีอื่นหรือไม่?

บน Ubuntu แนะนำให้ติดตั้ง rsync ด้วย APT เป็นหลัก ถึงแม้จะมี snap package แต่โดยทั่วไปเวอร์ชัน APT เพียงพอสำหรับการใช้งานและมีเสถียรภาพ/ความเข้ากันได้สูง จึงควรเลือกวิธี APT เป็นหลัก เว้นแต่มีเหตุผลพิเศษ

ข้อควรระวังขณะติดตั้ง

  • Ubuntu รุ่นเก่าอาจต้องอัปเดตแหล่งเก็บข้อมูลก่อน
  • จำเป็นต้องใช้สิทธิ์ root โปรดอย่าลืมใส่ sudo
  • หากอินเทอร์เน็ตไม่เสถียร อาจเกิดข้อผิดพลาดระหว่างติดตั้ง แนะนำให้ติดตั้งในสภาพแวดล้อมที่มีอินเทอร์เน็ตเสถียร

3. วิธีใช้งาน rsync เบื้องต้น

โครงสร้างคำสั่งพื้นฐานของ rsync

โครงสร้างคำสั่ง rsync เข้าใจง่ายแต่มีความยืดหยุ่นสูง ตัวอย่างพื้นฐานคือ:

rsync [ตัวเลือก] แหล่งที่มา ปลายทาง

เช่น คัดลอกโฟลเดอร์ /home/user/documents/ ไปยัง /mnt/backup/ ใช้คำสั่งดังนี้

rsync -av /home/user/documents/ /mnt/backup/

ในคำสั่งนี้ใช้ตัวเลือกดังต่อไปนี้:

  • -a: โหมดอาร์ไคฟ์ (คงโครงสร้าง สิทธิ์ เจ้าของ ฯลฯ)
  • -v: แสดงข้อมูลไฟล์ที่ถูกคัดลอกอย่างละเอียด

ข้อควรระวังเกี่ยวกับเครื่องหมาย Slash ท้ายไดเรกทอรี

สำหรับ rsync การมีหรือไม่มี slash (/) ท้ายชื่อโฟลเดอร์จะส่งผลกับพฤติกรรมการคัดลอก

  • /home/user/documents/ (มี / ท้าย)
    → คัดลอกเฉพาะเนื้อหาภายในโฟลเดอร์
  • /home/user/documents (ไม่มี / ท้าย)
    → คัดลอกทั้งโฟลเดอร์ documents พร้อมเนื้อหา

ความแตกต่างนี้ถือเป็นจุดสำคัญของ rsync โปรดเลือกใช้ให้เหมาะสมกับวัตถุประสงค์

ตัวเลือกที่ใช้งานบ่อย

rsync มีตัวเลือกมากมาย แต่ที่ใช้บ่อยในเบื้องต้นมีดังนี้

ตัวเลือกคำอธิบาย
-aโหมดอาร์ไคฟ์ (สำเนาแบบ recursive/คงคุณสมบัติ)
-vแสดงรายละเอียดไฟล์ที่ถ่ายโอน
-nแสดงผลลัพธ์โดยไม่ลงมือทำจริง (dry-run)
--progressแสดงความคืบหน้าขณะคัดลอกไฟล์
--deleteลบไฟล์ที่ไม่มีในแหล่งที่มาจากปลายทาง

อยากตรวจสอบก่อนว่ามีอะไรจะถูกดำเนินการบ้าง

หากต้องการตรวจสอบก่อนโอนย้ายจริง ให้ใช้ -n หรือ --dry-run

rsync -av --dry-run /home/user/documents/ /mnt/backup/

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

การจัดการไฟล์ซ่อน (dotfiles)

rsync จะรวมไฟล์ที่ขึ้นต้นด้วยจุด (.) โดยอัตโนมัติ เช่น ไฟล์คอนฟิกต่าง ๆ ก็จะถูกซิงค์ไปด้วย

4. การซิงค์กับเซิร์ฟเวอร์ระยะไกล

ซิงค์ rsync กับเซิร์ฟเวอร์ระยะไกลผ่าน SSH

ข้อได้เปรียบสำคัญของ rsync คือ สามารถซิงค์ไฟล์กับเซิร์ฟเวอร์ระยะไกลผ่าน SSH ได้อย่างปลอดภัย

โครงสร้างคำสั่งพื้นฐานคือ:

rsync -avz แหล่งที่มา user@IPหรือโฮสต์:ปลายทาง

ตัวอย่าง: ต้องการซิงค์ /home/user/documents/ ไปยัง /var/www/backup/ บนเซิร์ฟเวอร์ระยะไกล

rsync -avz /home/user/documents/ user@example.com:/var/www/backup/
  • -z จะบีบอัดข้อมูลขณะส่ง เหมาะสำหรับเน็ตช้า
  • user@host ให้ระบุชื่อผู้ใช้ SSH และโฮสต์ปลายทาง

การเชื่อมต่อครั้งแรกและการตั้งค่า Key Authentication

เชื่อมต่อครั้งแรกกับเซิร์ฟเวอร์จะมีการยืนยัน host authentication ให้พิมพ์ “yes” เพื่อดำเนินการต่อ

สำหรับการรัน rsync ซ้ำ ๆ แนะนำให้ตั้งค่า SSH Key Authentication เพื่อลดขั้นตอนการใส่รหัสผ่าน

  1. สร้างคีย์ SSH (ถ้ายังไม่มี):
ssh-keygen -t rsa
  1. คัดลอกคีย์ไปยังเซิร์ฟเวอร์:
ssh-copy-id user@example.com

จากนั้นสามารถใช้ rsync ได้โดยไม่ต้องใส่รหัสผ่าน

กรณีต้องระบุหมายเลขพอร์ต SSH

หากเซิร์ฟเวอร์ระยะไกลไม่ได้ใช้พอร์ต SSH ปกติ (22) ให้กำหนดผ่าน -e ดังนี้

rsync -avz -e "ssh -p 2222" /home/user/documents/ user@example.com:/var/www/backup/

ข้อควรระวังสำหรับการซิงค์สองทาง

rsync ออกแบบมาสำหรับการซิงค์ทางเดียว จากแหล่งที่มาไปยังปลายทาง หากต้องการซิงค์สองทางควรใช้เครื่องมืออื่น เช่น unison

5. ตัวเลือกเสริมและตัวอย่างการใช้งาน rsync

ตัวเลือกขั้นสูงที่ใช้งานได้จริง

rsync มีตัวเลือกเสริมที่ช่วยให้เหมาะกับการใช้งานในชีวิตจริง ตัวอย่างเช่น

–delete: ลบไฟล์ที่ไม่มีในต้นทางออกจากปลายทาง

ช่วยให้ทำมิเรอร์ (สำเนาเหมือนต้นฉบับ) ได้ง่าย แต่ควรตรวจสอบล่วงหน้าด้วย --dry-run เพื่อลดความเสี่ยง

rsync -av --delete /home/user/source/ /mnt/backup/

–exclude: ยกเว้นไฟล์หรือโฟลเดอร์บางอย่าง

ใช้กรณีไม่ต้องการซิงค์ไฟล์บางประเภท เช่น

rsync -av --exclude '*.log' --exclude 'node_modules' /project/ /backup/

–bwlimit: จำกัดแบนด์วิดท์

ถ้าไม่ต้องการให้ rsync ใช้เน็ตเต็มที่ สามารถกำหนดแบนด์วิดท์ด้วย --bwlimit

rsync -av --bwlimit=5000 /data/ user@remote:/data/

(ตัวอย่างนี้จำกัดความเร็วที่ 5MB/s)

ตัวอย่างการใช้งานในชีวิตจริง

ใช้สำหรับสำรองข้อมูล

rsync เป็นเครื่องมือสำรองข้อมูลที่ง่ายและทรงพลัง ตัวอย่างสำหรับสำรองข้อมูลไปยัง HDD ภายนอกทุกวัน

rsync -a --delete /home/user/ /media/usb/backup/

ใช้งานอัตโนมัติร่วมกับ cron

สามารถตั้งเวลารัน rsync อัตโนมัติด้วย cron เช่น สำรองข้อมูลทุกวันตอน 2.00 น.

0 2 * * * rsync -a /home/user/ /mnt/backup/ >> /var/log/rsync.log 2>&1

rsync เหมาะสำหรับความยืดหยุ่นและประสิทธิภาพ

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

6. แนะนำ GUI Tool “Grsync”

เหมาะสำหรับผู้ที่ไม่ถนัดคอมมานด์ไลน์

rsync เป็นเครื่องมือที่ทรงพลังแต่ต้องใช้ผ่านเทอร์มินัล สำหรับผู้เริ่มต้นหรือคนที่ชอบเห็นภาพแนะนำ Grsync เครื่องมือ GUI ที่ใช้ rsync อยู่เบื้องหลัง แต่ตั้งค่าและใช้งานผ่านหน้าต่างกราฟิกได้ง่าย

วิธีติดตั้ง Grsync (Ubuntu)

บน Ubuntu สามารถติดตั้ง Grsync ได้ง่าย ๆ ด้วยคำสั่ง APT

sudo apt update
sudo apt install grsync

ติดตั้งเสร็จจะมีแอป “Grsync” ให้เลือกในเมนูแอปพลิเคชัน สามารถเปิดใช้งาน GUI ได้ทันที

การใช้งานพื้นฐานของ Grsync

หน้าจอของ Grsync ใช้งานง่าย มีตัวเลือกหลัก ๆ ดังนี้

  • กรอกพาธต้นทางและปลายทาง
  • มีช่องเลือกออปชั่นหลัก เช่น “ซิงค์แบบ recursive”, “คงคุณสมบัติไฟล์”, “ลบไฟล์ปลายทาง” ฯลฯ
  • กำหนดรูปแบบไฟล์/โฟลเดอร์ที่ไม่ต้องซิงค์
  • ปุ่มทดลอง dry-run

ตั้งค่าตามต้องการแล้วกด “ดำเนินการ” เพื่อให้ rsync ทำงานเบื้องหลัง

ใช้โปรไฟล์ช่วยให้จัดการงานซ้ำ ๆ ได้ง่าย

Grsync สามารถบันทึกการตั้งค่าเป็น “โปรไฟล์” เหมาะสำหรับกรณีสำรองข้อมูลหลายจุด เช่น

  • โปรไฟล์ 1: สำรองไปยัง USB
  • โปรไฟล์ 2: ซิงค์กับ NAS
  • โปรไฟล์ 3: มิเรอร์ไปยังเซิร์ฟเวอร์ภายนอก

สลับโปรไฟล์ได้ง่ายจาก GUI

ข้อดี-ข้อเสียของการใช้ Grsync

ข้อดีข้อเสีย
ใช้งานง่าย ไม่ต้องพิมพ์คำสั่งบางออปชั่นขั้นสูงตั้งค่าผ่าน GUI ไม่ได้
เห็นความหมายของออปชั่นแต่ละตัวขณะเลือกภาพรวมผลลัพธ์อาจไม่ละเอียดเท่าเทอร์มินัล
เริ่มใช้งานได้อย่างปลอดภัย (dry-run เพียงคลิกเดียว)ความยืดหยุ่นบางอย่างอาจด้อยกว่าเทอร์มินัล

7. ปัญหาที่พบบ่อยและแนวทางแก้ไข

สิทธิ์ไฟล์ไม่ถูกเก็บรักษา

อาการ: เจ้าของ/สิทธิ์ไฟล์เปลี่ยนหลังคัดลอก
สาเหตุ: ใช้งาน rsync โดยไม่มี -a หรือไม่ได้ใช้สิทธิ์ root
แนวทางแก้ไข:

  • ระบุ -a อย่างชัดเจนในคำสั่ง
  • ใช้ sudo เมื่อจำเป็น
sudo rsync -a /source/ /destination/

ลิงก์สัญลักษณ์ (symlink) ไม่ถูกคัดลอก

อาการ: ไฟล์ลิงก์ไม่ถูกคัดลอกหรือกลายเป็นไฟล์จริง
สาเหตุ: ค่าพื้นฐานคือคัดลอกลิงก์ หากต้องการให้เป็นไฟล์จริงให้ใช้ตัวเลือก
แนวทางแก้ไข:

  • คัดลอกเป็นลิงก์: ใช้ -a
  • คัดลอกเป็นไฟล์จริง: เพิ่ม --copy-links

พบข้อความ “Permission denied”

อาการ: ไม่สามารถซิงค์ไฟล์/โฟลเดอร์บางส่วนได้
สาเหตุ: ไม่มีสิทธิ์เข้าถึง
แนวทางแก้ไข:

  • ใช้ sudo รัน rsync
  • ตรวจสอบและปรับสิทธิ์ไดเรกทอรี
sudo rsync -a /source/ /destination/

พบ “rsync: connection unexpectedly closed” (กรณีเชื่อมต่อระยะไกล)

อาการ: การซิงค์กับเซิร์ฟเวอร์ถูกตัดขาด
สาเหตุ: ตั้งค่า SSH ไม่ถูกต้อง พาธผิด หรือปัญหาสิทธิ์ปลายทาง
แนวทางแก้ไข:

  • ทดสอบ SSH แยก: ssh user@host
  • ตรวจสอบ path ให้ถูกต้อง
  • ตรวจสอบ firewall/port

“Argument list too long”

อาการ: พบข้อผิดพลาดเมื่อซิงค์โฟลเดอร์ที่มีไฟล์จำนวนมาก
สาเหตุ: จำนวน argument เกินขีดจำกัดของ shell
แนวทางแก้ไข:

  • ใช้ --exclude หรือ --include เพื่อลดจำนวนไฟล์
  • แบ่งซิงค์เป็นส่วน ๆ

8. FAQ (คำถามที่พบบ่อย)

รวมข้อสงสัยที่พบบ่อยเกี่ยวกับการใช้ rsync บน Ubuntu พร้อมคำอธิบายชัดเจนสำหรับผู้เริ่มต้น

Q1. ทำอย่างไรให้ rsync เก็บรักษาเจ้าของไฟล์/สิทธิ์ต่าง ๆ?

A1. ใช้ -a (archive mode) เพื่อเก็บรักษาสิทธิ์ เวลาปรับปรุง เจ้าของและกลุ่มไฟล์ เหมาะสำหรับการสำรองไฟล์ระบบ

rsync -a /etc/ /backup/etc/

Q2. หากต้องการยกเว้นไฟล์/โฟลเดอร์บางอย่าง?

A2. ใช้ --exclude พร้อมกำหนดรูปแบบไฟล์/โฟลเดอร์

rsync -av --exclude '*.log' /project/ /backup/project/

รองรับ wildcards และใช้ยกเว้น node_modules หรือ .git ได้

Q3. จะจำกัดแบนด์วิดท์ของ rsync อย่างไร?

A3. ใช้ --bwlimit โดยระบุหน่วยเป็น KB/s

rsync -av --bwlimit=5000 /data/ user@remote:/data/

ตัวอย่างนี้จำกัดความเร็วที่ 5MB/s เหมาะสำหรับกรณีไม่ต้องการให้ rsync ใช้แบนด์วิดท์เต็ม

Q4. ต้องการตรวจสอบว่าจะเกิดอะไรขึ้นก่อนรันจริง?

A4. ใช้ --dry-run หรือ -n เพื่อซิมูเลชันผลลัพธ์ก่อนถ่ายโอนไฟล์จริง

rsync -av --dry-run /source/ /destination/

เหมาะสำหรับผู้ที่ใช้งานครั้งแรกหรือกรณีที่มี --delete

Q5. rsync จะคัดลอกไฟล์ซ่อน (dotfile) ด้วยหรือไม่?

A5. ใช่ rsync จะคัดลอกไฟล์ที่ขึ้นต้นด้วยจุด (.) ด้วย หากต้องการยกเว้นให้เพิ่ม --exclude '.*'

Q6. ความแตกต่างระหว่าง rsync กับ scp คือ?

A6. scp คือเครื่องมือคัดลอกไฟล์แบบง่าย ที่จะคัดลอกทุกไฟล์ทุกครั้ง rsync จะคัดลอกเฉพาะไฟล์ที่เปลี่ยนแปลง มีประสิทธิภาพสำหรับสำรองข้อมูลหรือมิเรอร์ รองรับการ resume หากขาดการเชื่อมต่อ

9. สรุป

บทความนี้ได้อธิบายตั้งแต่การติดตั้ง rsync บน Ubuntu, การใช้งานเบื้องต้น, การซิงค์กับเซิร์ฟเวอร์, ออปชั่นเสริม, การใช้ GUI Grsync ไปจนถึงการแก้ปัญหาและ FAQ สำหรับทุกระดับผู้ใช้

ทบทวนข้อดีของ rsync

  • ถ่ายโอนเฉพาะส่วนต่างอย่างรวดเร็ว ลดการโอนข้อมูลซ้ำซ้อน
  • รักษาสิทธิ์และเจ้าของไฟล์ เหมาะสำหรับการสำรองและมิเรอร์
  • รองรับการซิงค์ระยะไกล ผ่าน SSH อย่างปลอดภัย
  • มีตัวเลือกหลากหลาย เช่น exclude, limit bandwidth ฯลฯ
  • ใช้ร่วมกับ cron เพื่ออัตโนมัติและตั้งเวลารันงานได้
  • มี GUI อย่าง Grsync ให้ผู้เริ่มต้นใช้งานได้ง่าย

rsync คือ “เครื่องมือพื้นฐานที่ชาว Linux ต้องรู้”

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

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