คำตอบสั้น ๆ: ตั้งการสำรองข้อมูลของทุกบัญชีไปเก็บนอกเครื่องผ่าน FTP หรือ SSH พร้อมรอบเวลา การจำกัดจำนวนที่เก็บ และการกู้คืน
คู่มือนี้อธิบาย 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
ตั้งรันทุกวันหลังเวลาที่ข้อมูลสำรองส่งมาถึงแล้ว