มีหลายๆคนถามผมว่า เมื่อมีเว็บเยอะแล้วก็เว็บใหญ่ๆ หากใช้ Backup ของ DirectAdmin ที่ต้องบีบไฟล์ขนาดใหญ่ๆหลาย G จะทำเครื่องช้าทันที จะแก้ไขยังไง
วันนี้พอมีเวลาเลยจะเอามาแชร์เผื่อเป็นทางเลือกครับ
ที่ผมใช้อยู่คือ ใช้ Admin Backup/Transfer ของ DirectAdmin เหมือนเดิม แต่ตั้งค่าให้ Backup แค่ MySQL และ password ต่างๆทั้ง unix user แล้วก็ email user ส่วน MailrDir แล้วก็ home จะข้ามไป ส่วนไฟล์ใน /home ก็ใช้ rsync แทน
วิธีการก็ประมาณนี้ครับ
ส่วนแรกตั้งค่า config ในส่วน backup ของ directadmin
1 แก้ไข directadmin.conf เพิ่มค่านี้ลงไป skip_hometargz_in_backups=1 แล้วก็ค่านี้ skip_domains_in_backups=1
สั่งแบบนี้ได้เลย แต่ระวังตรง >> อย่าใส่อันเดียวนะ ไม่งั้นงานเข้าแน่
echo -e "skip_hometargz_in_backups=1
skip_domains_in_backups=1" >> /usr/local/directadmin/conf/directadmin.conf
- restart directadmin
ส่วนที่สอง backup /home ด้วย rsync
rsync -va /home /hdd2 #ตัวอย่าง backup ไว้ที่เครื่องเดียวกัน
rsync -va -e ‘ssh -p 22’ user@host:/folder # backup ไปไว้ที่ เครื่องอื่น หากใครเปลี่ยน port ssh ก็ใส่ตาม port ทีตั้ง ถ้าไม่ได้เปลี่ยนก็ไม่ต้องใส่ก็ได้
ในส่วนการ restore ก็ยังคงทำด้วย DirectAdmin เหมือนเดิม แต่ส่วน ไฟล์เว็บ ใน /home ก็แล้วจะสะดวกจะใช้ ftp rsycn scp จะเอาทั้งหมด หรือบางส่วนก็แล้วแต่สะดวก
เครื่องผมจากที่ Backup ใช้เวลาเป็นวันๆ ปรับมาใช่แบบนี้ใช้เวลาไม่ถึง ชม ครับ
แถมท้าย shell script ครับ ก็ตั้ง crontab ตามสะดวกครับ
#!/bin/sh
#-p = port
rsync -va -e 'ssh -p xxxx' /home [email]backupxxxx@xxx.xxx.xxx.xxx[/email]:/home/backupxxxx/
tmp=/tmp/mail-body-`date +%F`;
touch $tmp && chmod 600 $tmp;
#Set up the various headers for sendmail to use
TO="cust@xxx.com";
CC="admin@xxxx.com";
FROM="admin@xxx.xom";
SUBJECT="`hostname` Backup Seccessfully";
MIMEVersion=1.0.;
CONTENTType=text/html; charset=utf-8;
BODY="[b]Rsync from `hostname` to xxx.xxx.xxx complete [/b]";
echo -e To: $TO > $tmp;
echo -e Cc: $CC >> $tmp;
echo -e From: $FROM >> $tmp;
echo -e Content-Type: $CONTENTType >> $tmp;
echo -e MIME-Version: $MIMEVersion >> $tmp;
echo -e Subject: $SUBJECT >> $tmp;
echo -e $BODY >> $tmp;
/usr/sbin/sendmail -t < $tmp;
rm -rf $tmp;
แล้วก็วิธี ssh โดยไม่ต้องใส่รหัสครับ จะได้ไม่ต้องระบุรหัสลองในสคริบ