ทำไมการ Backup WordPress ถึงสำคัญมาก
ไม่ว่าเว็บไซต์จะอยู่บน hosting ที่เชื่อถือได้แค่ไหน เหตุการณ์ที่ไม่คาดฝันก็เกิดขึ้นได้เสมอ ไม่ว่าจะเป็น server ล่ม, การอัปเดต plugin ที่ผิดพลาด, การโดน hack, หรือแม้แต่การลบไฟล์โดยไม่ได้ตั้งใจ หาก backup ไม่มี ทุกอย่างที่สร้างมาอาจหายไปในชั่วพริบตา
กฎทอง 3-2-1 ของการ backup คือ เก็บ copy ไว้ 3 ชุด บนสื่อ 2 ประเภท และอย่างน้อย 1 ชุดต้องอยู่ offsite (ต่างสถานที่กับ server หลัก)
วิธีที่ 1 — Backup ด้วย cPanel Backup Wizard
cPanel มีเครื่องมือ Backup Wizard ในตัวที่ใช้งานง่าย เหมาะสำหรับ backup ครั้งคราวหรือก่อนทำการเปลี่ยนแปลงสำคัญ
- เข้า cPanel > Files > Backup Wizard
- คลิก "Back Up"
- เลือก "Full Backup" เพื่อ backup ทุกอย่าง หรือ "Partial Backup" สำหรับแค่ database
- เลือก destination เป็น "Home Directory"
- รอ email แจ้งเมื่อ backup เสร็จ
- ดาวน์โหลดไฟล์ .tar.gz ไว้ที่เครื่องของคุณ
วิธีที่ 2 — ใช้ UpdraftPlus Plugin (แนะนำที่สุด)
UpdraftPlus เป็น backup plugin ยอดนิยมที่ดาวน์โหลดแล้วมากกว่า 3 ล้านครั้ง รองรับ backup อัตโนมัติตามกำหนดเวลาและส่งไปเก็บที่ cloud storage ได้โดยตรง
ขั้นตอนติดตั้งและตั้งค่า UpdraftPlus
- ไปที่ WordPress Admin > Plugins > Add New ค้นหา "UpdraftPlus"
- ติดตั้งและ Activate
- ไปที่ Settings > UpdraftPlus Backups > Settings
- ตั้ง "Files backup schedule" เป็น "Daily" หรือ "Weekly"
- ตั้ง "Database backup schedule" เป็น "Daily"
- เลือก Remote Storage เป็น Google Drive หรือ Dropbox
- เชื่อมต่อ account แล้วคลิก "Save Changes"
วิธีที่ 3 — Backup Database ด้วย mysqldump
สำหรับผู้ที่มีสิทธิ์ SSH สามารถ backup database ได้โดยตรงด้วย command line ซึ่งเร็วและน่าเชื่อถือ
# Backup database เดียว
mysqldump -u username -p database_name > backup_$(date +%Y%m%d).sql
# Backup พร้อม compress
mysqldump -u username -p database_name | gzip > backup_$(date +%Y%m%d).sql.gz
# Restore จาก backup
mysql -u username -p database_name < backup_20260610.sql
# Restore จาก compressed backup
gunzip < backup_20260610.sql.gz | mysql -u username -p database_name
วิธีที่ 4 — ตั้ง Cron Job Backup อัตโนมัติ
สร้าง script สำหรับ backup อัตโนมัติและตั้ง cron job ผ่าน cPanel
#!/bin/bash
# backup-wp.sh
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/home/username/backups"
WP_DIR="/home/username/public_html"
DB_USER="dbuser"
DB_PASS="dbpass"
DB_NAME="dbname"
mkdir -p $BACKUP_DIR
# Backup database
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/db_$DATE.sql.gz
# Backup files
tar -czf $BACKUP_DIR/files_$DATE.tar.gz $WP_DIR
# ลบ backup เก่ากว่า 14 วัน
find $BACKUP_DIR -mtime +14 -delete
echo "Backup completed: $DATE"
จากนั้นไปที่ cPanel > Advanced > Cron Jobs แล้วเพิ่ม cron ที่รันทุกคืน
0 2 * * * /bin/bash /home/username/backup-wp.sh >> /home/username/backup.log 2>&1
เก็บ Backup Offsite บน Google Drive
UpdraftPlus รองรับ Google Drive โดยตรง สำหรับผู้ที่ทำ backup manual ให้ใช้ rclone ซึ่งเป็น command-line tool สำหรับ sync ไฟล์ไปยัง cloud storage
# ติดตั้ง rclone (ถ้ามี SSH)
curl https://rclone.org/install.sh | sudo bash
# ตั้งค่า (จะมี wizard ถามรายละเอียด)
rclone config
# Sync backup ไป Google Drive
rclone copy /home/username/backups gdrive:wordpress-backups/
ทดสอบ Restore ก่อนวันที่ต้องการใช้จริง
การ backup ที่ดีคือ backup ที่ restore ได้จริง ให้ทดสอบ restore บน staging server หรือ localhost อย่างน้อยเดือนละครั้ง เพื่อให้แน่ใจว่าเมื่อฉุกเฉินจริงจะทำได้ทันที
ตรวจสอบว่า Backup ทำงานถูกต้อง
# ดูรายการ backup ที่มี
ls -lh ~/backups/
# ทดสอบ integrity ของ backup
gzip -t backup_20260610.sql.gz && echo "OK" || echo "CORRUPTED"
# ดูขนาด database ปัจจุบัน
mysql -u username -p -e "SELECT table_schema AS 'DB', ROUND(SUM(data_length+index_length)/1024/1024,2) AS 'MB' FROM information_schema.tables GROUP BY table_schema;"
# ตรวจสอบ cron log
tail -20 ~/backup.log
แก้ปัญหาที่พบบ่อย
UpdraftPlus Backup ล้มเหลวตอนกลางคัน
สาเหตุมักเป็น PHP execution timeout ไปที่ Settings > UpdraftPlus > Advanced Settings แล้วลด "Divide database tables" ให้น้อยลง หรือติดต่อ hosting เพื่อเพิ่ม max_execution_time
Backup ไฟล์ใหญ่เกินไป
ถ้า wp-content/uploads มีรูปภาพสะสมมาหลายปี ไฟล์ backup จะใหญ่มาก แนะนำให้ย้ายรูปภาพไปเก็บบน Cloud Storage เช่น Amazon S3 แล้ว backup แค่ database และ theme/plugin files
Google Drive ไม่ยอม Connect
ตรวจสอบว่า Hosting Server ของคุณสามารถเชื่อมต่อ internet ขาออกได้ บาง hosting ปิด outbound connection ให้ติดต่อ support เพื่อ whitelist Google API domain
Restore แล้วเว็บขึ้น Error 500
ตรวจสอบว่า database credentials ใน wp-config.php ตรงกับ database ที่ restore มา และ table prefix ตรงกัน หากย้ายข้าม server อาจต้องแก้ DB_HOST ด้วย
คำถามที่พบบ่อย
ควร backup บ่อยแค่ไหน
ขึ้นอยู่กับความถี่ของการอัปเดตเนื้อหา สำหรับเว็บที่อัปเดตทุกวันควร backup database ทุกวัน ส่วน files ที่ไม่ค่อยเปลี่ยน backup สัปดาห์ละครั้งก็เพียงพอ
Hosting มี automatic backup อยู่แล้ว ยังต้องทำ backup เองไหม
ต้องทำครับ backup ของ hosting มักเก็บไว้เพียง 7–30 วัน และอาจไม่ครอบคลุมทุกกรณี การมี backup ของตัวเองที่เก็บไว้หลายที่ทำให้ปลอดภัยกว่ามาก
Duplicator กับ UpdraftPlus ต่างกันอย่างไร
Duplicator เน้นการ clone และย้าย WordPress ระหว่าง server เป็นหลัก ส่วน UpdraftPlus เน้น scheduled backup และ remote storage สำหรับ backup routine ประจำ UpdraftPlus เหมาะกว่า