热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用WebClient类中的eKing.CmdDownLoadDbBakOper,实现数据库备份文件的定时拷贝到文件服务器的功能

摘要:1、有两台服务器(1)看代码网(记为A):内网IP:10.186.73.30

摘要:

1、有两台服务器
(1)看代码网(记为A):内网IP:10.186.73.30
(2)文件服务器(记为B):内网IP:10.135.87.157
2、在A架设一个网站,端口8088(防火强设置B才能访问)
3、在B运行计划任务,每天定时从A的8088端口网站下载数据库备份文件到B
优点:
1、利用iis,无需架设ftp
2、利用防火墙,确保只能指定IP和端口可以访问
3、利用windows计划任务,每天定时备份
4、备份成功邮件定时提醒
原文链接:
http://www.lookdaima.com/WebForms/WebPages/Blanks/Pm/Docs/DocItemDetail.aspx?id=f51e119e-68d4-49f6-8480-0c967d84902e&EmDocDetailShowTypeV=2
备份策略:
1、在A服务器每天定时备份数据文件到D:\DataBase\AutoBackAll目录的LookDaiMaDB下
2、在A服务器的D:\DataBase\AutoBackAll目录下架设一个IIS网站,端口8088

架设网站

架设网站

3、在腾讯云服务器上设置安全策略,只能B服务器才能访问8088端口

腾讯云设置安全策略

腾讯云设置安全策略

腾讯云设置安全防火墙规则的方法指引
腾讯云怎么设置防火墙安全
4、(重复安全设置)在A服务器防火墙设置只有B服务器才能访问

防火墙设置

防火墙设置

SqlServer2008数据库被人扫sa密码攻击的发现和通过windows防火墙处理知识分享
5、在IIS设置trn文件能下载,见文章:
让IIS7.0.0.0支持 .iso .7z .torrent .apk等文件下载的设置方法
6、在IIS网站下面添加DbLookDaiMaBak.aspx文件
实现文件的读取和下载

DbLookDaiMaBak.aspx.cs

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Reflection;
using System.Security.Cryptography;
using System.Text;
using System.IO;

public partial class DbLookDaiMaBak 

System.Web.UI.Page
{

#region DateTimeGetByStrYyyyMMddHHmmss|yyyyMMddHHmmss转成时间

///
/// yyyyMMddHHmmss转成时间
///

/// 时间格式字符串(要求14位长)|如:20180621020355
/// 如果格式不正确,抛出异常|否则返回时间值|如:2018-06-21 02:03:55
public DateTime DateTimeGetByStrYyyyMMddHHmmss(string str)
{
if (str == null || str.Length == 0)
{
throw new Exception
(
"方法:"
+ MethodBase.GetCurrentMethod().ReflectedType.FullName
+ " "
+ MethodBase.GetCurrentMethod().ToString()
+ " 发生异常:"
+ "str == null || str.Length == 0"
);
}

int iLen = str.Length;

if (iLen != 14)
{
throw new Exception
(
"方法:"
+ MethodBase.GetCurrentMethod().ReflectedType.FullName
+ " "
+ MethodBase.GetCurrentMethod().ToString()
+ " 发生异常:"
+ "str.Length != 8"
);
}

string dateStr
=
str.Substring(0, 4)
+ "-" + str.Substring(4, 2)
+ "-" + str.Substring(6, 2)
+ " " + str.Substring(8, 2)
+ ":" + str.Substring(10, 2)
+ ":" + str.Substring(12, 2);

return DateTime.Parse(dateStr);
}



///
/// yyyyMMddHHmmss转成时间
///

/// 时间格式字符串(要求14位长)|如:20180621020355
/// 如果时间格式不正确,返回的时间默认值
/// 如果格式不正确,返回默认值defaultValue|否则返回时间值|如:2018-06-21 02:03:55
public DateTime DateTimeGetByStrYyyyMMddHHmmss(string str, DateTime defaultValue)
{
if (str == null || str.Length == 0)
{
return defaultValue;
}

int iLen = str.Length;

if (iLen != 14)
{
return defaultValue;
}

string dateStr
=
str.Substring(0, 4)
+ "-" + str.Substring(4, 2)
+ "-" + str.Substring(6, 2)
+ " " + str.Substring(8, 2)
+ ":" + str.Substring(10, 2)
+ ":" + str.Substring(12, 2);

DateTime theResult = defaultValue;

if (DateTime.TryParse(dateStr, out theResult))
{
return theResult;
}

return defaultValue;
}

#endregion DateTimeGetByStrYyyyMMddHHmmss|yyyyMMddHHmmss转成时间

#region GetGB2312MD5|获得GB2312(中文编码)格式的MD5值

///
/// 获得GB2312编码的MD5值
///

/// 需要MD5的字符串
///
public string GetGB2312MD5(string s)
{
if (s == null)
s = "";

MD5 md5 = new MD5CryptoServiceProvider();

System.Text.Encoding en = System.Text.Encoding.GetEncoding("GB2312");

byte[] t = md5.ComputeHash(en.GetBytes(s));

StringBuilder sb = new StringBuilder(32);

for (int i = 0; i {
sb.Append(t[i].ToString("x").PadLeft(2, '0'));
}

return sb.ToString();
}

#endregion GetGB2312MD5|获得GB2312编码的MD5值


///
/// 
///

///
///
///
protected string ToSign(string callName, string dt)
{
string str = callName + dt + "ekinglbs.lookdaima";

return GetGB2312MD5(str);
}

///
/// 获得网站根目录(比如网站虚拟目录tools) - http://www.slowx.net/tools/
///

///
public string GetWebRootUrl()
{
HttpContext hc = HttpContext.Current;

if (hc == null)
{
throw new Exception
(
"方法:"
+ MethodBase.GetCurrentMethod().ReflectedType.FullName
+ " "
+ MethodBase.GetCurrentMethod().ToString()
+ " 发生异常:HttpContext hc = HttpContext.Current值为null。"
);
}

// 虚拟目录加完整参数页面地址 //
// /SlowXWebSite/Test/WebCommon/Default.aspx?id=default.aspx&web=%cb%aa%d2%b6&dt=D%3a%5ccanoe%5cs.aspx&p=fdf%5cf%2ffds.fdsf%3ffdf //
string strPathAndQuery = hc.Request.Url.PathAndQuery;

// 完整URL地址 //
string strAbsoluteUri = hc.Request.Url.AbsoluteUri;

int idx = strAbsoluteUri.LastIndexOf(strPathAndQuery);

if (idx == -1)
{

throw new Exception
(
"方法:"
+ MethodBase.GetCurrentMethod().ReflectedType.FullName
+ " "
+ MethodBase.GetCurrentMethod().ToString()
+ " 发生异常:"
+ "int idx = strAbsoluteUri[" + strAbsoluteUri + "].LastIndexOf(strPathAndQuery[" + strPathAndQuery + "]) == -1;"
);
}

string theResult = strAbsoluteUri.Substring(0, idx);

if (hc.Request.ApplicationPath == "/")
return theResult;
else
return theResult + hc.Request.ApplicationPath;
}

///
/// 
///

///
protected string DataBindTheControls(bool isDebug)
{
if (isDebug)
{
string debugWebRootUrl = GetWebRootUrl();


if (debugWebRootUrl.EndsWith("/") || debugWebRootUrl.EndsWith("\\"))
{
debugWebRootUrl = debugWebRootUrl.Substring(0, debugWebRootUrl.Length - 1);
}

return "+" + debugWebRootUrl + "/debugdata.zip";

}

string noPower = "-鉴权失败:" + Request.Url.AbsoluteUri;

string callName = Request.QueryString["CallUserName"];
string dt = Request.QueryString["dt"];
string sign = Request.QueryString["sign"];

if (callName == null || callName.Length == 0)
return noPower + "[callName]";

if (dt == null || dt.Length == 0)
return noPower +"[dt]";

if (sign == null || sign.Length == 0)
{
return noPower + "[sign]";
}

DateTime dtValue = DateTimeGetByStrYyyyMMddHHmmss(dt, DateTime.MinValue);

if (dtValue == DateTime.MinValue)
{
return noPower + "[dt.MinValue]";
}

if (callName != "ekinglbs")
{
return noPower + "[callName=" + callName + "]";
}

string newSign = ToSign(callName, dt);

if (newSign != sign)
{
return noPower + "[callName=" + callName + "]" + "[dt=" + dt + "]" + "[sign=" + sign + "]" + "[newSign=" + newSign + "]";
}

string rootDir = Request.PhysicalApplicationPath + "LookDaiMaDB";

DirectoryInfo dir = new DirectoryInfo(rootDir);

if (!dir.Exists)
{
return "-目录" + dir.FullName + "不存在";
}

FileInfo[] fA = dir.GetFiles();

string webRootUrl = GetWebRootUrl();

if (webRootUrl.EndsWith("/") || webRootUrl.EndsWith("\\"))
{
webRootUrl = webRootUrl.Substring(0, webRootUrl.Length - 1);
}

foreach (FileInfo fi in fA)
{
if (fi == null)
continue;

if (fi.Extension == null)
continue;

if (fi.Extension.Trim().ToLower() != ".trn")
{
continue;
}

if (fi.LastWriteTime.Date != DateTime.Now.Date)
{
continue;
}

return "+" + webRootUrl + "/LookDaiMaDB/" + fi.Name;
}

return "-没有找到文件";
}

///
/// 转换成要下载的文件路径
///

///
///
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentEncoding
=
System.Text.Encoding.GetEncoding("gb2312"); 

if (!this.IsPostBack)
{
try
{
string str = DataBindTheControls(false);

Response.Write(str);
}
catch (Exception err)
{
Response.Write("-系统异常:" + err.Message);
}
}
}
}

访问地址:http://10.186.73.30:8088/DbLookDaiMaBak.aspx
7、在B服务器部署控制台下载程序
控制台目录:C:\Cmds\CS\common\DownLoadDbBak
下载存放目录:C:\WebBackups\DBs\LookDaiMa
DownLoadDbBak.zip
bat脚本:

downdb.bat

C:\Cmds\CS\common\DownLoadDbBak\eKing.CmdDownLoadDbBakOper.exe EmailName=qq89616537 EmailSmtpServer=smtp.163.com EmailSend=qq89616537@163.com EmailPwd=[****密码隐藏***] EnableSsl=false EmailRecv=89616537@qq.com;qq89616537@163.com; EmailTitle={Oper}.{DateTime.Date}-看代码网数据库备份文件拷贝归档操作 EmailText=看代码网数据库备份文件拷贝归档操作 EmailEncoding=gb2312 HtmlFlag=false PwdTextType=des3 ConsoleWriteFlag=true DownLoadUrl="http://10.186.73.30:8088/DbLookDaiMaBak.aspx?" CallUserName=ekinglbs CallPwd=lookdaima CallPwdTextType=text DayLeft=5 SaveDir=C:\WebBackups\DBs\LookDaiMa SaveFileName=lookdaima.trn
利用WebClient|eKing.CmdDownLoadDbBakOper|实现定时拷贝数据库备份文件到文件服务器
8、双击bat测试执行
9、利用windows计划任务实现每天定时执行bat
通过windows计划任务和bat脚本实现定时获取表空间大小的操作指引攻略

转:https://www.cnblogs.com/slowx/p/9427796.html



推荐阅读
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
author-avatar
无心少年丶的诱惑
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有