Backup และ Restore เว็บไซต์ใน cPanel ฉบับสมบูรณ์

ทำ Full Backup, Partial Backup และ Restore ข้อมูลเว็บไซต์ผ่าน cPanel ได้ง่าย พร้อมตั้งค่า Backup อัตโนมัติ

Backup และ Restore เว็บไซต์ใน cPanel ฉบับสมบูรณ์ cPanel

การสำรองข้อมูล (Backup) เว็บไซต์เป็นสิ่งที่เจ้าของเว็บทุกคนต้องทำเป็นประจำ เพราะไม่มีใครรู้ล่วงหน้าว่าจะเกิดอะไรขึ้นกับเว็บไซต์ ไม่ว่าจะเป็นการโดนแฮก ไฟล์เสียหาย หรือแม้แต่ความผิดพลาดจากการแก้ไขโค้ด cPanel มีเครื่องมือสำรองข้อมูลที่ครบครันและใช้งานได้ง่ายแม้สำหรับผู้เริ่มต้น บทความนี้จะพาคุณผ่านขั้นตอนทุกอย่างตั้งแต่การทำ Full Backup ไปจนถึงการ Restore ข้อมูลคืนอย่างถูกวิธี

ทำไมต้อง Backup เว็บไซต์อยู่เสมอ

ก่อนจะเข้าสู่ขั้นตอนเทคนิค มาทำความเข้าใจกันก่อนว่าเหตุใดการ Backup จึงสำคัญมากสำหรับเว็บไซต์ทุกประเภท ไม่ว่าจะเป็น Blog ส่วนตัวหรือเว็บอีคอมเมิร์ซขนาดใหญ่

ประเภทของ Backup ใน cPanel

cPanel มีตัวเลือก Backup ให้เลือกใช้หลายแบบ แต่ละแบบเหมาะกับสถานการณ์ที่แตกต่างกัน ดังนี้

1. Full Account Backup

เป็นการสำรองข้อมูลทั้งหมดในบัญชี Hosting รวมถึงไฟล์เว็บไซต์ทั้งหมด ฐานข้อมูล MySQL อีเมล และการตั้งค่าต่างๆ ไฟล์ที่ได้จะเป็น .tar.gz ขนาดใหญ่ที่สามารถนำไป Restore ได้ครบถ้วน

2. Partial Backup (Home Directory / Database / Email)

เป็นการสำรองเฉพาะส่วนที่ต้องการ เช่น เฉพาะไฟล์ใน Home Directory เฉพาะฐานข้อมูล หรือเฉพาะ Email Forwarder ทำให้ไฟล์มีขนาดเล็กกว่าและดาวน์โหลดได้เร็วกว่า

3. Backup Wizard

เครื่องมือแบบ Step-by-Step ที่ cPanel เตรียมไว้สำหรับผู้ที่ต้องการความช่วยเหลือในการทำ Backup หรือ Restore ทีละขั้นตอน

วิธีทำ Full Backup ผ่าน cPanel

การทำ Full Backup เป็นวิธีที่ครอบคลุมที่สุด แนะนำให้ทำก่อนการเปลี่ยนแปลงครั้งใหญ่หรืออย่างน้อยสัปดาห์ละครั้ง

  1. ล็อกอินเข้าสู่ cPanel ของคุณ (โดยทั่วไปที่ yourdomain.com/cpanel หรือ yourdomain.com:2083)
  2. ในหมวด Files ให้คลิกที่ Backup
  3. เลื่อนลงมาที่ส่วน Full Account Backups
  4. เลือก Destination ว่าต้องการบันทึกไฟล์ไว้ที่ไหน ตัวเลือกได้แก่
    • Home Directory — บันทึกในเซิร์ฟเวอร์เดียวกัน
    • Remote FTP Server — ส่งไปยัง FTP ภายนอก
    • Remote FTP Server (Passive) — สำหรับ FTP ที่อยู่หลัง Firewall
    • Secure Copy (SCP) — ส่งผ่าน SSH ที่ปลอดภัยกว่า
  5. กรอก Email ที่ต้องการรับแจ้งเตือนเมื่อ Backup เสร็จสิ้น
  6. คลิก Generate Backup
  7. รอให้ระบบสร้างไฟล์ Backup (อาจใช้เวลาหลายนาทีขึ้นอยู่กับขนาดข้อมูล)
  8. เมื่อได้รับอีเมลแจ้งเตือน ให้กลับมาที่หน้า Backup แล้วดาวน์โหลดไฟล์มาเก็บไว้ในเครื่องคอมพิวเตอร์ของคุณ
หมายเหตุ: ไฟล์ Full Backup ที่สร้างขึ้นมักจะถูกเก็บไว้ใน Home Directory ที่ /home/username/ ของคุณ ซึ่งไฟล์นี้จะนับรวมกับพื้นที่ Disk Space ของบัญชี ดังนั้นควรดาวน์โหลดและลบออกจากเซิร์ฟเวอร์หลังจากบันทึกเสร็จแล้ว

วิธีทำ Partial Backup (สำรองเฉพาะส่วน)

Partial Backup เหมาะสำหรับกรณีที่ต้องการสำรองข้อมูลเฉพาะส่วน เช่น ก่อนการแก้ไขโค้ดหรืออัพเดทฐานข้อมูล

สำรองเฉพาะไฟล์ (Home Directory Backup)

  1. ไปที่ cPanel > Backup
  2. ในส่วน Partial Backups คลิก Home Directory
  3. ระบบจะดาวน์โหลดไฟล์ homedir_backup-[วันที่].tar.gz ทันที

สำรองเฉพาะฐานข้อมูล MySQL

  1. ไปที่ cPanel > Backup
  2. ในส่วน Partial Backups > MySQL Databases
  3. เลือกฐานข้อมูลที่ต้องการ Backup จากรายการ
  4. คลิกที่ชื่อฐานข้อมูล ระบบจะดาวน์โหลดไฟล์ database_name.sql.gz
Tip: ควร Backup ทั้ง Home Directory และ MySQL Database พร้อมกันในคราวเดียว เพื่อให้ข้อมูลทั้งสองส่วนตรงกัน โดยเฉพาะอย่างยิ่งสำหรับเว็บไซต์ WordPress หรือ CMS ที่ข้อมูลต้องสัมพันธ์กัน

วิธี Restore ข้อมูลจาก Backup ใน cPanel

การ Restore ข้อมูลคือการนำไฟล์ Backup ที่บันทึกไว้มาคืนสู่เว็บไซต์ ซึ่งมีขั้นตอนที่แตกต่างกันขึ้นอยู่กับประเภทของ Backup

Restore Full Account Backup

Full Account Backup ไม่สามารถ Restore ได้ด้วยตัวเองผ่านหน้า cPanel ปกติ ต้องติดต่อ Hosting Provider ให้ทำการ Restore ให้ เนื่องจากต้องใช้สิทธิ์ระดับ Root

Restore Home Directory (ไฟล์เว็บไซต์)

  1. ไปที่ cPanel > Backup
  2. เลื่อนลงไปที่ Restore a Home Directory Backup
  3. คลิก Choose File แล้วเลือกไฟล์ .tar.gz ที่ต้องการ Restore
  4. คลิก Upload แล้วรอให้ระบบดำเนินการ

Restore ฐานข้อมูล MySQL

  1. ไปที่ cPanel > Backup
  2. เลื่อนลงไปที่ Restore a MySQL Database Backup
  3. คลิก Choose File แล้วเลือกไฟล์ .sql.gz หรือ .sql
  4. คลิก Upload
  5. ระบบจะ Restore ข้อมูลเข้าไปในฐานข้อมูลที่มีชื่อตรงกัน (ต้องมีฐานข้อมูลนั้นอยู่แล้ว)
สำคัญ: ก่อน Restore ฐานข้อมูล ควรทำ Backup ข้อมูลปัจจุบันก่อนเสมอ เพราะการ Restore จะเขียนทับข้อมูลที่มีอยู่และไม่สามารถกู้คืนได้

ตั้งค่า Backup อัตโนมัติด้วย Backup Wizard

cPanel มีเครื่องมือ Backup Wizard ที่ช่วยให้การตั้งค่า Backup อัตโนมัติทำได้ง่ายขึ้น โดยสามารถตั้งให้ระบบทำ Backup ตามกำหนดเวลา เช่น ทุกวัน ทุกสัปดาห์ หรือทุกเดือน

  1. ไปที่ cPanel > Backup Wizard
  2. คลิก Back Up เพื่อเริ่มต้น
  3. เลือกประเภทการ Backup: Full หรือ Partial
  4. เลือก Destination ที่ต้องการบันทึก
  5. กรอกข้อมูล FTP หรือ SCP ของปลายทางหากเลือก Remote
  6. ตั้งค่าความถี่และเวลาในการทำ Backup อัตโนมัติ
  7. คลิก Save

นอกจาก Backup Wizard แล้ว Hosting Provider หลายราย (รวมถึง YourThaiHost) ยังมีระบบ Backup อัตโนมัติให้โดยค่าเริ่มต้น ซึ่งจะเก็บข้อมูลย้อนหลัง 7-30 วัน สามารถสอบถามรายละเอียดได้จากทีมสนับสนุน

แนวทางปฏิบัติที่ดีสำหรับการ Backup

นอกจากการรู้วิธีทำ Backup แล้ว การมีแนวทางปฏิบัติที่ดีจะช่วยให้การ Backup มีประสิทธิภาพมากขึ้น

การใช้ phpMyAdmin สำรอง/กู้คืนฐานข้อมูลด้วยตนเอง

สำหรับผู้ที่ต้องการความยืดหยุ่นมากขึ้น phpMyAdmin ใน cPanel ให้การควบคุมการ Export/Import ฐานข้อมูลได้โดยตรง

# Export ฐานข้อมูลผ่าน phpMyAdmin
# 1. เปิด phpMyAdmin จาก cPanel > Databases > phpMyAdmin
# 2. เลือกฐานข้อมูลจากแถบซ้าย
# 3. คลิกแท็บ Export
# 4. เลือก Format: SQL
# 5. คลิก Go เพื่อดาวน์โหลด

# Import ฐานข้อมูลผ่าน phpMyAdmin
# 1. เลือกฐานข้อมูลปลายทาง
# 2. คลิกแท็บ Import
# 3. เลือกไฟล์ .sql หรือ .sql.gz
# 4. ตั้งค่า Character Set: utf8mb4 (สำคัญมากสำหรับภาษาไทย)
# 5. คลิก Go
Tip: หากไฟล์ SQL มีขนาดใหญ่เกินกำหนด (ปกติ 50-100MB) ใน phpMyAdmin ให้ใช้ตัวเลือก "Compress" ตอน Export เพื่อให้ได้ไฟล์ .sql.gz ที่มีขนาดเล็กกว่า หรือแจ้ง Support ให้ช่วย Import ผ่าน Command Line

Script สำรองข้อมูลอัตโนมัติด้วย cPanel Cron Jobs

สำหรับผู้ที่ต้องการตั้งค่า Backup อัตโนมัติเพิ่มเติมจากที่ Hosting Provider มีให้ สามารถสร้าง Cron Job ใน cPanel เพื่อสั่งให้ระบบทำ Backup ตามเวลาที่กำหนดได้

# ตัวอย่าง Cron Job สำหรับ Backup MySQL Database รายวัน
# ตั้งค่าใน cPanel > Advanced > Cron Jobs

# ทำงานทุกวันเวลา 02:00 น. (ชั่วโมง นาที วัน เดือน วันในสัปดาห์)
0 2 * * * /usr/bin/mysqldump --user=db_user --password=db_pass db_name | gzip > /home/username/backups/db_$(date +\%Y\%m\%d).sql.gz

# ลบ Backup เก่าที่อายุเกิน 30 วัน อัตโนมัติ
0 3 * * * find /home/username/backups/ -name "*.sql.gz" -mtime +30 -delete

# Backup ไฟล์เว็บไซต์ทุกสัปดาห์ (ทุกวันอาทิตย์เวลา 01:00 น.)
0 1 * * 0 tar -czf /home/username/backups/web_$(date +\%Y\%m\%d).tar.gz /home/username/public_html/
หมายเหตุ: ก่อนใช้ Cron Job ต้องสร้างโฟลเดอร์ backups/ ใน Home Directory ก่อน และตรวจสอบให้แน่ใจว่ามีพื้นที่ Disk Space เพียงพอสำหรับเก็บไฟล์ Backup

ตรวจสอบว่า Backup ทำงานถูกต้อง

หลังจากทำ Backup เสร็จแล้ว ควรตรวจสอบความสมบูรณ์ของไฟล์ก่อนเสมอ เพื่อให้แน่ใจว่าสามารถนำไป Restore ได้จริง

# ตรวจสอบความสมบูรณ์ของไฟล์ .tar.gz (ใช้ใน Terminal หรือ cPanel File Manager)
tar -tzf homedir_backup-2026-06-13.tar.gz | head -20

# ตรวจสอบขนาดไฟล์ให้สมเหตุสมผล (ไม่ควรเป็น 0 bytes)
ls -lh homedir_backup-*.tar.gz

# ตรวจสอบไฟล์ SQL Backup
gzip -t database_name.sql.gz && echo "OK: ไฟล์สมบูรณ์" || echo "ERROR: ไฟล์เสียหาย"

# นับจำนวน Tables ในไฟล์ SQL (ควรมีจำนวนตรงกับฐานข้อมูลจริง)
zgrep "CREATE TABLE" database_name.sql.gz | wc -l

# ดู Backup Log ล่าสุดจาก cPanel (ถ้า Hosting Provider เปิดให้ดู)
cat /var/cpanel/logs/backup_log_$(date +%Y-%m-%d)
Tip: วิธีที่ดีที่สุดในการตรวจสอบ Backup คือการ Restore ลงในสภาพแวดล้อมทดสอบ (Staging) แล้วตรวจว่าเว็บไซต์ทำงานได้ปกติ ควรทำการทดสอบนี้อย่างน้อยเดือนละครั้ง

แก้ปัญหาที่พบบ่อย

Error: "Backup failed - Disk quota exceeded"

เกิดขึ้นเมื่อพื้นที่ Disk Space ในบัญชีไม่เพียงพอสำหรับสร้างไฟล์ Backup วิธีแก้คือลบไฟล์ที่ไม่จำเป็นออกก่อน หรือเลือก Destination เป็น Remote FTP แทนการบันทึกใน Home Directory ตรวจสอบพื้นที่ได้ที่ cPanel > Files > Disk Usage

Error: "The restore failed because the backup file was not recognized"

มักเกิดจากไฟล์ Backup เสียหายระหว่างการดาวน์โหลดหรืออัพโหลด ให้ดาวน์โหลดไฟล์ใหม่และตรวจสอบ Checksum ก่อน Restore ใหม่อีกครั้ง นอกจากนี้ตรวจสอบว่าไฟล์ที่ Upload มีนามสกุลถูกต้อง (.tar.gz หรือ .sql.gz)

Error: "Maximum execution time exceeded" ขณะ Restore ผ่าน phpMyAdmin

เกิดขึ้นเมื่อไฟล์ SQL มีขนาดใหญ่เกินกว่าที่ PHP จะประมวลผลได้ในเวลาที่กำหนด ให้แบ่งไฟล์ SQL เป็นส่วนย่อยๆ ด้วยเครื่องมือ mysqldumpsplitter หรือติดต่อ Hosting Provider ให้ช่วย Import ผ่าน Command Line แทน

Error: "Database already exists" เมื่อ Restore

ถ้าต้องการ Restore ทับฐานข้อมูลเดิม ให้เปิดไฟล์ SQL และเพิ่มคำสั่ง DROP TABLE IF EXISTS ก่อนแต่ละ CREATE TABLE หรือใช้ phpMyAdmin ล้างข้อมูลในฐานข้อมูลก่อนแล้วค่อย Import ใหม่

Error: Backup อัตโนมัติไม่ทำงานตามเวลา

ตรวจสอบการตั้งค่า Cron Job ใน cPanel > Advanced > Cron Jobs ว่า Format เวลาถูกต้อง และ Path ของ Command ถูกต้อง (ใช้ Full Path เช่น /usr/bin/mysqldump แทน mysqldump) นอกจากนี้ตรวจสอบว่า Email แจ้งเตือน Cron Job ถูก Spam Filter กักไว้หรือไม่


คำถามที่พบบ่อย

Q: ควรทำ Backup บ่อยแค่ไหน?

A: ขึ้นอยู่กับความถี่ในการอัพเดทเนื้อหา สำหรับเว็บที่อัพเดทรายวันควรทำ Backup ทุกวัน เว็บทั่วไปควรทำอย่างน้อยสัปดาห์ละครั้ง และควรทำทุกครั้งก่อนการเปลี่ยนแปลงสำคัญ เช่น อัพเดท Plugin หลักหรือเปลี่ยน Theme

Q: Hosting Provider ทำ Backup ให้อยู่แล้ว ยังต้องทำ Backup เองไหม?

A: แนะนำให้ทำ Backup เองเพิ่มเติมเสมอ แม้ Hosting Provider จะมี Backup ให้ เพราะ Backup ของ Provider อาจมีข้อจำกัดด้านระยะเวลาย้อนหลัง บางครั้งอาจไม่ครอบคลุมทุกกรณี และการมี Backup หลายชุดในหลายที่ช่วยลดความเสี่ยงได้มาก

Q: ไฟล์ Backup ขนาดใหญ่มาก จะลดขนาดได้อย่างไร?

A: สามารถลดขนาดได้โดยการ Compress ไฟล์เป็น .tar.gz หรือ .zip ซึ่ง cPanel ทำให้อัตโนมัติอยู่แล้ว นอกจากนี้ควรลบไฟล์ขยะออกจากเว็บไซต์ก่อน Backup เช่น Cache Files, Log Files เก่า หรือรูปภาพที่ไม่ได้ใช้แล้ว เพื่อลดขนาดโดยรวม