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
04
QINIUMC=x
05
06
QINIUJB=/root/bfjb
07
08
QINIUAccessKey=abcd1234
09
10
QINIUSecretKey=abcd1234
11
12
BFpassword=x123
13
14
MYSQL_SJNAME=x123
15
16
MYSQL_USER=root
17
18
MYSQL_PASS=x123
19
20
MAIL_TO=a@12345679.cn
21
22
WEB_DATA=/home/wwwroot
23
24
MYSQL_DATA=/usr/local/mysql/bin/mysqldump
25
26
PZWJ_DATA=/usr/local/nginx/conf
27
28
BDBF=/home/backup
29
30
bdblsjday=3
31
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)