ลดความยุ่งยากในการใช้คลาวด์ พูดคุยกับเจ้าหน้าที่

ตั้งสำรองข้อมูลอัตโนมัติไปเซิร์ฟเวอร์อื่นบน DirectAdmin
Home ตั้งสำรองข้อมูลอัตโนมัติไปเซิร์ฟเวอร์อื่นบน DirectAdmin

ตั้งสำรองข้อมูลอัตโนมัติไปเซิร์ฟเวอร์อื่นบน DirectAdmin

DirectAdmin มีระบบสำรองข้อมูลระดับผู้ดูแลที่สำรองทุกอย่างของแต่ละบัญชี ทั้งไฟล์เว็บ ฐานข้อมูล อีเมล ระเบียน DNS และการตั้งค่า ทำให้กู้คืนบัญชีทั้งบัญชีได้ในขั้นตอนเดียว

คู่มือนี้ตั้งให้ส่งออกไปเก็บนอกเครื่อง ซึ่งเป็นเงื่อนไขพื้นฐานที่ทำให้การสำรองข้อมูลมีความหมายจริง

สิ่งที่ต้องเตรียม

  • DirectAdmin และสิทธิ์ผู้ดูแลระบบ
  • เซิร์ฟเวอร์ปลายทางที่รับ FTP หรือ SSH ได้
  • พื้นที่ปลายทางอย่างน้อยสามเท่าของข้อมูลจริง
du -sh /home/*/domains 2>/dev/null | sort -h | tail -10
df -h

ขั้นตอนที่ 1: เตรียมเซิร์ฟเวอร์ปลายทาง

สร้างผู้ใช้เฉพาะสำหรับรับข้อมูลสำรอง โดยให้เข้าถึงได้เฉพาะโฟลเดอร์ของตัวเอง

# บนเซิร์ฟเวอร์ปลายทาง
sudo adduser --disabled-password --gecos "" dabackup
sudo mkdir -p /srv/backups/da
sudo chown dabackup:dabackup /srv/backups/da
sudo chmod 750 /srv/backups/da

ตั้ง SSH Key เพื่อไม่ต้องเก็บรหัสผ่านในคอนฟิก

# บนเซิร์ฟเวอร์ DirectAdmin
sudo ssh-keygen -t ed25519 -f /root/.ssh/da_backup -N ''
sudo ssh-copy-id -i /root/.ssh/da_backup.pub [email protected]
sudo ssh -i /root/.ssh/da_backup [email protected] 'echo ok'

ขั้นตอนที่ 2: ตั้งค่าใน DirectAdmin

เข้า DirectAdmin ด้วยบัญชี Admin ไปที่ Admin Tools แล้ว Admin Backup/Transfer

ในแท็บ Create Backup ตั้งค่า

  • Step 1 เลือก All Users หรือเลือกเฉพาะบัญชีที่ต้องการ
  • Step 2 เลือก Schedule แล้วกำหนดรอบเวลา
  • Step 3 เลือกสิ่งที่จะสำรอง แนะนำให้เลือกทุกอย่าง
  • Step 4 เลือกที่เก็บเป็น FTP หรือ SCP

สำหรับ FTP ใส่ข้อมูล

FTP IP:       10.0.0.9
FTP Username: dabackup
FTP Password: รหัสผ่าน
FTP Path:     /srv/backups/da
Use secure FTP (FTPS): เปิด

สำหรับ SCP ซึ่งปลอดภัยกว่า ใส่ข้อมูลเซิร์ฟเวอร์และระบุพาธของ SSH Key

ขั้นตอนที่ 3: ตั้งรอบเวลาให้เหมาะสม

แนะนำสองงานควบคู่กัน

  • รายวัน ตอนตีสอง เก็บ 7 ชุด
  • รายสัปดาห์ คืนวันอาทิตย์ เก็บ 4 ชุด

ตรวจว่างานถูกสร้างใน cron

sudo crontab -l | grep -i backup
sudo cat /usr/local/directadmin/data/admin/backup_crons/* 2>/dev/null

ขั้นตอนที่ 4: จำกัดจำนวนที่เก็บ

DirectAdmin ไม่ลบไฟล์เก่าที่ปลายทางให้อัตโนมัติในทุกกรณี ตั้งสคริปต์ที่ปลายทางแทน

# บนเซิร์ฟเวอร์ปลายทาง
sudo nano /usr/local/bin/prune-da-backups.sh
#!/bin/bash
set -euo pipefail
DEST=/srv/backups/da
KEEP=14

find "$DEST" -name '*.tar.gz' -mtime +$KEEP -print -delete
find "$DEST" -name '*.tar.zst' -mtime +$KEEP -print -delete

echo "เหลือ $(find "$DEST" -name '*.tar.*' | wc -l) ไฟล์ ใช้พื้นที่ $(du -sh "$DEST" | cut -f1)"
sudo chmod +x /usr/local/bin/prune-da-backups.sh

ตั้งรันทุกวันหลังเวลาที่ข้อมูลสำรองส่งมาถึงแล้ว

ขั้นตอนที่ 5: ทดสอบด้วยการสำรองทันที

ในหน้าเดียวกันเลือก Now แทน Schedule แล้วเริ่มงาน ดูความคืบหน้าในแท็บ Message System

# ดู Log จากบรรทัดคำสั่ง
sudo tail -f /var/log/directadmin/error.log
sudo tail -f /var/log/directadmin/system.log | grep -i backup

# ดูคิวงาน
sudo cat /usr/local/directadmin/data/task.queue

ตรวจที่ปลายทางว่าไฟล์มาถึงจริงและขนาดสมเหตุสมผล

ssh [email protected] 'ls -lh /srv/backups/da/ | tail -20'

ขั้นตอนที่ 6: กู้คืนบัญชี

ที่แท็บ Restore Backup เลือกที่มาของไฟล์ เลือกไฟล์ที่ต้องการ แล้วเลือกบัญชีที่จะกู้

ตัวเลือกสำคัญคือ IP ที่จะใช้ หากกู้ไปยังเซิร์ฟเวอร์ใหม่ที่ IP ต่างกัน ให้เลือกให้ถูกต้อง ไม่เช่นนั้นเว็บจะชี้ไป IP เดิม

กู้จากบรรทัดคำสั่งได้เช่นกัน

cd /home/admin/admin_backups
ls -lh

# วางไฟล์ที่จะกู้ในโฟลเดอร์นี้แล้วสั่งผ่านหน้าเว็บ
# หรือแตกไฟล์ดูเนื้อหาก่อน
tar -tzf user.example.tar.gz | head -30

กู้ไปยังเซิร์ฟเวอร์ทดสอบก่อนเสมอ เมื่อเป็นการกู้ครั้งสำคัญ เพื่อตรวจว่าข้อมูลครบก่อนเขียนทับของจริง

ขั้นตอนที่ 7: ตรวจสอบอัตโนมัติว่าการสำรองข้อมูลยังทำงาน

การสำรองข้อมูลที่ล้มเหลวเงียบ ๆ เป็นเดือนคือสถานการณ์ที่พบบ่อยที่สุดเมื่อเกิดเหตุจริง

#!/bin/bash
# บนเซิร์ฟเวอร์ปลายทาง ตรวจว่ามีไฟล์ใหม่วันนี้
DEST=/srv/backups/da
COUNT=$(find "$DEST" -name '*.tar.*' -mtime -1 | wc -l)
EXPECT=20   # จำนวนบัญชีที่ควรมี

if [ "$COUNT" -lt "$EXPECT" ]; then
  echo "พบไฟล์สำรองใหม่เพียง $COUNT จากที่ควรมี $EXPECT" \
    | mail -s "แจ้งเตือน: การสำรองข้อมูล DirectAdmin ผิดปกติ" [email protected]
fi

เพิ่มการตรวจสอบชนิด Push ใน Uptime Kuma เพื่อให้รู้ทันทีเมื่องานไม่ทำงานเลย

ขั้นตอนที่ 8: ซ้อมกู้คืนตามรอบ

ตั้งรอบซ้อมทุกไตรมาส กู้บัญชีหนึ่งลงเซิร์ฟเวอร์ทดสอบ ตรวจว่าเว็บเปิดได้ ฐานข้อมูลครบ และอีเมลใช้งานได้ แล้วจับเวลาที่ใช้

บันทึกผลไว้เป็นเอกสาร ตัวเลขเวลาที่ใช้กู้คืนคือสิ่งที่ต้องรู้ก่อนเกิดเหตุจริง

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

สำรองข้อมูลล้มเหลวเพราะพื้นที่ไม่พอ

DirectAdmin สร้างไฟล์ชั่วคราวบนเครื่องก่อนส่งออก ตรวจพื้นที่ใน /home และพิจารณาแบ่งสำรองเป็นหลายรอบแทนการทำทุกบัญชีพร้อมกัน

ส่งไป FTP แล้วไม่สำเร็จ

ตรวจว่าเปิด Passive mode และทดสอบการเชื่อมต่อจากเซิร์ฟเวอร์ DirectAdmin โดยตรง

curl --ftp-ssl -u dabackup:pass ftp://10.0.0.9/srv/backups/da/

กู้คืนแล้วเว็บใช้งานไม่ได้

ตรวจว่าเวอร์ชัน PHP บนเครื่องปลายทางตรงกับต้นทาง และตรวจว่าไฟล์คอนฟิกของเว็บชี้ไปยังชื่อฐานข้อมูลที่ถูกต้อง เพราะชื่ออาจเปลี่ยนตามชื่อผู้ใช้

ไฟล์สำรองใหญ่เกินไป

แยกสำรองอีเมลออกจากไฟล์เว็บ และพิจารณาใช้เครื่องมือแบบเพิ่มส่วนต่าง เช่น restic สำหรับข้อมูลที่โตเร็ว ควบคู่ไปกับการสำรองของ DirectAdmin ที่ใช้กู้ทั้งบัญชี

ต้องการบริการสำรองข้อมูลนอกสถานที่ที่มีทีมดูแล ติดต่อ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/

ผู้ให้บริการคลาวด์ไทย
เพื่อธุรกิจของคนไทย

"มุ่งมั่น" และ "มั่นคง"
พร้อมรับมือทุกการเติบโต
Trust Cloud
คลาว์ที่ปลอดภัย
คือรากฐานที่มั่นคง
cloud security