การเก็บข้อมูล Backup ของเว็บไซต์ WordPress เป็นสิ่งสำคัญที่ไม่ควรมองข้าม เพราะหากเกิดเหตุการณ์ร้าย เช่น เซิร์ฟเวอร์เสีย Hacking หรือข้อมูลสูญหาย คุณจะสามารถกู้คืนเว็บไซต์ได้ อย่างไรก็ตาม การเก็บ Backup บนเซิร์ฟเวอร์เดียวกันมีความเสี่ยงสูง หากเกิดปัญหากับ Disk Drive บน Cloud VPS ตัวนั้น ทั้ง Website และ Backup ก็จะหายไปพร้อมกัน ด้วยเหตุนี้จึงเป็นสิ่งจำเป็นต้องส่ง Backup ไปเก็บที่ Remote Storage ซึ่งอยู่ที่คนละที่ กัน
ทำไมต้องส่ง Backup ไป Remote Storage?
การเก็บ Backup ไว้บนเซิร์ฟเวอร์เดียวกันกับเว็บไซต์มีข้อเสี่ยงหลายประการ:
- ปัญหาการตาย Hard Drive: หาก Hard Drive บน Cloud VPS เสีย Backup ก็จะสูญหายไปด้วย ไม่มีวิธีกู้คืน
- ปัญหา Disk Space: Backup ที่เก็บบนเซิร์ฟเวอร์เดียวกันจะใช้พื้นที่ Disk และทำให้ Disk Full ได้ ส่งผลให้ Server เล็นลงหรือหลังค้างทั้งเว็บไซต์
- ปัญหา Ransomware: หาก Server ถูก Ransomware Attack ตัว Backup ก็อาจถูก Encrypt ไปด้วย
- ปัญหา Data Disaster: ในกรณีของ Data Center Disaster เช่น ไฟไหม้ น้ำท่วม ตัว Server ทั้งหมดจะหายไป
ด้วยเหตุนี้ สถาบัน NIST และมาตรฐานด้าน Disaster Recovery บ่งชี้ว่า Backup ควรเก็บไว้ 3 ที่ โดยมี 2 ที่อยู่ Local (เพื่อเร็ว) และ 1 ที่อยู่ Off-site (เพื่อความปลอดภัย)
วิธีการ Backup อัตโนมัติ ผ่าน Plesk
หาก Cloud VPS ของคุณติดตั้ง Plesk ให้ทำตามขั้นตอนต่อไปนี้:
- ล็อกอินเข้า Plesk Admin Console
- ไปที่ Tools & Settings > Backup Manager
- คลิก Remote Storage Settings
- เลือก Remote Storage Type: FTP, SFTP, S3 หรือ Azure Blob Storage
- กรอกข้อมูล Connection (Hostname, Username, Password)
- ทดสอบการเชื่อมต่อด้วยปุ่ม “Test Connection”
- กลับไปที่ Backup Manager แล้วคลิก Scheduled Backup
- ตั้งเวลา Backup เช่น ทุกวันเวลา 3:00 น.
- เลือก Backup Destination เป็น Remote Storage ที่ตั้งค่าไว้
- คลิก OK
วิธีนี้ Plesk จะทำการ Backup Database และ Files ทั้งหมดของ WordPress อัตโนมัติตามตารางที่ตั้งไว้ และส่งไปเก็บที่ Remote Storage โดยอัตโนมัติ
Backup ไป AWS S3 ด้วย Script Shell
หากต้องการความยืดหยุ่นมากขึ้น สามารถเขียน Shell Script เพื่อ Backup ไปยัง AWS S3 ได้ ต้องติดตั้ง AWS CLI ก่อน
# ติดตั้ง AWS CLI
sudo apt-get update
sudo apt-get install -y awscli
# ตั้งค่า AWS Credentials
aws configure
# ป้อน Access Key ID และ Secret Access Key ของคุณ
หลังจากติดตั้งแล้ว สร้าง Script สำหรับ Backup:
#!/bin/bash
# ตั้งค่าตัวแปร
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/tmp/wordpress_backup"
WP_ROOT="/var/www/html/wordpress"
DB_NAME="wordpress_db"
DB_USER="wordpress_user"
DB_PASS="your_password"
DB_HOST="localhost"
S3_BUCKET="s3://your-bucket-name/wordpress-backups"
# สร้าง Directory สำหรับ Backup
mkdir -p $BACKUP_DIR
# Backup Database
echo "Backing up database..."
mysqldump -u $DB_USER -p$DB_PASS -h $DB_HOST $DB_NAME > $BACKUP_DIR/database_$DATE.sql
# Backup WordPress Files (เฉพาะ wp-content ไป่ wp-config.php)
echo "Backing up WordPress files..."
tar -czf $BACKUP_DIR/wordpress_files_$DATE.tar.gz \
-C $WP_ROOT . \
--exclude=wp-config.php \
--exclude=.htaccess \
--exclude=node_modules
# Backup wp-config.php แยกต่างหาก
echo "Backing up wp-config..."
tar -czf $BACKUP_DIR/wp-config_$DATE.tar.gz -C $WP_ROOT wp-config.php
# อัปโหลด Backup ไปยัง S3
echo "Uploading to S3..."
aws s3 cp $BACKUP_DIR/database_$DATE.sql $S3_BUCKET/ --sse AES256
aws s3 cp $BACKUP_DIR/wordpress_files_$DATE.tar.gz $S3_BUCKET/ --sse AES256
aws s3 cp $BACKUP_DIR/wp-config_$DATE.tar.gz $S3_BUCKET/ --sse AES256
# ลบ Backup ชั่วคราวบนเซิร์ฟเวอร์เพื่อประหยัด Disk Space
echo "Cleaning up local backup..."
rm -rf $BACKUP_DIR
echo "Backup completed at $(date)"
# ส่ง Notification ไปที่ Email (Optional)
# echo "Backup completed" | mail -s "WordPress Backup Report" [email protected]
บันทึกไฟล์ชื่อ backup-s3.sh และตั้งสิทธิในการ Execute:
chmod +x /usr/local/bin/backup-s3.sh
จากนั้นเพิ่มใน Crontab เพื่อให้ทำงานอัตโนมัติทุกวันเวลา 3:00 น.:
0 3 * * * /usr/local/bin/backup-s3.sh >> /var/log/backup-s3.log 2>&1
Backup ไป Google Drive ด้วย rclone
rclone เป็นเครื่องมือที่มีประสิทธิภาพสำหรับ Backup ไปยัง Google Drive, Dropbox, OneDrive เป็นต้น ซึ่งเป็นตัวเลือกที่ดีสำหรับ Personal หรือ Small Business
# ติดตั้ง rclone
curl https://rclone.org/install.sh | sudo bash
# ตั้งค่าเชื่อมต่อ Google Drive
rclone config
# เลือก Google Drive และทำการ Authenticate ผ่าน Browser
หลังจากตั้งค่าเรียบร้อย สร้าง Script สำหรับ Backup ไป Google Drive:
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/tmp/wordpress_backup"
WP_ROOT="/var/www/html/wordpress"
DB_NAME="wordpress_db"
DB_USER="wordpress_user"
DB_PASS="your_password"
mkdir -p $BACKUP_DIR
# Backup Database
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/database_$DATE.sql
# Backup Files
tar -czf $BACKUP_DIR/wordpress_$DATE.tar.gz -C $WP_ROOT . --exclude=wp-config.php
# อัปโหลดไป Google Drive ด้วย rclone
rclone copy $BACKUP_DIR gdrive:wordpress-backup/ --log-file=/var/log/rclone-backup.log
# ลบไฟล์ชั่วคราว
rm -rf $BACKUP_DIR
echo "Backup to Google Drive completed at $(date)"
และตั้ง Crontab:
0 3 * * * /usr/local/bin/backup-gdrive.sh >> /var/log/backup-gdrive.log 2>&1
Backup ด้วย rsync ไปยังอีก VPS (Off-site Backup)
หากต้องการ Off-site Backup ด้วย Cost ต่ำ สามารถใช้ rsync ส่ง Backup ไปยัง VPS อื่น (เช่น VPS ที่ Data Center อื่น) ได้
# ตั้งค่า SSH Key สำหรับ Passwordless Login
ssh-keygen -t ed25519 -f ~/.ssh/backup_key -N ""
ssh-copy-id -i ~/.ssh/backup_key [email protected]
สร้าง Script สำหรับ rsync Backup:
#!/bin/bash
SOURCE_DIR="/var/www/html/wordpress/"
BACKUP_USER="backup_user"
BACKUP_SERVER="backup-server.com"
BACKUP_PATH="/backups/wordpress/"
SSH_KEY="~/.ssh/backup_key"
# Backup Database ก่อน
DATE=$(date +%Y%m%d)
mysqldump -u wordpress_user -ppassword wordpress_db | gzip > /tmp/db_$DATE.sql.gz
# rsync ไปยัง Backup Server
rsync -avz \
-e "ssh -i $SSH_KEY" \
--delete \
--log-file=/var/log/rsync-backup.log \
$SOURCE_DIR \
$BACKUP_USER@$BACKUP_SERVER:$BACKUP_PATH
# rsync Database Backup
rsync -avz \
-e "ssh -i $SSH_KEY" \
/tmp/db_$DATE.sql.gz \
$BACKUP_USER@$BACKUP_SERVER:$BACKUP_PATH
# ลบไฟล์ชั่วคราว
rm /tmp/db_$DATE.sql.gz
echo "rsync backup completed at $(date)"
Best Practice สำหรับ Automated Backup
- ทำ Backup บ่อย: ตั้งเวลา Backup ให้ทำงานทีละหลายครั้งต่อวัน เช่น ทุก 6 ชั่วโมง ขึ้นอยู่กับความถี่ของการเปลี่ยนแปลง Content
- เก็บ Backup หลายเวอร์ชัน: อย่าเก็บแค่ 1 เวอร์ชัน ให้เก็บ 7 วันล่าสุด หรืออย่างน้อย 4 สัปดาห์ เพื่อป้องกันสถานการณ์ที่ต้องกู้คืนข้อมูลเก่า
- ทดสอบ Restore: อย่างน้อยเดือนละครั้ง ให้ทดสอบการกู้คืน Backup เพื่อให้แน่ใจว่า Backup ใช้งานได้จริง
- Monitor Backup Status: ติดตั้ง Monitoring เพื่อรับ Alert หาก Backup ล้มเหลว
- เข้ารหัส Backup: ใช้ Encryption สำหรับ Sensitive Data ในเวลาส่ง Backup ผ่าน Network
แนวทางการเลือก Remote Storage สำหรับ Cloud VPS
สำหรับ Cloud VPS ของ de.co.th แนะนำให้เลือก Remote Storage ตามความต้องการ:
- AWS S3: เหมาะสำหรับ Enterprise ที่ต้องการ Scalability สูง เสียค่าใช้งาน แต่มี Free Tier
- Google Drive / Dropbox: เหมาะสำหรับ SME เสียค่าน้อย ใช้ง่าย
- Backup VPS: เหมาะสำหรับ Cost-effective Solution คือสร้าง Backup VPS ชุด เล็กไว้ที่ Data Center อื่น
สรุป
การส่ง Backup WordPress ไปยัง Remote Storage เป็นส่วนสำคัญของ Disaster Recovery Strategy ไม่ว่าจะใช้ Plesk, AWS S3, Google Drive หรือ rsync แต่ละวิธีมีข้อดีข้อเสีย ให้เลือกตามความเหมาะสมกับธุรกิจของคุณ ด้วย Cloud VPS จาก de.co.th และเครื่องมือที่เหมาะสม คุณสามารถสร้างระบบ Backup ที่แข็งแรง และปลอดภัยได้

