เซิร์ฟเวอร์ Minecraft ที่รันอยู่บน VPS สะสมความทรงจำและความพยายามของผู้เล่นไว้มหาศาล ตั้งแต่สิ่งก่อสร้าง เรดสโตนที่ซับซ้อน ไปจนถึงข้อมูลผู้เล่นและ config ปลั๊กอิน เพียงพลาดครั้งเดียว ไม่ว่าจะเป็นดิสก์เสีย โลกพัง หรือคำสั่งลบผิดพลาด ทุกอย่างก็หายไปในพริบตา บทความนี้จะแนะนำวิธีตั้งค่าการสำรองข้อมูลแบบอัตโนมัติด้วย cron ร่วมกับ tar และ rsync พร้อมทำสำเนา offsite เพื่อให้โลกของคุณปลอดภัยแม้ VPS จะล่ม
ทำไมต้องสำรองข้อมูลอัตโนมัติ
การสำรองข้อมูลด้วยมือมักถูกลืม และมักจะถูกนึกถึงก็ต่อเมื่อสายเกินไปแล้ว การทำ backup แบบอัตโนมัติผ่าน cron ช่วยให้คุณมีสำเนาสม่ำเสมอโดยไม่ต้องพึ่งความจำ ยิ่งเซิร์ฟเวอร์มีผู้เล่นมากและอัปเดตบ่อย ยิ่งต้องสำรองถี่ขึ้น เพราะข้อมูลที่หายไปในหนึ่งวันอาจหมายถึงงานสร้างหลายชั่วโมงของผู้เล่นทั้งชุมชน
หลักคิดสำคัญคือ การมี backup ไม่ได้แปลว่าปลอดภัย จนกว่าคุณจะเคยทดสอบกู้คืนสำเร็จ อย่างน้อยเดือนละครั้ง ควรลองแตกไฟล์ backup ล่าสุดในโฟลเดอร์ทดสอบเพื่อยืนยันว่าไฟล์ไม่เสียหายและกู้คืนได้จริง
ต้องสำรองอะไรบ้าง
หลายคนสำรองแค่โฟลเดอร์ world หลัก แต่ลืมส่วนอื่นที่สำคัญไม่แพ้กัน สำหรับเซิร์ฟเวอร์ที่ใช้ Paper หรือ Spigot สิ่งที่ควรสำรองมีดังนี้
- โฟลเดอร์โลกทั้งหมด —
world,world_nether,world_the_end(Paper แยกมิติเป็นโฟลเดอร์ต่างหาก) - server.properties — ค่าตั้งค่าหลักของเซิร์ฟเวอร์
- โฟลเดอร์ plugins/ — ตัวปลั๊กอินและไฟล์ config ทั้งหมด
- ops.json และ whitelist.json — รายชื่อแอดมินและ whitelist
- bukkit.yml, spigot.yml, paper-global.yml — config ระดับเซิร์ฟเวอร์
ปัญหาความสอดคล้องของข้อมูล (Consistency)
นี่คือจุดที่มือใหม่พลาดบ่อยที่สุด หากคุณ copy โฟลเดอร์ world ขณะที่เซิร์ฟเวอร์กำลังเขียนไฟล์ region อยู่ คุณอาจได้ snapshot ที่ฉีกขาด (torn) หรือไฟล์ region เสียหายจนโหลดไม่ขึ้น เพื่อป้องกันปัญหานี้มีสองทางเลือก
วิธีที่ 1: หยุดเซิร์ฟเวอร์ชั่วคราว
ปลอดภัยที่สุด สั่ง stop เซิร์ฟเวอร์ ทำ backup แล้วเปิดใหม่ เหมาะกับเซิร์ฟเวอร์ส่วนตัวที่ปิดช่วงตี 4 ได้โดยไม่กระทบใคร
วิธีที่ 2: ใช้ save-off + save-all
สำหรับเซิร์ฟเวอร์ที่ต้องออนไลน์ตลอด ให้สั่งผ่าน console หรือ RCON ก่อนสำรอง โดยพิมพ์ save-all เพื่อบันทึกทุกอย่างลงดิสก์ ตามด้วย save-off เพื่อสั่งให้เซิร์ฟเวอร์หยุดเขียนไฟล์โลกชั่วคราว จากนั้นค่อย copy หรือ tar เมื่อเสร็จแล้วสั่ง save-on เพื่อให้กลับมาบันทึกตามปกติ วิธีนี้ทำให้ได้สำเนาที่สมบูรณ์โดยไม่ต้องปิดเซิร์ฟเวอร์
อย่า copy โฟลเดอร์โลกขณะเซิร์ฟเวอร์ทำงานโดยไม่สั่ง save-off ก่อนเด็ดขาด ไฟล์ region (.mca) อาจถูกเขียนกลางคันและทำให้ backup เสียหายแบบไม่รู้ตัว จนกว่าจะถึงวันที่ต้องกู้คืนจริง
สคริปต์สำรองข้อมูลด้วย tar
สร้างไฟล์ /opt/minecraft/backup.sh ตามตัวอย่างด้านล่าง สคริปต์นี้จะบีบอัดโฟลเดอร์โลกทั้งหมดเป็นไฟล์ .tar.gz พร้อมประทับวันเวลา และลบ backup ที่เก่ากว่า 7 วันออกอัตโนมัติ
#!/bin/bash
set -euo pipefail
SERVER_DIR="/opt/minecraft/server"
BACKUP_DIR="/opt/minecraft/backups"
KEEP_DAYS=7
mkdir -p "$BACKUP_DIR"
cd "$SERVER_DIR"
# ถ้าใช้ RCON ให้สั่ง save-off + save-all ที่นี่ก่อน (ดูหัวข้อ consistency)
# mcrcon -H 127.0.0.1 -P 25575 -p PASS "save-all" "save-off"
tar czf "$BACKUP_DIR/backup-$(date +%F-%H%M).tar.gz" \
world world_nether world_the_end \
server.properties ops.json whitelist.json plugins
# mcrcon -H 127.0.0.1 -P 25575 -p PASS "save-on"
# ลบ backup ที่เก่ากว่า KEEP_DAYS วัน
find "$BACKUP_DIR" -name "backup-*.tar.gz" -mtime +$KEEP_DAYS -delete
echo "Backup completed: $(date)"
อย่าลืมให้สิทธิ์รันด้วย chmod +x /opt/minecraft/backup.sh และทดสอบรันด้วยมือหนึ่งครั้งก่อนตั้ง cron
ตั้งเวลาด้วย crontab
เปิด crontab ด้วยคำสั่ง crontab -e แล้วเพิ่มบรรทัดด้านล่างเพื่อให้สำรองข้อมูลทุกวันตอนตี 4 ซึ่งเป็นช่วงที่ผู้เล่นน้อยที่สุด
# สำรองข้อมูล Minecraft ทุกวันเวลา 04:00
0 4 * * * /opt/minecraft/backup.sh >> /var/log/mc-backup.log 2>&1
การ redirect output ไปยัง log ช่วยให้คุณตรวจสอบได้ว่า cron ทำงานสำเร็จหรือไม่ ควรเข้าไปดู log เป็นระยะในช่วงแรกเพื่อยืนยันว่าทุกอย่างเดินตามแผน
เปรียบเทียบกลยุทธ์การสำรองข้อมูล
| กลยุทธ์ | ความถี่ | เก็บย้อนหลัง | เหมาะกับ |
|---|---|---|---|
| tar เต็มก้อน (local) | รายวัน | 7 วัน | เซิร์ฟเวอร์เล็ก-กลาง |
| rsync offsite | รายวัน | 7-14 วัน | ป้องกัน VPS ล่ม |
| restic/borg (dedup) | ทุก 6 ชม. | 30+ วัน | โลกขนาดใหญ่ |
| snapshot โฮสต์ | 2 ครั้ง/เดือน | ตามผู้ให้บริการ | สำรองระดับระบบ |
สำเนา Offsite และกฎ 3-2-1
backup ที่อยู่บน VPS เครื่องเดียวกับเซิร์ฟเวอร์ไม่ช่วยอะไรเลยหากดิสก์เสียหรือ VPS ถูกลบ กฎ 3-2-1 บอกว่าคุณควรมี ข้อมูล 3 สำเนา บน สื่อ 2 ชนิด และ อย่างน้อย 1 สำเนาอยู่นอกสถานที่ (offsite) วิธีง่ายที่สุดคือใช้ rsync ส่งโฟลเดอร์ backup ไปยังเซิร์ฟเวอร์อื่นหรือ object storage
# ส่ง backup ไปเครื่อง remote ผ่าน SSH
rsync -avz --delete /opt/minecraft/backups/ user@remote-host:/backups/minecraft/
หรือใช้ restic สำรองไปยัง S3-compatible storage ซึ่งได้ทั้ง dedup, การเข้ารหัส และ retention ในตัว
export RESTIC_REPOSITORY="s3:https://s3.example.com/mc-backups"
restic backup /opt/minecraft/backups
restic forget --keep-daily 7 --keep-weekly 4 --prune
Incremental Backup สำหรับโลกขนาดใหญ่
เมื่อโลกโตขึ้นเรื่อย ๆ การ tar เต็มก้อนทุกวันจะกินพื้นที่และเวลามาก ทางแก้คือใช้ backup แบบ incremental ที่เก็บเฉพาะส่วนที่เปลี่ยนแปลง เครื่องมืออย่าง restic และ borg ใช้ deduplication ทำให้เก็บ snapshot หลายชุดโดยใช้พื้นที่น้อยมาก หรือถ้าใช้ rsync สามารถใช้ --link-dest เพื่อสร้าง hard link ไปยัง backup ก่อนหน้า ทำให้ไฟล์ที่ไม่เปลี่ยนไม่ถูกก็อปซ้ำ
ขั้นตอนกู้คืนโลก
backup จะมีค่าก็ต่อเมื่อกู้คืนได้ ขั้นตอนพื้นฐานมีดังนี้
- สั่ง stop เซิร์ฟเวอร์ให้หยุดสนิทก่อนเสมอ
- สำรองโฟลเดอร์โลกปัจจุบันไว้ก่อน (เผื่อกู้ผิดชุด)
- แตกไฟล์ backup ทับโฟลเดอร์เดิม:
tar xzf backup-2026-07-02-0400.tar.gz -C /opt/minecraft/server - ตรวจสอบสิทธิ์ไฟล์ (owner ต้องเป็น user ที่รันเซิร์ฟเวอร์)
- เปิดเซิร์ฟเวอร์ใหม่และเข้าตรวจสอบว่าโลกโหลดถูกต้อง
สำรองข้อมูลบน VPS ของ AsiaGB
หากคุณรัน Minecraft บน VPS Linux ของ AsiaGB ซึ่งเริ่มต้นที่ 500 บาท/เดือน คุณสามารถตั้ง cron และสคริปต์ข้างต้นได้ทันทีบนเครื่องที่ใช้ดิสก์ SSD ทางฝั่งโฮสต์ AsiaGB มีระบบสำรองข้อมูลอัตโนมัติเดือนละ 2 ครั้ง (วันที่ 1 และ 15) เป็นการสำรองระดับระบบ พร้อมการันตี uptime 99% และจัดการผ่าน DirectAdmin อย่างไรก็ตามเราแนะนำให้คุณตั้ง backup เฉพาะของ Minecraft เองด้วยความถี่ที่สูงกว่า เพราะข้อมูลเกมเปลี่ยนแปลงทุกวันและคุณควรควบคุมรอบการสำรองให้เหมาะกับชุมชนของคุณเอง
คำถามที่พบบ่อย (FAQ)
ต้องปิดเซิร์ฟเวอร์ Minecraft ทุกครั้งที่ backup ไหม
ไม่จำเป็น หากใช้ RCON สั่ง save-all ตามด้วย save-off ก่อนสำรอง แล้วสั่ง save-on หลังเสร็จ จะได้สำเนาที่สมบูรณ์โดยไม่ต้องปิดเซิร์ฟเวอร์ แต่การปิดชั่วคราวยังเป็นวิธีที่ปลอดภัยที่สุดสำหรับเซิร์ฟเวอร์ส่วนตัว
ควรสำรองข้อมูล Minecraft บ่อยแค่ไหน
ขึ้นกับความ active ของเซิร์ฟเวอร์ เซิร์ฟเวอร์ที่มีผู้เล่นมากควรสำรองทุก 6 ชั่วโมงหรือรายวัน ส่วนเซิร์ฟเวอร์เล็กรายวันก็เพียงพอ และควรมีสำเนา offsite อย่างน้อย 1 ชุดตามกฎ 3-2-1 เสมอ
ทำไม backup ที่อยู่บน VPS เดียวกันถึงไม่ปลอดภัย
เพราะหากดิสก์เสีย VPS ถูกลบ หรือถูกแฮก ทั้งเซิร์ฟเวอร์และ backup จะหายพร้อมกัน กฎ 3-2-1 จึงกำหนดให้มีอย่างน้อย 1 สำเนาอยู่นอกสถานที่ เช่น rsync ไปเครื่องอื่นหรือ object storage
AsiaGB สำรองข้อมูลให้อยู่แล้ว ทำไมต้องตั้ง backup เอง
ระบบสำรองของ AsiaGB ทำงานเดือนละ 2 ครั้ง (วันที่ 1 และ 15) เป็นการสำรองระดับระบบ ซึ่งอาจไม่ถี่พอสำหรับข้อมูลเกมที่เปลี่ยนทุกวัน การตั้ง backup เฉพาะของ Minecraft เองช่วยให้คุณกู้คืนได้ละเอียดและถี่กว่ามาก
พร้อมเปิดเซิร์ฟเวอร์ Minecraft ของคุณแล้วหรือยัง?
AsiaGB VPS Linux (SSD, DirectAdmin, uptime 99%) เริ่มต้น 500 บาท/เดือน ดาต้าเซ็นเตอร์ไทย/สิงคโปร์ ปิงต่ำ เหมาะกับเซิร์ฟ Minecraft ทุกขนาด
ดูแพ็กเกจ VPS