今天试着做了自动备份数据库到管理员的主机上,功能大致实现了.
当管理员运行客户端脚本时,会自动连接服务器启用相应的asp脚本,备份数据库到服务器上,然后再自动下载到管理员的主机上.
不过程序刚做出来,现在也不知道有没有什么遗漏,如果大家想到希望指点下!
先看服务器端的代码:.
autobackupdb.asp
| '******************************************************* '目的:自动备份数据库到服务器上和网站管理员的主机 '作者:always there '时间:2008-04-08 '主页:http://www.alwaysthere.com.cn '******************************************************* const verifystring="alwaysthere" '--定义验证字符 const SQL_injdata = "'|;|-" '--定义过滤字符 Dim strVerify,clientIP '--接收验证字符,发送请求的IP Dim objXML,x '--xmlDOM对象,x为集合 Dim SQL_inj Dim dbBackup,dbSource dbSource = server.mapPath("#test.mdb") '--源数据库路径 dbBackup = server.mapPath("#backup" & date() & ".mdb") '--备份数据库路径 |
| SQL_inj = split(SQL_injdata,"|") '--过滤字符的数组 |
| strVerify = trim(request.querystring("verifystring")) clientIP = Request.ServerVariables("Remote_Addr") '--检验发送请求的用户IP是否存在黑名单里 set objXML = server.createObject("Microsoft.XMLDOM") objXML.load(server.mapPath("hbtIP.xml")) set x = objXML.getElementsByTagName("hbtIP") For i = 0 to x.length-1 If x(i).text = clientIP Then Response.Write "做人不能太CNN" Response.End End If Next set objXML = nothing |
| '--当传递过来的验证字符串不符合,即把发送请求的ip拖入黑名单 If strVerify<>verifystring Then ''打开xml添加ip set objXML=server.createObject("Microsoft.XMLDOM") objXML.Load(server.mapPath("hbtIP.xml")) set newNode=objXML.createElement("hbtIP") newNode.text=clientIP objXML.documentElement.appendChild newNode objXML.save(server.mapPath("hbtIP.xml")) set objXML=nothing Response.End End IF |
| '--备份数据库到服务器 set fso = server.createobject("scripting.filesystemObject") if Not fso.FileExists(dbSource) Then Response.Write "数据库不存在,请检查" Response.End End if fso.CopyFile dbSource,dbBackUp If not Err then Response.Write "服务器端备份成功" End If set fso = nothing |
| '--下载备份数据库到管理员主机 以下部分可能考虑不周全,请谨慎使用 Response.AddHeader "Content-Disposition","attachment; filename="+fileName |
这种办法备份数据库到服务器没什么问题,但是之后下载数据库到管理员主机上有风险,所以还是得改进,大家有什么好的看法,也可以提出来!.一起研究学习.
下面这个是管理员电脑上的客户端脚本,参考了爬坡者的<定时运行你的asp文件>这篇文章.
| Dim IE,verifystring verifystring ="" '--验证字符串,第一次使用请填写 Set IE = CreateObject("InternetExplorer.Application") |