Site icon PlusMagi's Blog By Pitt Phunsanit

Linux: rsync

rsync ( Remote Sync ) เป็นเครื่องมือสำหรับซิงโครไนซ์และถ่ายโอนไฟล์ทั้งในเครื่องเดียวกันและระหว่างเครื่องผ่านเครือข่าย จุดเด่นของ rsync คือการถ่ายโอนเฉพาะส่วนที่เปลี่ยนแปลง ทำให้ประหยัดเวลาและ bandwidth อย่างมาก


การติดตั้ง

Ubuntu / Debian
sudo apt install rsync

CentOS / RHEL / Fedora

sudo dnf install rsync

macOS (มาพร้อมระบบอยู่แล้ว หรือติดตั้งผ่าน Homebrew)

brew install rsync


รูปแบบคำสั่งพื้นฐาน

rsync [ตัวเลือก] <ต้นทาง> <ปลายทาง>


ตัวเลือก ( Options ) ที่ใช้บ่อย

ตัวเลือกความหมาย
-aArchive mode — รักษา permission, timestamp, symlink, owner ฯลฯ
-vVerbose — แสดงรายละเอียดขณะทำงาน
-zบีบอัดข้อมูลระหว่างส่ง
-Pแสดง progress bar และ resume ได้
-rคัดลอกแบบ recursive ( โฟลเดอร์และโฟลเดอร์ย่อย )
-nDry run — จำลองการทำงานโดยไม่แก้ไขไฟล์จริง
–deleteลบไฟล์ปลายทางที่ไม่มีในต้นทาง
–excludeระบุไฟล์ / โฟลเดอร์ที่ต้องการข้าม
-e sshใช้ SSH เป็นช่องทางส่งข้อมูล

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


คัดลอกไฟล์ภายในเครื่องเดียวกัน

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

หมายเหตุ: เครื่องหมาย / ท้ายโฟลเดอร์ต้นทางมีความสำคัญ


ซิงค์ไปยังเครื่องระยะไกลผ่าน SSH

rsync -avz -e ssh /home/user/project/ user@192.168.1.100:/var/www/project/


ดึงไฟล์จากเครื่องระยะไกลมายังเครื่องตัวเอง

rsync -avz user@192.168.1.100:/var/log/ /home/user/logs/


ทดสอบก่อนรัน ( Dry Run )

rsync -avn /home/user/documents/ /backup/documents/

แนะนำให้ใช้ -n เสมอก่อนรันจริง โดยเฉพาะเมื่อใช้ --delete


ซิงค์พร้อมลบไฟล์ที่ไม่มีในต้นทาง

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


ข้ามไฟล์บางประเภท

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


แสดง Progress Bar

rsync -av --progress /home/user/bigfile.iso /backup/

หรือใช้ -P ซึ่งรวม –progress และ –partial ไว้ด้วยกัน

rsync -avP /home/user/bigfile.iso /backup/


จำกัดความเร็วในการส่งข้อมูล

rsync -avz --bwlimit=5000 /home/user/data/ user@remote:/data/

หน่วยเป็น KB/s ( 5000 = 5 MB/s )


ใช้กับ SSH Port ที่กำหนดเอง

rsync -avz -e "ssh -p 2222" /home/user/data/ user@remote:/data/

ซิงค์จาก exclude file

สร้างไฟล์ exclude-list.txt

*.tmp
*.log
.DS_Store
node_modules/
__pycache__/

จากนั้นรัน
rsync -av --exclude-from='exclude-list.txt' /home/user/project/ /backup/project/


เปรียบเทียบ rsync กับ cp และ scp

คุณสมบัติcpscprsync
ส่งผ่านเครือข่าย
ส่งเฉพาะส่วนที่เปลี่ยน
Resume ได้
บีบอัดข้อมูล
Exclude pattern
Dry run

การใช้ rsync กับ Cron Job ( สำรองข้อมูลอัตโนมัติ )

เปิด crontab
crontab -e

เพิ่มบรรทัดนี้เพื่อสำรองข้อมูลทุกวันเวลาตี 2

0 2 * * * rsync -az --delete /home/user/data/ /backup/data/ >> /var/log/rsync-backup.log 2>&1


ข้อควรระวัง

  1. เครื่องหมาย / ท้ายชื่อโฟลเดอร์ — มีผลต่อพฤติกรรมการคัดลอก ควรระวังให้ดี
  2. --delete — จะลบไฟล์ปลายทางอย่างถาวร ควรทำ dry run ก่อนเสมอ
  3. สิทธิ์ (Permission) — บางครั้งต้องใช้ sudo หากปลายทางต้องการสิทธิ์พิเศษ
  4. SSH Key — ควรตั้งค่า SSH key-based authentication เพื่อให้ rsync ทำงานอัตโนมัติโดยไม่ต้องพิมพ์รหัสผ่าน

สรุป

rsync เป็นเครื่องมือที่ทรงพลังและยืดหยุ่นสูง เหมาะกับงานสำรองข้อมูล ซิงโครไนซ์ไฟล์ และ deploy ระบบ การเรียนรู้ตัวเลือกหลักอย่าง -avz, --delete, --exclude, และ -P ก็เพียงพอสำหรับการใช้งานส่วนใหญ่แล้ว


อ่านเพิ่มเติม

Exit mobile version