bat腳本文件實(shí)現(xiàn)Windows服務(wù)器備份mssql數(shù)據(jù)文件自動(dòng)上傳至阿里云OSS的方法
[重要通告]如您遇疑難雜癥,本站支持知識(shí)付費(fèi)業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時(shí)間哦!
前幾天寫過一篇關(guān)于熊二哥哥備份sql數(shù)據(jù)庫(kù)到百度云的文章,具體請(qǐng)看?利用免費(fèi)版SQL數(shù)據(jù)庫(kù)備份恢復(fù)助手直接備份數(shù)據(jù)到百度云的方法 這不又有客戶想備份到oss,有些軟件里沒有這個(gè)oss配置,很是尷尬,那也得處理一下不是;
詳細(xì)的闡述一下相關(guān)問題:
客戶需求:實(shí)現(xiàn)將Windows服務(wù)器上的SQLServer數(shù)據(jù)庫(kù)文件上傳至阿里云OSS內(nèi),實(shí)現(xiàn)數(shù)據(jù)長(zhǎng)期備份。
需求難點(diǎn):網(wǎng)絡(luò)波動(dòng)對(duì)上次數(shù)據(jù)完整性的影響,如何在前期規(guī)劃好后期新增的數(shù)據(jù)文件的歸檔分組與優(yōu)化管理,如何確保數(shù)據(jù)文件上傳的完整性檢查。
解決方法:
1.在Windows下編寫bat批量執(zhí)行腳本配合定時(shí)任務(wù)時(shí)間數(shù)據(jù)傳輸。
2.選取osscmd工具,支持G級(jí)數(shù)據(jù)的切片上次與解決網(wǎng)絡(luò)波動(dòng)時(shí)候的斷點(diǎn)續(xù)傳。
3.打包壓縮數(shù)據(jù)文件,減少傳流量帶寬,上傳完成后刪除壓縮包(腳本內(nèi)實(shí)現(xiàn))。
4.通過在Linux服務(wù)器同樣使用osscmd的list方法來抓取oss上的文件信息,以便比對(duì)與告警。
一、備份服務(wù)器端部署
1.安裝python,版本在2.5-2.7,建議2.7(已安裝忽略)
2.在c盤新建OSS目錄,并在次目錄下解壓osscmd文件
3.安裝rar壓縮文件(已安裝請(qǐng)直接忽略)
4.修改oss.bat腳本文件
OSS.bat文件內(nèi)容如下:
@echo off rem mail:xuel@anchnet.com set MON=%date:~0,4%%date:~5,2% #定義創(chuàng)建的時(shí)間目錄 set DATE=%date:~0,4%%date:~5,2%%date:~8,2% #定義時(shí)間 set TIME=%date%-%time% set LOGDIR=C:\ #目錄 set DIR=D:\ #數(shù)據(jù)文件的盤符 echo "%TIME% 腳本開始執(zhí)行完畢!">>%LOGDIR%\OSS\log\backup-oss.log #輸出日志 set DIRNAME=SAP_BACKUP #數(shù)據(jù)文件的目錄 set NAME=老梁科技 #客戶名稱 set PY=C:\Python27\python.exe #python可執(zhí)行程序路徑 set OSSCMD=C:\OSS\osscmd #osscmd路徑 set RAR="C:\Program Files\WinRAR\WinRAR.exe" #rar路徑 set BUCKET=oss://dacexinxi/ #oss上bucket名稱 set ID=LTAI***aOIxxxxxxxx #access ID set KEY=40u5sORa9JAVnlWwhekBJxxxxxxxxxx #access key set HOST=oss-cn-beijing.aliyuncs.com #oss所在區(qū),內(nèi)網(wǎng)可以根據(jù)具體來寫 set FILE=Data1 #壓縮的數(shù)據(jù)文件目錄名稱 %RAR% a -k -r -s -m1 %DIR%%DATE%-%FILE%.rar %DIR%\%DIRNAME%\%FILE% #壓縮文件 set TIME= set TIME=%date%-%time% echo "%TIME% %FILE% 壓縮文件執(zhí)行完畢!">>%LOGDIR%\OSS\log\backup-oss.log %PY% %OSSCMD% mkdir %BUCKET%%NAME%/%MON%/%DATE%-%DIRNAME% --id=%ID% --key=%KEY% --host=%HOST% #創(chuàng)建oss目錄 %PY% %OSSCMD% mp %DIR%%DATE%-%FILE%.rar %BUCKET%%NAME%/%MON%/%DATE%-%DIRNAME%/%DATE%-%FILE%.rar --id=%ID% --key=%KEY% --host=%HOST% --thread_num=30 #使用multiupload上次文件 if errorlevel 1 ( %PY% %OSSCMD% mp %DIR%%DATE%-%FILE%.rar %BUCKET%%NAME%/%MON%/%DATE%-%DIRNAME%/%DATE%-%FILE%.rar --id=%ID% --key=%KEY% --host=%HOST% --thread_num=30 ) else ( set TIME= set TIME=%date%-%time% echo "%TIME% %FILE% 上傳文件執(zhí)行完畢!">>%LOGDIR%\OSS\log\backup-oss.log ) del %DIR%%DATE%-%FILE%.rar #刪除壓縮數(shù)據(jù)文件 set TIME= set TIME=%date%-%time% echo "%TIME% %FILE% 刪除文件執(zhí)行完畢!">>%LOGDIR%\OSS\log\backup-oss.log set FILE= set FILE=Data2 %RAR% a -k -r -s -m1 %DIR%%DATE%-%FILE%.rar %DIR%\%DIRNAME%\%FILE% set TIME= set TIME=%date%-%time% echo "%TIME% %FILE% 壓縮文件執(zhí)行完畢!">>%LOGDIR%\OSS\log\backup-oss.log %PY% %OSSCMD% mkdir %BUCKET%%NAME%/%MON%/%DATE%-%DIRNAME% --id=%ID% --key=%KEY% --host=%HOST% %PY% %OSSCMD% mp %DIR%%DATE%-%FILE%.rar %BUCKET%%NAME%/%MON%/%DATE%-%DIRNAME%/%DATE%-%FILE%.rar --id=%ID% --key=%KEY% --host=%HOST% set TIME= set TIME=%date%-%time% echo "%TIME% %FILE% 上傳文件執(zhí)行完畢!">>%LOGDIR%\OSS\log\backup-oss.log del %DIR%%DATE%-%FILE%.rar set TIME= set TIME=%date%-%time% echo "%TIME% %FILE% 刪除文件執(zhí)行完畢!">>%LOGDIR%\OSS\log\backup-oss.log echo "-----------%TIME% 腳本執(zhí)行完畢!---------">>%LOGDIR%\OSS\log\backup-oss.log
5.Window創(chuàng)建定時(shí)任務(wù)
創(chuàng)建定時(shí)任務(wù)
“程序”/“附件”/“系統(tǒng)工具”/“任務(wù)計(jì)劃程序”命令
點(diǎn)擊“創(chuàng)建任務(wù)”后如圖所示:填寫好相應(yīng)的名稱和勾選好必要的條件
選擇“觸發(fā)器”選項(xiàng),點(diǎn)擊“新建”,創(chuàng)建任務(wù)執(zhí)行時(shí)間,“重復(fù)任務(wù)間隔”這個(gè)選擇后,后面有時(shí)間選擇,是每小時(shí),還是每分,可自己選擇后再修改時(shí)間,再確定。
再來配置需要執(zhí)行的“操作”,就是選擇所寫的程序或是BAT文件,這里很重要的配置是選擇BAT文件后,在“起始于(可選)”這里一定要填寫相應(yīng)執(zhí)行程序或是BAT文件的所在目錄,要不然是執(zhí)行不成功的。
二、監(jiān)控OSS上傳數(shù)據(jù)
1.下載osscmd工具并放置/oss目錄下
oss_check.sh檢測(cè)腳本如下:
#!/bin/bash DATE=`date +%Y%m` OSSCMD=/oss/osscmd NAME=上海xx公司 PYCMD=/usr/bin/python BUCKET=oss://dacexinxi/ TIME=`date +%Y%m%d` DATANAME="${TIME}-SAP_BACKUP" ID=LTAI***aOIHyxxx KEY=40u5sORa9JAVnlWwhekBJzxxxxx HOST=oss-cn-shenzhen.aliyuncs.com WEIXIN=/oss/GFweixin.sh MAILTIME=`date +%F' '%H:%M` if [ -d /oss/log ];then mkdir -p /oss/log/${TIME} fi $PYCMD $OSSCMD ls ${BUCKET}${NAME}/${DATE}/${DATANAME} --id=$ID --key=$KEY --host=$HOST>/oss/log/${TIME}/oss-check-${TIME}.log NUM=`$PYCMD $OSSCMD ls ${BUCKET}${NAME}/${DATE}/${DATANAME} --id=$ID --key=$KEY --host=$HOST |grep rar|wc -l` echo $NUM if [ "${NUM}" != "4" ];then /bin/bash /oss/GFweixin.sh xuel dace "無憂合租-oss_check is fail! TIME:${MAILTIME}" else /bin/bash /oss/GFweixin.sh xuel dace "無憂合租-oss_check is ok! TIME:${MAILTIME}" fi ls /oss/log/${TIME}/oss-check-${TIME}.log if [ "$?" != "0" ];then /bin/bash /oss/GFweixin.sh xuel dace "5uhezu-oss_check is fail! TIME:${MAILTIME}" else /bin/mail -r service@5uhezu.com -s "5uhezu-oss_check" serviceadmin@51idc.com </oss/log/${TIME}/oss-check-${TIME}.log fi
五、結(jié)果展示
1.上傳日志查看
1.阿里云oss文件查看
可以在oss上是先以客戶名稱命名的一個(gè)目錄,其次是一年月來歸檔數(shù)據(jù)文件,其次是數(shù)據(jù)上傳備份目錄,最終是打包好的數(shù)據(jù)壓縮文件,如何后期需要定時(shí)刪除,則只需在腳本內(nèi)寫入根據(jù)時(shí)間來刪除即可,極大增強(qiáng)了擴(kuò)展性,以日期歸檔方便后續(xù)管理操作。
3.郵件日志
4.微信通知
問題未解決?付費(fèi)解決問題加Q或微信 2589053300 (即Q號(hào)又微信號(hào))右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當(dāng)無敷衍,落筆求簡(jiǎn)潔。 以所舍,求所獲;有所依,方所成!