新版Linux/vps本地十五天循環(huán)備份和七牛遠(yuǎn)程備份腳本
編輯:狂族晨曦 來源:腳本編程,系統(tǒng)運(yùn)維,WordPress技巧 日期:2017-08-20 閱讀: 3,903 次 2 條評論 » 百度已收錄
最新在新建一個(gè)博客,新的博客是建在云服務(wù)器的,完全自主,不得不說感覺非常好,比起虛擬主機(jī)可操作性強(qiáng)太多了。因?yàn)榭刹僮餍詮?qiáng),所以想把該做的都做好,比如備份。
受張戈博客影響,看到了張戈的同步7天的那篇文章,想照著操作的時(shí)候發(fā)現(xiàn),七牛的qrsync工具竟已廢棄:

qrsync已廢棄
看這簡介,推薦使用qshell命令行工具,先森就干脆研究下使用新的工具來同步。有段時(shí)間沒和七牛云儲存打交道了,變化還是挺大的。為七牛的推陳出新點(diǎn)個(gè)贊。
一、數(shù)據(jù)庫、網(wǎng)站本地備份腳本
在服務(wù)器上編輯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 #本地備份保留天數(shù)
# 數(shù)據(jù)庫信息
user=root
password=******
host=127.0.0.1
port=3306
databases=wordpress
# 本地網(wǎng)站根目錄
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}] 數(shù)據(jù)庫 ${data} 備份成功!!" >> ${backupdir}/mysqllog.log
else
#備份失敗則進(jìn)行以下操作
echo "[${date}] 數(shù)據(jù)庫 ${data} 備份失敗!!" >> ${backupdir}/mysqllog.log
fi
# 備份網(wǎng)站
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’,名稱可以隨意自定義。保存后需要增加可執(zhí)行權(quán)限:
chmod +x liuxxbak.sh
使用說明:
將以上內(nèi)容變量按需修改:backupdir=本地備份絕對路徑
day=本地備份保留天數(shù)
user=數(shù)據(jù)庫用戶名(建議使用root用戶,出錯(cuò)可能性小)
password=數(shù)據(jù)庫密碼
host=數(shù)據(jù)庫IP或域名
port=數(shù)據(jù)庫端口
databases=數(shù)據(jù)庫名稱
backhome=本地網(wǎng)站根目錄
腳本執(zhí)行方式:
./liuxxbak.sh 或者 /web/data/liuxxbak.sh # 絕對路徑執(zhí)行
如此可以檢查一下是否能夠成功備份。
二、遠(yuǎn)程備份到七牛云儲存
1.命令。
首先下載qshell命令行工具,下載頁面:根據(jù)服務(wù)器類型選擇下載
linux 64位的服務(wù)器可以直接在服務(wù)器上這樣下載并增加可執(zhí)行權(quán)限:
wget -O qshell http://devtools.qiniu.com/2.1.3/qshell-linux-x64 && chmod +x qshell
可以將qshell命令放入自定義目錄。或直接放至/usr/bin/路徑下,這樣就可以任何地方直接輸入命令了。
2.鑒權(quán)。
有了命令之后,我們需要七牛的鑒權(quán),否則沒法使用接下來的命令。
需要鑒權(quán)的命令都需要依賴七牛賬號下的 AccessKey 和 SecretKey。所以這類命令運(yùn)行之前,需要使用 account 命令來設(shè)置下 AccessKey ,SecretKey 。
鑒權(quán)的方式很簡單,首先進(jìn)入七牛的個(gè)人中心->密鑰管理中,找到AccessKey 和 SecretKey。
然后在服務(wù)器中運(yùn)行一下命令:
/web/data/qshell account ak sk
執(zhí)行之后,用戶的所有信息寫入到磁盤$HOME_DIR/.qshell下面。如:root用戶執(zhí)行后,信息會保存在/root/.qshell/account.json文件中。如果你修改了密鑰,只需要重新執(zhí)行以上命令即可,配置信息將被覆蓋。
3.同步。
終于到了這一步。qshell命令的命令有很多,同步需要用到的命令是qupload。
qupload是用來將本地目錄中的文件同步到七牛空間中的命令。
命令格式:
qshell qupload [<ThreadCount>] <LocalUploadConfig>
ThreadCount:并發(fā)上傳的協(xié)程數(shù)量,默認(rèn)為1,即文件一個(gè)個(gè)上傳,對于大量小文件來說,可以通過提高該參數(shù)值來提升同步速度。LocalUploadConfig:數(shù)據(jù)同步的配置文件,該配置文件里面包含了一些諸如本地同步目錄,目標(biāo)空間名稱等信息。
ThreadCount是可以忽略的參數(shù),默認(rèn)一個(gè)文件一個(gè)文件的上傳,因?yàn)槭且獋浞輸?shù)據(jù)庫和本地網(wǎng)站文件,文件較少且大,顧保持默認(rèn)就好。
LocalUploadConfig為配置文件,配置文件中可帶的參數(shù)共有21個(gè),先森選用了其中的7個(gè)。詳細(xì)的配置介紹請看這里。
先森選用的參數(shù)如下,將以下內(nèi)容保存到文件‘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
}
解釋,*為必須項(xiàng):
"src_dir":"/web/data/liuxx_bak", # 本地備份路徑*"bucket":"liuxx-backup", #同步數(shù)據(jù)的目標(biāo)空間名稱,可以為公開空間或私有空間*
"ignore_dir":true, #遠(yuǎn)程同步到七牛時(shí),忽略本地路徑
"overwrite":true, #覆蓋同名文件
"check_exists":true, #上傳前檢查是否有同名文件
"check_hash":true, #在check_exists設(shè)置為true的情況下生效,是否檢查本地文件hash和空間文件hash一致
"rescan_local":true, #檢測本地新增文件并同步
最后,遠(yuǎn)程同步到七牛云儲存的命令為:
/web/data/qshell qupload /web/data/localupload.cnf
可以執(zhí)行一下上面的命令,檢查是否能夠成功同步。
先森同步到七牛云的效果:

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

刪除15天前的文件
當(dāng)然,如果七牛云存儲的剩余空間很足的話,可以保留更多天,這樣可供回退的版本就更多了。
總結(jié)
無論是用虛擬主機(jī),還是使用云服務(wù)器,有一套備份的機(jī)制是很重要的。如果像先森一樣,主站使用的是虛擬主機(jī),也有另外的云服務(wù)器的話,這套備份方案改改,也可以把自己虛擬主機(jī)的數(shù)據(jù)庫一起備份起來嘛。
歷史上的今天:
轉(zhuǎn)載請注明出處來自http://www.cnidcc.cn/linux_qiniu_backup.html

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