原創自動備份Linux服務器數據到七牛雲存儲Shell腳本程序-用七牛自動備份VPS中的網站數據

20140211234856
這是我公開發布的第一個Shell腳本程序,這能極大的方便Linux服務器管理員使用它自動備份數據到七牛雲存儲。html

應網友需求發佈了Windows版本,詳情見:http://wyr.me/330.htmlmysql

這個Linux腳本用shell編寫,源代碼是公開的,上傳組件利用了七牛提供的qrsync。你能夠下載個人Shell進行修改(代碼所有作了中文註釋)。固然對於普通用戶,你能夠直接按照下面的步驟輕鬆進行服務器數據備份。linux

這個腳本支持的備份程序有:網站的代碼目錄,指定的MySQL數據庫,Nginx或Apache的配置文件(即一個的數據庫導出備份和兩個目錄的備份。nginx

腳本備份順序:1.刪除本地保存的前n天數據(可指定n的數值),自動導出指定的數據庫.sql文件,壓縮數據庫爲以時間命名的tar.gz格式文件。2.壓縮網站代碼目錄下的全部文件並打包爲以時間命名的tar.gz格式文件。3.壓縮配置文件目錄下的全部文件並打包爲以時間命名的tar.gz格式文件。4.將上述三個壓縮文件包加密後壓縮爲zip加密壓縮文件,本地保留3天備份。4.將這個zip加密壓縮文件放入一個uuid生成的隨機目錄中。5.將最新的一個zip加密文件連同起所在目錄上傳到用戶指定的七牛雲存儲,同時生成一個防破解的下載地址發送到管理員郵箱。sql

從上述順序能夠看出,這個腳本對網站備份及上傳的處理是很是安全的,對數據進行了多級加密。shell

如下是面對新手的簡單視頻教程:數據庫

正式開始安裝腳本程序:
首先,使用putty或同類軟件經過SSH登錄Linux服務器。【請以root身份登錄,不然有可能致使備份失敗!】七牛雲存儲

1
cd /root
執行下面這個命令下載對應的腳本程序。(若是你擔憂這個數據包中的內容是否安全,能夠本地下載後使用七牛官方的qrsync文件替換,也可使用文本文檔打開.sh程序查看這個腳本的源代碼。本人承諾沒有任何竊取數據的代碼,請在http://wyr.me下載本數據包以確保您的數據安全)安全

Linux 32位版本:服務器

1
wget http://wyrapp.qiniudn.com/linux32bfjb.tar.gz
Linux 64位版本:

1
wget http://wyrapp.qiniudn.com/linux64bfjb.tar.gz
Mac OS 版本:

1
wget http://wyrapp.qiniudn.com/macbfjb.tar.gz

下載完畢後,接着順序執行以下命令:

1
tar -xzvf linux32bfjb.tar.gz #解壓文件,請將文件名修改成對應版本。
1
sh /root/bfjb/bfjb.sh #執行嚮導程序進行配置
接下來會進入一個引導界面,若是你的Linux安裝了中文支持,則能夠看到中文標題。若是沒有安裝也不要緊,爲了兼容全部操做系統我使用英文做爲提示。按提示輸入相應信息。

QQ20140211234925

以上英文提示的信息輸入的順序和下面的配置代碼順序同樣,對應輸入便可,很方便。

01

如下是配置內容,直接運行腳本便可出現配置嚮導,請勿手動修改!

02

03

七牛綁定的空間名稱(bucket)。

04
QINIUMC=x
05

備份所須要的腳本文件所在目錄,如按照博文順序在root目錄執行的wget的無需修改。

06
QINIUJB=/root/bfjb
07

七牛的AccessKey,到http://portal.qiniu.com/獲取,登陸七牛後在七牛的「賬號設置」-「密鑰」中可找到。

08
QINIUAccessKey=abcd1234
09

七牛的SecretKey,到http://portal.qiniu.com/獲取,登陸七牛後在七牛的「賬號設置」-「密鑰」中可找到。

10
QINIUSecretKey=abcd1234
11

備份密碼,請務必輸入20字符以上的高強度密碼,目前zip的暴力破解速度很是快。

12
BFpassword=x123
13

要備份的數據庫名,如需備份多個網站或多個數據庫請製做作個腳本在不一樣之間執行,這樣能下降服務器由於備份性能受到的影響。

14
MYSQL_SJNAME=x123
15

Mysql用戶名(要有對應數據庫的導出權限,能夠用root,也能夠用綁定了對應用戶名的數據庫)

16
MYSQL_USER=root
17

mysql密碼(對應MYSQL_USER)

18
MYSQL_PASS=x123
19

數據庫發送到的郵箱,如需使用請先安裝mail並去掉本行和下面相關注釋,CentOS6.4默認已經安裝,能夠直接用命令mail查看是否安裝。

20
MAIL_TO=a@12345679.cn
21

要備份的網站代碼目錄。

22
WEB_DATA=/home/wwwroot
23

要備份的數據庫mysqldump所在地址,如使用LNMP此項無需修改。

24
MYSQL_DATA=/usr/local/mysql/bin/mysqldump
25

要備份的配置文件所在地址,如使用LNMP此項無需修改。

26
PZWJ_DATA=/usr/local/nginx/conf
27

本地備份目錄地址,通常來講默認便可,也可填寫合法地址,請事先建立該目錄*(2014年2月12日 00:35:26添加)。若有掛載第二個磁盤,建議填寫磁盤剩餘量大的磁盤目錄地址。

28
BDBF=/home/backup
29

本地備份保留時間,必須是數字,如不保存填「0」,不能是負數。

30
bdblsjday=3
31

計劃任務:腳本定時執行時間,默認凌晨00:01分進行備份

32
JHRW="01 00 * * *"
33

配置內容結束。

值得注意的是,爲了您更編輯的使用這個腳本程序,我已經添加了crontab處理程序,只需在嚮導中(提示的地方)輸入便可。例如:」01 00 * * *」。

crontab的範例格式:
下面是c r o n t a b的格式:
分< >時< >日< >月< >星期< >要運行的命令
其中< >表示空格。
C r o n t a b文件的一個條目是從左邊讀起的,第一列是分,最後一列是要運行的命令,它位
於星期的後面。
在這些域中,能夠用橫槓-來表示一個時間範圍,例如你但願星期一至星期五運行某個做
業,那麼能夠在星期域使用1 – 5來表示。還能夠在這些域中使用逗號「,」,例如你但願星期一
和星期四運行某個做業,只須要使用1 , 4來表示。能夠用星號來表示連續的時間段。若是你
對某個表示時間的域沒有特別的限定,也應該在該域填入
。該文件的每個條目必須含有5
個時間域,並且每一個域之間要用空格分隔。該文件中全部的註釋行要在行首用#來表示。

crontab條目舉例

這裏有c r o n t a b文件條目的一些例子:

30 21* * * /apps/bin/cleanup.sh

上面的例子表示每晚的2 1 : 3 0運行/ a p p s / b i n目錄下的c l e a n u p . s h。

45 4 1,10,22 * * /apps/bin/backup.sh

上面的例子表示每個月一、1 0、2 2日的4 : 4 5運行/ a p p s / b i n目錄下的b a c k u p . s h。

10 1 * * 6,0 /bin/find -name 「core」 -exec rm {} ;

上面的例子表示每週6、週日的1 : 1 0運行一個f i n d命令。

0,30 18-23 * * * /apps/bin/dbcheck.sh

上面的例子表示在天天1 8 : 0 0至2 3 : 0 0之間每隔3 0分鐘運行/ a p p s / b i n目錄下的d b c h e c k . s h。

0 23 * * 6 /apps/bin/qtrend.sh

上面的例子表示每星期六的11 : 0 0 p m運行/ a p p s / b i n目錄下的q t r e n d . s h。

你可能已經注意到上面的例子中,每一個命令都給出了絕對路徑。當使用c r o n t a b運行s h e l l

腳本時,要由用戶來給出腳本的絕對路徑,設置相應的環境變量。記住,既然是用戶向c r o n

提交了這些做業,就要向c r o n提供所需的所有環境。不要假定c r o n知道所須要的特殊環境,它

其實並不知道。因此你要保證在s h e l l腳本中提供全部必要的路徑和環境變量,除了一些自動

設置的全局變量。

———————–
知識共享許可協議
本做品採用知識共享署名-非商業性使用-禁止演繹 2.5 中國大陸許可協議進行許可。

原創文章,您能夠在上述協議容許的範圍內轉載(轉載及表示您贊成上述協議),請註明: 文章來自王軼的博客,本文地址:原創自動備份Linux服務器數據到七牛雲存儲Shell腳本程序-用七牛自動備份VPS中的網站數據(http://wyr.me/314.html

相關文章
相關標籤/搜索