網站備份:一鍵備份腳本backup.sh

googledrive

做網站最重要的是什么?數據!數據,是網站之本,備份,是每一個站長都應該重視的事情。但同時,備份也是一件繁瑣和重復的事情。所以,這些事情,肯定能做到自動化的。
下面來介紹一下這個一鍵備份腳本 backup.sh。

總結一下 backup.sh 特點:
1、支持 MySQL/MariaDB 的數據庫全量備份;
2、支持指定目錄或文件的備份;
3、支持加密備份文件;
4、支持一鍵上傳至 Google Drive(需先安裝 gdrive 并配置)

2016 年 8 月 21 日更新:
1、新增:指定 MySQL/MariaDB 的數據庫名進行備份,可以同時指定多個;
2、新增:刪除指定天數本地舊的備份文件。

教程模式開啟:

1、下載該腳本并賦予執行權限

wget http://github.com/teddysun/across/raw/master/backup.sh
chmod +x backup.sh

2、修改并配置腳本
請使用 vim 或 nano 等工具來修改。

關于變量名的一些說明:
ENCRYPTFLG(加密FLG,true 為加密,false 為不加密,默認是加密)
BACKUPPASS(加密密碼,重要,務必要修改)
LOCALDIR(備份目錄,可自己指定)
TEMPDIR(備份目錄的臨時目錄,可自己指定)
LOGFILE(腳本運行產生的日志文件路徑)
MYSQL_ROOT_PASSWORD(MySQL 或 MariaDB 的 root 用戶密碼)
MYSQL_DATABASE_NAME(指定 MySQL 數據庫名,留空則是備份所有數據庫)
※ 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 天)

一些注意事項的說明:
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、配置 gdrive 命令
gdrive 是一個命令行工具,用于 Google Drive 的上傳下載等操作。官網網站:

當然,你可以用以下的命令來安裝 gdrive。

x86_64(64位):

wget -O /usr/bin/gdrive http://dl.teddysun.com/files/gdrive-linux-x64
chmod +x /usr/bin/gdrive

i386(32位):

wget -O /usr/bin/gdrive http://dl.teddysun.com/files/gdrive-linux-386
chmod +x /usr/bin/gdrive

然后,運行以下命令開始獲取授權:

gdrive list

根據提示用瀏覽器打開 gdrive 給出的 URL,點擊接受(Accept),然后將瀏覽器上顯示出來的字符串粘貼回命令行里,完成授權。

4、運行腳本開始備份

./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 自動備份,請看專門介紹cron備份的文章

本文轉自:

聲明: 博客僅為信息分享,絕非推薦,網站不參與交易,內容均僅代表個人觀點,僅供參考,讀者務必認真考慮后下手并自擔風險;一分錢一分貨仍是恒久不變之真理,任何IDC都有倒閉和跑路的可能,月付和備份是最佳選擇,彩票游戏有專門介紹網站備份的文章,數據是無價的,經常備份,養成好習慣;本文由( 彩票游戏 )原創編譯,轉載請保留鏈接并注明出處;其他問題,請加入彩票游戏QQ交流群 230888568 ,一起解決問題。

最后編輯于:2016/10/18作者:淘米哥

淘米哥是一個VPS愛好者,長期關注分享彩票游戏APP、VPS優惠碼、香港VPS、日本VPS、美國VPS、便宜VPS、便宜主機、獨立服務器及網站優化,歡迎訪問彩票游戏官網:http://hbyoufu.com,合作投稿反饋請加站長QQ:8696868 彩票游戏2000人QQ交流群:230888564 歡迎大家加入交流。