Windows服务器数据文件自动上传至阿里云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文件
下载URL:https://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文件内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
@
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=LTAIsSraOIxxxxxxxx
#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%
#使用multiupload上次文件
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开通
创建Access key,用于使用osscmd上传时bucket认证标识
创建bucket
二、监控OSS上传数据
1.下载osscmd工具并放置/oss目录下
oss_check.sh检测脚本如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#!/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=LTAIsSraOIHyxxx
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
|
五、结果展示
1.上传日志查看
1.阿里云oss文件查看
可以在oss上是先以客户名称命名的一个目录,其次是一年月来归档数据文件,其次是数据上传备份目录,最终是打包好的数据压缩文件,如何后期需要定时删除,则只需在脚本内写入根据时间来删除即可,极大增强了扩展性,以日期归档方便后续管理操作。
3.邮件日志
4.微信通知