用Vps什麼事都要自己費心,備份也是。像Linode裡的備份服務是要收費的,一個月是5美元。與其花這5美元,不如自己豐衣足食。為服務安裝上了Dropbox,設定為每天4:00-6:00 開啟同步服務。在之前運行兩個指令碼,自動備份web檔案夾和mysql資料庫。
兩個指令碼都是備份檔案到/root/Dropbox/backup目錄裡,並自動刪除10天前的備份。web備份是每周行一次,刪除30天前的備份。
一、備份WEB檔案夾
1、備份/home/users/public_html目錄
2、修改crontab為每周第一天3:22時運行
複製代碼 代碼如下:
22 3 * * 0 root run-parts /etc/cron.weekly
3、複製指令碼到/etc/cron.weekly目錄
4、修改許可權
複製代碼 代碼如下:
chmod 0755 /etc/cron.weekly/webbackup.sh
5、指令碼如下
複製代碼 代碼如下:
#!/bin/sh
filename=`date +%Y%m%d`
backup_dir="/root/Dropbox/backup/web"
#delete all files 10 days ago
find $backup_dir -mtime +30 -name "*" -exec rm -rf {} \;
#each user you want backup
users="baidu sina"
for user in ${users}; do
tar zcvf $backup_dir/$user$filename.tar.gz /home/$user/public_html
done
6、注意filename那句不是單引號,在tab鍵上方
7、要備份的使用者的public_html目錄,就把該使用者填入users
二、Mysql資料庫每日備份
1、為了安全,建立使用者backup,用強密碼(自動產生即可),全域許可權為select,lock tables
2、每日3:00開始執行,修改crontab
3、複製指令碼到/etc/cron.daily
4、修改許可權
5、指令碼內容
複製代碼 代碼如下:
#!/bin/sh
dbuser="backup"
dbpassword="youpassword"
datas="db1 db2 db3"
filename=`date +%Y%m%d`
bin_dir="/usr/local/mysql/bin"
backup_dir="/root/Dropbox/backup/mysql"
#delete all files 10 days ago
find $backup_dir -mtime +10 -name "*" -exec rm -rf {} \;
#Do each database backup
for data in ${datas}; do
$bin_dir/mysqldump --opt -u$dbuser -p$dbpassword $data | gzip > $backup_dir/$data$filename.sql.gz
done
6、同上一個第6條
7、要備份的資料庫填入datas
三、感受
因為都在美國的原因,備份到dropbox的速度很快,一個10M的檔案備份到dropbox,從開啟dropbox服務,馬上重新整理dropbox的網站就可以看到了。
如果流量很緊張的話,也可以設定dropbox為每周運行,或每5天運行等。應該是需要設定要備份周期,或者結合起來使用。