☆☆☆一、每日自動備份網站資料及資料庫上傳FTP☆☆☆
這個方式,主要是一個指令碼(包含壓縮網站資料及資料庫,上傳),然後用cron命令每天在指定時間段運行,下面請看指令碼代碼(指令碼內資訊需自行設定)
| 代碼如下 |
複製代碼 |
#!/bin/bash
#以下資訊請自行修改
MYSQL_USER=root #mysql使用者名稱
MYSQL_PASS=123456 #mysql密碼
MAIL_TO=admin@zrblog.net #資料庫發送到的郵箱
FTP_USER=zrblog #ftp使用者名稱
FTP_PASS=123456 #ftp密碼
FTP_IP=*.*.*.* #ftp地址
FTP_backup=zrblog-backup #ftp上存放備份檔案的目錄,這個要自己得ftp上面建的
WEB_DATA=/home/wwwroot #要備份的網站資料
#以上資訊自行修改
#定義資料庫的名字和舊資料庫的名字
DataBakName=Data_$(date +”%Y%m%d”).tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
OldData=Data_$(date -d -5day +”%Y%m%d”).tar.gz
OldWeb=Web_$(date -d -5day +”%Y%m%d”).tar.gz
#刪除本地3天前的資料
rm -rf /home/backup/Data_$(date -d -3day +”%Y%m%d”).tar.gz /home/backup/Web_$(date -d -3day +”%Y%m%d”).tar.gz
cd /home/backup
#匯出資料庫,一個資料庫一個壓縮檔
for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e ‘SHOW DATABASES’ | xargs`; do
(/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 – > ${db}.sql.gz)
done
#壓縮資料庫檔案為一個檔案
tar zcf /home/backup/$DataBakName /home/backup/*.sql.gz
rm -rf /home/backup/*.sql.gz
#發送資料庫到Email,如果資料庫壓縮後太大,請注釋這行
#echo “主題:Database Backup” | mutt -a /home/backup/$DataBakName -s “內容:Database Backup” $MAIL_TO
#壓縮網站資料
tar zcf /home/backup/$WebBakName $WEB_DATA
#上傳到FTP空間,刪除FTP空間5天前的資料
ftp -v -n $FTP_IP << END
user $FTP_USER $FTP_PASS
type binary
cd $FTP_backup
delete $OldData
delete $OldWeb
put $DataBakName
put $WebBakName
bye
END
|
將以上指令碼按照您的VPS資訊設定後,存為AutoBackupToFtp.sh,然後上傳至VPS的root目錄下。
請確保您的VPS能正常發信,否則請安裝(yum install sendmail mutt),然後,給指令碼賦予許可權
| 代碼如下 |
複製代碼 |
chmod +x /root/AutoBackupToFtp.sh
|
接下來我們可以測試下這個指令碼是否正常工作,ssh登陸手動運行指令碼,查看相關FTP位置是否收到資料。如果一切正常,我們再用cron實現每日自動運行這個指令碼
添加以下任務
| 代碼如下 |
複製代碼 |
00 03 * * * /root/AutoBackupToFtp.sh
|
任務的時間請自行設定,比如上面代碼中的00 03,就是3點,盡量選擇您網站訪客最少的時間段,比如淩晨。
附指令碼下載:http://www.zrblog.net/sh/AutoBackupToFtp.sh
【注意事項】如果運行指令碼時提示backup檔案夾不存在,或者不能建立,請手動在VPS的home目錄下建立backup檔案夾。
☆☆☆二、RSYNC增量備份☆☆☆
RSYNC增量備份,需要2台VPS,讓他們之間做資料同步。比如,我們的網站放在VPS A,那麼A就是伺服器端;用另一台VPS B做增量備份,那麼B就是用戶端。
這裡說的只是單純的B為A備份,A與B均為linux相同系統。
首先下載伺服器端和用戶端設定檔:伺服器端設定檔—-用戶端設定檔
【伺服器端設定】
首先,將下載回來的伺服器端設定檔上傳至VPS的/etc目錄中,然後對相關檔案修改設定(也可以先修改再上傳)
①修改/etc/rsyncd/rsyncd.conf共5處
| 代碼如下 |
複製代碼 |
1、address = 1.2.3.4 #第七行修改為伺服器IP
2、hosts allow=4.3.2.1 #第二十行修改為用戶端IP
3、[zrblog] #第三十四行自訂命名
4、path = /home/wwwroot #第三十五行修改同步目錄
5、auth users = zrblog #第三十八行指定使用者名稱
|
②修改/etc/rsyncd/rsyncd.secrets使用者及密碼,並賦予許可權(此使用者及密碼請自行指定)
| 代碼如下 |
複製代碼 |
chmod 600 /etc/rsyncd/rsyncd.secrets |
③在伺服器上運行rsyns
| 代碼如下 |
複製代碼 |
/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf |
【用戶端設定】
將下載的用戶端設定檔上傳至VPS的/root目錄,然後對相關檔案設定
①修改/root/pass檔案,填入密碼設定與伺服器端一致,並賦予許可權。
| 代碼如下 |
複製代碼 |
chmod 600 /root/pass |
②修改/root/rs.sh檔案,設定rsync路徑與伺服器端一致,並賦予許可權。
| 代碼如下 |
複製代碼 |
rsync -avzP --delete --password-file=/root/pass zrblog@1.2.3.4::zrblog /home/wwwroot
#上面第一個zrblog為伺服器端/etc/rsyncd/rsyncd.secrets中使用者名稱
#1.2.3.4為伺服器端IP |
#第二個zrblog為伺服器端設定的自訂命名
#最後的/home/wwwroot為同步的網站目錄
然後,設定許可權
| 代碼如下 |
複製代碼 |
chmod +x /root/rs.sh |
完成以上設定後,請手動在用戶端運行/root/rs.sh,檢測是否正常同步成功。
補充一點,如果你使用了iptalbes,請注意rsync需要開放連接埠873,不然也是沒法同步的。
若未能達到你想要的,就根據具體情況修繕。
最後,做一個計劃任務,在用戶端按時運行同步(使用crontab命令)。
相信,只要您使用了上面兩種自動備份中的任何一種,都無疑為您的網站資料安全提供了一份有力的保障。
s