Linux VPS自動備份:指令碼上傳FTP及RSYNC增量備份

來源:互聯網
上載者:User

 

☆☆☆一、每日自動備份網站資料及資料庫上傳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實現每日自動運行這個指令碼

 

 代碼如下 複製代碼

crontab –e

 

添加以下任務

 

 代碼如下 複製代碼

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.