新版Linux/vps本地十五天循環備份和七牛遠程備份腳本
編輯:狂族晨曦 來源:腳本編程,系統運維,WordPress技巧 日期:2017-08-20 閱讀: 3,794 次 2 條評論 » 百度已收錄
最新在新建一個博客,新的博客是建在云服務器的,完全自主,不得不說感覺非常好,比起虛擬主機可操作性強太多了。因為可操作性強,所以想把該做的都做好,比如備份。
受張戈博客影響,看到了張戈的同步7天的那篇文章,想照著操作的時候發現,七牛的qrsync工具竟已廢棄:

qrsync已廢棄
看這簡介,推薦使用qshell命令行工具,先森就干脆研究下使用新的工具來同步。有段時間沒和七牛云儲存打交道了,變化還是挺大的。為七牛的推陳出新點個贊。
一、數據庫、網站本地備份腳本
在服務器上編輯shell腳本,腳本代碼如下:
#!/bin/bash
# Name:liuxxbak.sh
# This is a ShellScript For Auto Backup and Delete old Backup
# Date:2017-8-19
source /etc/profile
backupdir=/web/data/liuxx_bak # 本地備份路徑
time=` date +%Y%m%d `
date=` date +"%Y-%m-%d %H:%M:%S" `
day=15 #本地備份保留天數
# 數據庫信息
user=root
password=******
host=127.0.0.1
port=3306
databases=wordpress
# 本地網站根目錄
backhome=/web/data/html/
if [ ! -d $backupdir ]; then
mkdir $backupdir
fi
mysqldump -h $host -P $post -u $user -p$password ${data} | gzip > $backupdir/${data}_$time.sql.gz
if [ "$?" == 0 ];then
echo "[${date}] 數據庫 ${data} 備份成功!!" >> ${backupdir}/mysqllog.log
else
#備份失敗則進行以下操作
echo "[${date}] 數據庫 ${data} 備份失敗!!" >> ${backupdir}/mysqllog.log
fi
# 備份網站
tar -zcvf $backupdir/liuxx_${time}.tar.gz $backhome > /dev/null 2>&1
# 刪除同步
find $backupdir -name "*.gz" -type f -mtime +${day} -exec rm {} \; > /dev/null 2>&1
先森將以上代碼保存為‘liuxxbak.sh’,名稱可以隨意自定義。保存后需要增加可執行權限:
chmod +x liuxxbak.sh
使用說明:
將以上內容變量按需修改:backupdir=本地備份絕對路徑
day=本地備份保留天數
user=數據庫用戶名(建議使用root用戶,出錯可能性小)
password=數據庫密碼
host=數據庫IP或域名
port=數據庫端口
databases=數據庫名稱
backhome=本地網站根目錄
腳本執行方式:
./liuxxbak.sh 或者 /web/data/liuxxbak.sh # 絕對路徑執行
如此可以檢查一下是否能夠成功備份。
二、遠程備份到七牛云儲存
1.命令。
首先下載qshell命令行工具,下載頁面:根據服務器類型選擇下載
linux 64位的服務器可以直接在服務器上這樣下載并增加可執行權限:
wget -O qshell http://devtools.qiniu.com/2.1.3/qshell-linux-x64 && chmod +x qshell
可以將qshell命令放入自定義目錄。或直接放至/usr/bin/路徑下,這樣就可以任何地方直接輸入命令了。
2.鑒權。
有了命令之后,我們需要七牛的鑒權,否則沒法使用接下來的命令。
需要鑒權的命令都需要依賴七牛賬號下的 AccessKey 和 SecretKey。所以這類命令運行之前,需要使用 account 命令來設置下 AccessKey ,SecretKey 。
鑒權的方式很簡單,首先進入七牛的個人中心->密鑰管理中,找到AccessKey 和 SecretKey。
然后在服務器中運行一下命令:
/web/data/qshell account ak sk
執行之后,用戶的所有信息寫入到磁盤$HOME_DIR/.qshell下面。如:root用戶執行后,信息會保存在/root/.qshell/account.json文件中。如果你修改了密鑰,只需要重新執行以上命令即可,配置信息將被覆蓋。
3.同步。
終于到了這一步。qshell命令的命令有很多,同步需要用到的命令是qupload。
qupload是用來將本地目錄中的文件同步到七牛空間中的命令。
命令格式:
qshell qupload [<ThreadCount>] <LocalUploadConfig>
ThreadCount:并發上傳的協程數量,默認為1,即文件一個個上傳,對于大量小文件來說,可以通過提高該參數值來提升同步速度。LocalUploadConfig:數據同步的配置文件,該配置文件里面包含了一些諸如本地同步目錄,目標空間名稱等信息。
ThreadCount是可以忽略的參數,默認一個文件一個文件的上傳,因為是要備份數據庫和本地網站文件,文件較少且大,顧保持默認就好。
LocalUploadConfig為配置文件,配置文件中可帶的參數共有21個,先森選用了其中的7個。詳細的配置介紹請看這里。
先森選用的參數如下,將以下內容保存到文件‘localupload.cnf’:
{
"src_dir" : "/web/data/liuxx_bak",
"bucket" : "liuxx-backup",
"ignore_dir" : true,
"overwrite" : true,
"check_exists" : true,
"check_hash" : true,
"rescan_local" : true
}
解釋,*為必須項:
"src_dir":"/web/data/liuxx_bak", # 本地備份路徑*"bucket":"liuxx-backup", #同步數據的目標空間名稱,可以為公開空間或私有空間*
"ignore_dir":true, #遠程同步到七牛時,忽略本地路徑
"overwrite":true, #覆蓋同名文件
"check_exists":true, #上傳前檢查是否有同名文件
"check_hash":true, #在check_exists設置為true的情況下生效,是否檢查本地文件hash和空間文件hash一致
"rescan_local":true, #檢測本地新增文件并同步
最后,遠程同步到七牛云儲存的命令為:
/web/data/qshell qupload /web/data/localupload.cnf
可以執行一下上面的命令,檢查是否能夠成功同步。
先森同步到七牛云的效果:

同步效果
三、定時備份同步
準備工作已經完畢了,現在所需的就是每天的自動備份及遠程備份了。
執行crontab -e添加以下內容:
00 02 * * * /web/data/liuxxbak.sh 30 02 * * * /web/data/qshell qupload /web/data/localupload.cnf >/dev/null 2>&1
凌晨兩點執行本地備份,凌晨兩點半執行遠程備份。
當然,你也可以將qshell命令加到liuxxbak.sh腳本的最后,那么只用添加第一條計劃任務就可以了。
四、七牛十五天循環備份
七牛云儲存免費的存儲空間大小是10G,如果你的七牛云存儲空間有點緊急的話,可以繼續本操作。
這時候,點擊‘生命周期’,添加規則,我們可以設定刪除15天前的文件。先森設定的規則如下:

刪除15天前的文件
當然,如果七牛云存儲的剩余空間很足的話,可以保留更多天,這樣可供回退的版本就更多了。
總結
無論是用虛擬主機,還是使用云服務器,有一套備份的機制是很重要的。如果像先森一樣,主站使用的是虛擬主機,也有另外的云服務器的話,這套備份方案改改,也可以把自己虛擬主機的數據庫一起備份起來嘛。
歷史上的今天:
- 2015: 福利~今天七夕,移動820M流量免費領取(0)
轉載請注明出處來自http://www.cnidcc.cn/linux_qiniu_backup.html

川公網安備 51011202000104號
博客真是個好地方!
回去慢慢的看,哈哈,感謝博主的分享