数据库备份定期删除程序的开发。
第一.最近客户的服务器数据库备份每天都在进行,随着数据量的不断的增加,备份也在不断的进行变大。
第二.于是一些问题就出现了客户的服务器的磁盘的空间有限,定期数据库备份文件太大而导致无法进行保存问题。
第三.从而导致了服务器宕机以及服务器中一些应用程序以及网站无法使用等等。
第四.所以需要进行解决这个问题就需要开发一个应用程序进行定期的删除数据库的备份以及其他的文件。
第五.在进行删除数据库的备份的时候需要注意是的删除设置的几天前的数据库备份,其他最新的数据库的备份的文件不要删除。
第六:可以应用Windows服务进行开发定时删除数据库备份的应用的程序,也可以进行应用控制台开发定时删除数据库的备份的程序当然如果应用控制台应用程序进行开发,那么最好进行结合Windows 系统自带的计划任务程序比较方便。当然你是可以进行选择的,因人而异。
第五.那么如果做到删除指定的数据库备份文件例如DB2,DBName.0.DB2.DBPART000.20161010153053.001等等以及SQLServer DbName.bak等等
以及MySql数据库的备份文件等等,以及其他的文件格式都是支持的。
第七.那么解决这个问题我需要做的是:
1.首先需要找到数据库备份文件的路径将其读取出来,当然这里所知的路径是指物理路径。
2.需要做的是将数据库的文件的名称以及数据库备份的时间进行读取出来,为了方便取出最新的以及几天前的数据库备份。
3.当然你还需要进行应用File文件类中的一些具体的删除的方法。来进行删除。
第八:下面我将自己写的定期删除数据库备份控制台应用程序贴出来供大家参考。
定期的进行删除数据库备份文件代码如下
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | class Program { static void Main( string [] args) { string strDirfile = Properties.Settings.Default.DB_FILE_PATH; Console.WriteLine( "strDirfile{0}" , strDirfile); int keepFileCnt = int .Parse(Properties.Settings.Default.KEEP_FILE_CNT); try { if ( string .IsNullOrEmpty(strDirfile) || !Directory.Exists(strDirfile)) { Console.WriteLine( "配置的文件的路径不正确请检查{0}" + strDirfile); } if (keepFileCnt <= 0) { Console.WriteLine( "没有配置删除的天数" ); } if (strDirfile != null ) { if (Directory.Exists(strDirfile)) { string [] strDirs = Directory.GetDirectories(strDirfile); string [] strFiles = Directory.GetFiles(strDirfile); DBNameAndTime file = new DBNameAndTime(); if (strFiles != null ) { foreach ( string strFile in strFiles) { if (strFile != null ) { FileInfo fi = new FileInfo(strFile); string [] strArr = fi.Name.Split( '.' ); file.DataName = fi.Name; file.FileTime = strArr[5]; file.Url = strFile; DateTime dt1 = DateTime.Now; if (strArr.Length > 0) { IFormatProvider provider = new CultureInfo( "zh-CN" ); string tarStr = "yyyyMMddHHmmss" ; DateTime dt2 = DateTime.ParseExact(file.FileTime.ToString(), tarStr, provider); TimeSpan ts = dt1 - dt2; Console.WriteLine( "时间天数:{0}" , ts); if (ts.TotalDays >= keepFileCnt) { if (strFile != null ) { File.Delete(strFile); using (StreamWriter sw = new StreamWriter(strDirfile + "数据库备份的删除日志.txt" , true )) { sw.WriteLine(DateTime.Now.ToString( "yyyy-MM-dd HH:mm:ss" ) + "数据库备份删除开始:" + "删除的路径:" + strDirfile + "删除数据库备份的名称" + strFile); } Console.WriteLine( "{0}数据库备份文件删除成功!" , DateTime.Now); } else { Console.WriteLine( "删除文件失败!" ); } } else { Console.WriteLine( "其他的备份文件都是最新的没有3天前的备份!" ); } } } } } //保存删除的根目录的文件夹 foreach ( string strdir in strDirs) { Directory.Delete(strdir, true ); } } else { Console.WriteLine( "此目录中只有根目录了!" ); } } else { Console.WriteLine( "此目录不存在!" ); } } catch (Exception ex) { //将数据库备份的异常写入到记事本中 using (StreamWriter sw = new StreamWriter(strDirfile + "数据库备份的删除日志.txt" , true )) { sw.WriteLine(DateTime.Now.ToString( "yyyy-MM-dd HH:mm:ss" ) + "备份文件都是最新的没有3天前的备份" + ex.Message); } } } } //进行声明备份数据库的类 public class DBNameAndTime { private string fileName; /// <summary> /// 文件名称 /// </summary> public string FileName { get { return fileName; } set { fileName = value; } } private string fileTime; /// <summary> /// 文件的最后修改时间 /// </summary> public string FileTime { get { return fileTime; } set { fileTime = value; } } private string dataName; /// <summary> /// 数据库名称 /// </summary> public string DataName { get { return dataName; } set { dataName = value; } } private string url; /// <summary> /// 文件路径 /// </summary> public string Url { get { return url; } set { url = value; } } public string DownUrl { get { return fileName; } } } |
以上内容均属于原创,转载请标明。谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?