bat脚本文件实现Windows服务器备份mssql数据文件自动上传至阿里云OSS的方法
[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!
前几天写过一篇关于熊二哥哥备份sql数据库到百度云的文章,具体请看 利用免费版SQL数据库备份恢复助手直接备份数据到百度云的方法 这不又有客户想备份到oss,有些软件里没有这个oss配置,很是尴尬,那也得处理一下不是;
详细的阐述一下相关问题:
客户需求:实现将Windows服务器上的SQLServer数据库文件上传至阿里云OSS内,实现数据长期备份。
需求难点:网络波动对上次数据完整性的影响,如何在前期规划好后期新增的数据文件的归档分组与优化管理,如何确保数据文件上传的完整性检查。
解决方法:
1.在Windows下编写bat批量执行脚本配合定时任务时间数据传输。
2.选取osscmd工具,支持G级数据的切片上次与解决网络波动时候的断点续传。
3.打包压缩数据文件,减少传流量带宽,上传完成后删除压缩包(脚本内实现)。
4.通过在Linux服务器同样使用osscmd的list方法来抓取oss上的文件信息,以便比对与告警。
一、备份服务器端部署
1.安装python,版本在2.5-2.7,建议2.7(已安装忽略)
2.在c盘新建OSS目录,并在次目录下解压osscmd文件
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=老梁科技 #客户名称 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-beijing.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创建定时任务
创建定时任务
“程序”/“附件”/“系统工具”/“任务计划程序”命令
点击“创建任务”后如图所示:填写好相应的名称和勾选好必要的条件
选择“触发器”选项,点击“新建”,创建任务执行时间,“重复任务间隔”这个选择后,后面有时间选择,是每小时,还是每分,可自己选择后再修改时间,再确定。
再来配置需要执行的“操作”,就是选择所写的程序或是BAT文件,这里很重要的配置是选择BAT文件后,在“起始于(可选)”这里一定要填写相应执行程序或是BAT文件的所在目录,要不然是执行不成功的。
二、监控OSS上传数据
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
五、结果展示
1.上传日志查看
1.阿里云oss文件查看
可以在oss上是先以客户名称命名的一个目录,其次是一年月来归档数据文件,其次是数据上传备份目录,最终是打包好的数据压缩文件,如何后期需要定时删除,则只需在脚本内写入根据时间来删除即可,极大增强了扩展性,以日期归档方便后续管理操作。
3.邮件日志
4.微信通知
问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!