Windows服務器文件自動上傳至阿里雲OSS

Windows服務器數據文件自動上傳至阿里雲OSSpython

背景:數據庫

客戶需求:實現將Windows服務器上的SQLServer數據庫文件上傳至阿里雲OSS內,實現數據長期備份。windows

需求難點:網絡波動對上次數據完整性的影響,如何在前期規劃好後期新增的數據文件的歸檔分組與優化管理,如何確保數據文件上傳的完整性檢查。bash

解決方法服務器

1.windows下編寫bat批量執行腳本配合定時任務時間數據傳輸。微信

2.選取osscmd工具,支持G級數據的切片上次與解決網絡波動時候的斷點續傳。                    網絡

3.打包壓縮數據文件,減小傳流量帶寬,上傳完成後刪除壓縮包(腳本內實現)。ide

4.經過在Linux服務器一樣使用osscmd的list方法來抓取oss上的文件信息,以便比對與告警。工具

1、備份服務器端部署優化

1.安裝python,版本在2.5-2.7,建議2.7(已安裝忽略)

2.c盤新建OSS目錄,並在次目錄下解壓osscmd文件

下載URLhttps://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/internal/oss/0.0.4/assets/sdk/OSS_Python_API_20160419.zip?spm=5176.doc32171.2.3.lnaEuy&file=OSS_Python_API_20160419.zip

3.安裝rar壓縮文件(已安裝忽略)

4.修改oss.bat腳本文件

OSS.bat文件內容以下:

@echo off
rem mail:xuel@anchnet.com
set MON=%date:~0,4%%date:~5,2%                #定義建立的時間目錄
set DATE=%date:~0,4%%date:~5,2%%date:~8,2%    #定義時間
set TIME=%date%-%time%
set LOGDIR=C:\                                #目錄
set DIR=D:\                                   #數據文件的盤符
echo "%TIME% 腳本開始執行完畢!">>%LOGDIR%\OSS\log\backup-oss.log     #輸出日誌
set DIRNAME=SAP_BACKUP                                               #數據文件的目錄
set NAME=上海xx客戶科技                                              #客戶名稱
set PY=C:\Python27\python.exe                 #python可執行程序路徑
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-shenzhen.aliyuncs.com         #oss所在區,內網能夠根據具體來寫
 
set FILE=Data1                                #壓縮的數據文件目錄名稱
%RAR% a -k -r -s -m1 %DIR%%DATE%-%FILE%.rar %DIR%\%DIRNAME%\%FILE%     #壓縮文件
set TIME=
set TIME=%date%-%time%
echo "%TIME% %FILE% 壓縮文件執行完畢!">>%LOGDIR%\OSS\log\backup-oss.log
%PY% %OSSCMD% mkdir %BUCKET%%NAME%/%MON%/%DATE%-%DIRNAME% --id=%ID% --key=%KEY% --host=%HOST%  #建立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% 上傳文件執行完畢!">>%LOGDIR%\OSS\log\backup-oss.log
)
del %DIR%%DATE%-%FILE%.rar                    #刪除壓縮數據文件
set TIME=
set TIME=%date%-%time%
echo "%TIME% %FILE% 刪除文件執行完畢!">>%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% 壓縮文件執行完畢!">>%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% 上傳文件執行完畢!">>%LOGDIR%\OSS\log\backup-oss.log
del %DIR%%DATE%-%FILE%.rar
set TIME=
set TIME=%date%-%time%
echo "%TIME% %FILE% 刪除文件執行完畢!">>%LOGDIR%\OSS\log\backup-oss.log
echo "-----------%TIME% 腳本執行完畢!---------">>%LOGDIR%\OSS\log\backup-oss.log

5.Window建立定時任務

建立定時任務

「程序」/「附件」/「系統工具」/「任務計劃程序」命令

wKiom1mD5dmwiUjBAAHnLBMOnP0233.png

點擊「建立任務」後如圖所示:填寫好相應的名稱和勾選好必要的條件

wKiom1mD5h_DEFz8AAEuz30TiPY828.png

選擇「觸發器」選項,點擊「新建」,建立任務執行時間,「重複任務間隔」這個選擇後,後面有時間選擇,是每小時,仍是每分,可本身選擇後再修改時間,再肯定。

wKiom1mD5rKTS8KsAAHguKBr2Uw133.png

wKioL1mD55-g8pCDAAG7SV1iEpc969.png

再來配置須要執行的「操做」,就是選擇所寫的程序或是BAT文件,這裏很重要的配置是選擇BAT文件後,在「起始於(可選)」這裏必定要填寫相應執行程序或是BAT文件的所在目錄,要否則是執行不成功的。

wKiom1mD59eRZQ9EAACfUoBqnz0791.png

wKioL1mD5_ajv6LWAANFMloffII270.png

wKiom1mD6umjuRiFAAMsb4uWtXo001.png

wKioL1mD6xrQbFwnAAFN3i848Jg808.png


2、阿里雲OSS開通

建立Access key,用於使用osscmd上傳時bucket認證標識

wKiom1mD62qwQsN1AADOfGXaQyQ226.png

建立bucket

wKiom1mD66zzzgGrAADJs-P3-Yw968.png


2、監控OSS上傳數據

1.下載osscmd工具並放置/oss目錄下

wKiom1mD7Cbx08I8AAEbIndsm48816.png

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 "上海xx公司-oss_check is fail! TIME:${MAILTIME}"
else
   /bin/bash /oss/GFweixin.sh xuel dace "上海xx公司-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 "上海xx公司-oss_check is fail! TIME:${MAILTIME}"
else
/bin/mail -r xuel@51idc.com -s "達上海xx公司-oss_check" serviceadmin@51idc.com </oss/log/${TIME}/oss-check-${TIME}.log
fi

5、結果展現

1.上傳日誌查看

wKiom1mD7Lui4V9rAABku3ya49k220.png

1.阿里雲oss文件查看

wKioL1mD7SCBlW0dAAEtaqkZYnI988.png


能夠在oss上是先以客戶名稱命名的一個目錄,其次是一年月來歸檔數據文件,其次是數據上傳備份目錄,最終是打包好的數據壓縮文件,如何後期須要定時刪除,則只需在腳本內寫入根據時間來刪除便可,極大加強了擴展性,以日期歸檔方便後續管理操做。

3.郵件日誌

wKioL1mD7YHAMIc0AAMiekB9j7A486.png

4.微信通知

wKioL1mD7cTQ6Y3tAABqZ4tB8Ro388.png

相關文章
相關標籤/搜索