bat腳本文件實現(xiàn)Windows服務(wù)器備份mssql數(shù)據(jù)文件自動上傳至阿里云OSS的方法
[重要通告]如您遇疑難雜癥,本站支持知識付費業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時間哦!
前幾天寫過一篇關(guān)于熊二哥哥備份sql數(shù)據(jù)庫到百度云的文章,具體請看?利用免費版SQL數(shù)據(jù)庫備份恢復助手直接備份數(shù)據(jù)到百度云的方法 這不又有客戶想備份到oss,有些軟件里沒有這個oss配置,很是尷尬,那也得處理一下不是;
詳細的闡述一下相關(guān)問題:
客戶需求:實現(xiàn)將Windows服務(wù)器上的SQLServer數(shù)據(jù)庫文件上傳至阿里云OSS內(nèi),實現(xiàn)數(shù)據(jù)長期備份。
需求難點:網(wǎng)絡(luò)波動對上次數(shù)據(jù)完整性的影響,如何在前期規(guī)劃好后期新增的數(shù)據(jù)文件的歸檔分組與優(yōu)化管理,如何確保數(shù)據(jù)文件上傳的完整性檢查。
解決方法:
1.在Windows下編寫bat批量執(zhí)行腳本配合定時任務(wù)時間數(shù)據(jù)傳輸。
2.選取osscmd工具,支持G級數(shù)據(jù)的切片上次與解決網(wǎng)絡(luò)波動時候的斷點續(xù)傳。
3.打包壓縮數(shù)據(jù)文件,減少傳流量帶寬,上傳完成后刪除壓縮包(腳本內(nèi)實現(xiàn))。
4.通過在Linux服務(wù)器同樣使用osscmd的list方法來抓取oss上的文件信息,以便比對與告警。
一、備份服務(wù)器端部署
1.安裝python,版本在2.5-2.7,建議2.7(已安裝忽略)
2.在c盤新建OSS目錄,并在次目錄下解壓osscmd文件
3.安裝rar壓縮文件(已安裝請直接忽略)
4.修改oss.bat腳本文件
OSS.bat文件內(nèi)容如下:
@echo off rem mail:xuel@anchnet.com set MON=%date:~0,4%%date:~5,2% #定義創(chuàng)建的時間目錄 set DATE=%date:~0,4%%date:~5,2%%date:~8,2% #定義時間 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)建定時任務(wù)
創(chuàng)建定時任務(wù)
“程序”/“附件”/“系統(tǒng)工具”/“任務(wù)計劃程序”命令
點擊“創(chuàng)建任務(wù)”后如圖所示:填寫好相應(yīng)的名稱和勾選好必要的條件
選擇“觸發(fā)器”選項,點擊“新建”,創(chuàng)建任務(wù)執(zhí)行時間,“重復任務(wù)間隔”這個選擇后,后面有時間選擇,是每小時,還是每分,可自己選擇后再修改時間,再確定。
再來配置需要執(zhí)行的“操作”,就是選擇所寫的程序或是BAT文件,這里很重要的配置是選擇BAT文件后,在“起始于(可選)”這里一定要填寫相應(yīng)執(zhí)行程序或是BAT文件的所在目錄,要不然是執(zhí)行不成功的。
二、監(jiān)控OSS上傳數(shù)據(jù)
1.下載osscmd工具并放置/oss目錄下
oss_check.sh檢測腳本如下:
#!/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上是先以客戶名稱命名的一個目錄,其次是一年月來歸檔數(shù)據(jù)文件,其次是數(shù)據(jù)上傳備份目錄,最終是打包好的數(shù)據(jù)壓縮文件,如何后期需要定時刪除,則只需在腳本內(nèi)寫入根據(jù)時間來刪除即可,極大增強了擴展性,以日期歸檔方便后續(xù)管理操作。
3.郵件日志
4.微信通知
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!