標籤:

Linux自動備份大容量網站數據到七牛雲存儲:秋水逸冰backup.sh腳本+七牛qshell工具

Linux自動備份大容量網站數據到七牛雲存儲:秋水逸冰backup.sh腳本+七牛qshell工具

來自專欄澱粉月刊5 人贊了文章

關於站點備份的二三事相信各位站長也沒少折騰過,目前市面上普遍採用的方式大體有兩種,一種是用多備份這樣的第三方服務,另一種則是利用腳本定時打包網站數據及資料庫後上傳到Dropbox、Google Drive之類的雲端硬碟。兩種方案都可以完全做到免費,但後者由於存儲在網盤,存在容量限制(百度雲雖然容量大,但拿來當備份也比較少見,因為我們購買的VPS一般都是國外主機,沒有速度優勢。另外也存在上傳下載的限速問題)。今天居正針對第二種方案,給出兩套服務儘可能完美的解決站點備份的問題。它們的大名想必各位站長也不會陌生:秋水逸冰backup.sh腳本七牛qshell工具

更多有關網站技術的教程可參考:

「保住命根子」 VPS網站數據備份教程(1):backup.sh

由SQL注入(或資料庫許可權)滲透WordPress站點的一些手法

Linux伺服器磁碟掛載:讓空餘的大硬碟VPS不再吃灰

一、七牛服務的配置部分

①創建空間

註冊:portal.qiniu.com/signup? (我的aff,如果還沒有註冊並且不介意的話可以點一下啦

登錄:https://portal.qiniu.com

由於我們只用於備份,所以只要看存儲空間的價格就行了。七牛提供10G的免費空間,這個大小對於一般站點的備份是足夠的。

假如我們的網站數據文件是500MB/個,天天備份,那麼達到10G的大小則是20天,我們可以在空間裡面設置自動刪除20天之前的備份文件,這樣就總也不會超出10G。

按照以下步驟創建一個用於備份的空間:

1.點擊左側「對象存儲」。

2.點擊「新建存儲空間」。

3.在「存儲空間名稱」中輸入想創建為備份用空間(bucket)的名稱。這個名稱請記下來,我們之後有用。

4.在「存儲區域」裡面選擇一個地區。一般離你的VPS機房越近越好,美國的機器建議選北美速度會比較快。但這裡由於華南減價居正就選華南了,反正用於備份對速度速度要求也沒那麼高。

5.在「訪問控制」裡面選擇「私有空間」。畢竟我們不想讓自己的備份文件被別人下載到。

6.點擊「確定創建」。

如下:

在這裡我們的空間就創建好了。七牛還會提醒你進行綁定域名等後續操作,不過由於我們的空間只是用來放備份文件的,故不需要設置這些CDN相關的東西。

②配置qshell

七牛提供一個支持Linux、macOS、Windows平台的開發者工具,通過調用API在VPS上操作七牛空間。

在這裡下載對應版本/系統位數的qshell:developer.qiniu.com/kod

附:查看Linux系統位數的方法:

1. ls / #如果有lib64或這個目錄,那操作系統就是64位的

2. getconfig LONG_BIT 若輸出32即為32位系統,64為64位系統

32位的系統中int類型和long類型一般都是4位元組,

64位的系統中int類型還是4位元組的,但是long已變成了8位元組。

inux系統中可 用」getconf WORD_BIT」和」getconf LONG_BIT」獲得word和long的位數。

64位系統中應該分別得到32和64。

3. uname -a中若為X86示意為64位系統,i386等位32位系統

refer to:blog.51cto.com/wbwk2005

以64位的系統為例:

wget devtools.qiniu.com/qshe #利用wget下載qshell工具

unzip qshell-v2.1.8.zip #解壓

cp qshell-linux-x64 /usr/bin/qshell #將文件複製到bin目錄下,這樣在任何地方都能執行qshell命令

chmod +x /usr/bin/qshell #設置可執行許可權

然後在七牛後台取得自己密鑰的AccessKey和SecretKey,保存下載備用:

最後在VPS上執行此命令授權:

qshell account 你的AccessKey 你的SecretKey

#例如居正的是:

qshell account _Sb-mV19gxrZ2E5mh2ERUHjx9yZ1O-5kU5Jo0lB4 xxxx2ERUHjx9yZ1O-5xxx

二、配置backup.sh

秋水逸冰的backup.sh是目前市面上最好用的Linux一鍵備份腳本之一。

由於backup.sh默認只支持gdrive和ftp備份,居正在這裡進行了相應的修改使其能夠備份文件到七牛(這裡採用了qshell rput系列命令,參考),並且去除了備份到gdrive的功能)。


安裝backup.sh腳本(文字修改自秋水逸冰官網):

1、下載該腳本並賦予執行許可權

wget --no-check-certificate https://gitee.com/juzheng/source/raw/master/backup_qiniu.sh -O backup.shchmod +x backup.sh

2、修改並配置腳本

請使用 vim 或 nano 等工具來修改。

關於變數名的一些說明:

ENCRYPTFLG (加密FLG,true 為加密,false 為不加密,默認是加密)

BACKUPPASS (加密密碼,重要,務必要修改)

LOCALDIR (備份目錄,可自己指定)

TEMPDIR (備份目錄的臨時目錄,可自己指定)

LOGFILE (腳本運行產生的日誌文件路徑)

BUCKET (七牛的容器名字,剛才創建的時候填的)

MYSQL_ROOT_PASSWORD (MySQL/MariaDB/Percona 的 root 用戶密碼)

MYSQL_DATABASE_NAME (指定 MySQL/MariaDB/Percona 的資料庫名,留空則是備份所有資料庫)

※ MYSQL_DATABASE_NAME 是一個數組變數,可以指定多個。舉例如下:

MYSQL_DATABASE_NAME[0]="phpmyadmin"MYSQL_DATABASE_NAME[1]="test"

BACKUP (需要備份的指定目錄或文件列表,留空就是不備份目錄或文件)

※ BACKUP 是一個數組變數,可以指定多個。舉例如下:

BACKUP[0]="/data/www/default/test.tgz"BACKUP[1]="/data/www/default/test/"BACKUP[2]="/data/www/default/test2/"

LOCALAGEDAILIES (指定多少天之後刪除本地舊的備份文件,默認為 7 天)

DELETE_REMOTE_FILE_FLG (刪除FTP 上的備份文件 FLG,true 為刪除,false 為不刪除)

FTP_FLG (上傳文件至 FTP 的 FLG,true 為上傳,false 為不上傳)

FTP_HOST (連接的 FTP 域名或 IP 地址)

FTP_USER (連接的 FTP 的用戶名)

FTP_PASS (連接的 FTP 的用戶的密碼)

FTP_DIR (連接的 FTP 的遠程目錄,比如: public_html)

一些注意事項的說明:

1)腳本需要用 root 用戶來執行;

2)腳本需要用到 openssl 來加密,請事先安裝好;

3)腳本默認備份所有的資料庫(全量備份);

4)備份文件的解密命令如下:

openssl enc -aes256 -in [ENCRYPTED BACKUP] -out decrypted_backup.tgz -pass pass:[BACKUPPASS] -d -md sha1

5)備份文件解密後,解壓命令如下:

tar -zxPf [DECRYPTION BACKUP FILE]

解釋一下參數 -P:

tar 壓縮文件默認都是相對路徑的。加個 -P 是為了 tar 能以絕對路徑壓縮文件。因此,解壓的時候也要帶個 -P 參數。

3、運行腳本開始備份

./backup.sh

腳本默認會顯示備份進度,並在最後統計出所需時間。

如果你想將腳本加入到 cron 自動運行的話,就不需要前台顯示備份進度,只寫日誌就可以了。

這個時候你需要稍微改一下腳本中的 log 函數。

log() { echo "$(date "+%Y-%m-%d %H:%M:%S")" "$1" echo -e "$(date "+%Y-%m-%d %H:%M:%S")" "$1" >> ${LOGFILE}}

改為:

log() { echo -e "$(date "+%Y-%m-%d %H:%M:%S")" "$1" >> ${LOGFILE}}

關於如何使用 cron 自動備份,這裡就不再贅述了 以 CentOS 6 來舉例說明。

修改文件 /etc/crontab,內容如下:

SHELL=/bin/bashPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binMAILTO=rootHOME=/root# For details see man 4 crontabs# Example of job definition:# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed30 1 * * * root bash /root/backup.sh

以上表示,每天凌晨 1 點 30 分,root 用戶執行一次 backup.sh 腳本。

注意:

一定要修改其中的 PATH 和 HOME 變數的值。

尤其是 HOME 變數,qshell 命令能否正確執行,是要依賴於其配置文件的。默認用 root 配置的話,其配置文件夾應該是 /root/.qshell/ ,所以要更改 HOME 的值。


可以在七牛空間的內容管理裡面看到已經備份的文件,同時可以下載:

三、七牛空間:備份文件生命周期設置

最後我們需要在空間裡面設置自動刪除20天之前的備份文件,使容器總大小不會超出10G的免費額度。

在生命周期裡面點擊新建規則:

輸入規則名字。然後在下面把「刪除文件」打開,設置刪除時間為20天:


OK,以上就是給大家帶來的「Linux自動備份大容量網站數據到七牛雲存儲:秋水逸冰backup.sh腳本+七牛qshell工具」教程。如果你有任何疑問請在下面評論區提出!


本文首發於澱粉月刊,作者 居正。

Linux自動備份大容量網站數據到七牛雲存儲:秋水逸冰backup.sh腳本+七牛qshell工具 - 澱粉月刊?

dfkan.com


推薦閱讀:

體驗AWS的VPS
Hexo建站使用Git部署到VPS
VPS哪個控制面板好用?
Vultr 日本2.5刀補貨!
【VULTR小白篇】手把手教你註冊賬號及開通VPS實例

TAG:Linux | 腳本 | VPS |