整盘备份的小项目(c#)

原创 2004年07月14日 15:41:00

app.cs

using System;
using System.IO;

namespace com.todayisp.bakup
{
 /// <summary>
 /// app 的摘要说明。
 /// </summary>
 public class app
 {
  //列举某个盘下面的所有目录,不包括文件。
  //目录路径pathstr,如e:/
  //返回以目录组成的数组。
  public string[] Directorys(string pathstr)
  {
   if(pathstr==null) return null;
   if(!Directory.Exists(pathstr))
   {
    Console.WriteLine("error:filepath not exist--"+pathstr);
    return null;
   }
   Console.WriteLine("start check path");
   string[] filestrs=Directory.GetDirectories(pathstr);
   for(int i=0;i<filestrs.Length;i++)
   {
    Console.WriteLine(filestrs[i]);
   }
   return filestrs;
  }


  //对目录进行压缩,采用rar.exe+命令行方式来处理。
  //rarName:要压缩成的rar文件路径及名称,如e:/abc.rar
  //dirName:要压缩的目录,如e:/abc
  public bool bak(string rarName,string dirName)
  {
   bool blnRst = false;
   string strArg = "a -r  {0} {1}";
   System.Diagnostics.Process p = new System.Diagnostics.Process();
   p.StartInfo.FileName = @"e:/rar.exe";//exe,bat and so on
   p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
   p.StartInfo.Arguments = String.Format(strArg, rarName, dirName);
   try
   {
    p.Start();
    p.WaitForExit();
    p.Close();
    blnRst = true;
   }
   catch
   {
   }
   return blnRst;
  }

  //压缩日志,每压缩一个文件夹就写入日志文件。
  //filestr日志路径,content日志内容
  public bool writeLog(string filestr,string content)
  {
   try
   {
    StreamWriter sw = new StreamWriter(filestr,true,System.Text.UTF8Encoding.UTF8);
    sw.WriteLine(content);
    sw.Close();
    
    return true;
   }
   catch
   {
    return false;
   }
  }

  //读取日志,分析日志,得出上次备份时间,从而可以选择是否操作
  //logPath日志路径,dirName要备份的目录名。
  public bool readLog(string logPath,string dirName,int intdate)
  {
   try
   {
    string str;
    StreamReader din = File.OpenText(logPath);
    while ((str = din.ReadLine()) != null)
    {
     string[] strs=str.Split(' ');
     if(strs[1]==dirName.ToLower())
     {
      Console.WriteLine(strs[0]+":"+strs[1]);
      Console.WriteLine(DateTime.Today.ToShortDateString());
      if(Convert.ToDateTime(DateTime.Today.ToShortDateString())<Convert.ToDateTime(strs[0]).AddDays(intdate))
      {
       din.Close();
       return false;
      }
     }
    }
    din.Close();
    return true;
   }
   catch{
    return false;
   }
  }
 }
}

 

//class1.cs程序入口

using System;
using System.IO;
using System.Configuration;

namespace com.todayisp.bakup
{
 /// <summary>
 /// Class1 的摘要说明。
 /// </summary>
 class Class1
 {
  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {
   //
   // TODO: 在此处添加代码以启动应用程序
   //
   app App = new app();

   string pathstr = ConfigurationSettings.AppSettings["dir"];
   string maxcontent = ConfigurationSettings.AppSettings["maxcontent"];
   string logpath = ConfigurationSettings.AppSettings["logpath"];
   int bakupday = Convert.ToInt32(ConfigurationSettings.AppSettings["bakupday"]);
   string[] dir = App.Directorys(pathstr);
   if (dir==null) return;

   long content = 0;
   
   for(int i=0;i<dir.Length;i++)
   {
    try
    {
     if(content>=Convert.ToInt32(maxcontent)) return;
     string dirName=dir[i].Trim();
     string rarPath=dirName+".rar";
     int pos = rarPath.LastIndexOf(@"/");
     string rarName = rarPath.Substring(pos+1,rarPath.Length-pos-1);

     if(App.readLog(logpath,dirName,bakupday))   
     {
      bool bakup = App.bak(rarPath,dirName);
      bool bakup2 = App.writeLog(logpath,DateTime.Today.ToShortDateString()+" "+rarName+" "+dirName.ToLower());
      Console.WriteLine("Bakup "+dirName+" to "+rarName+" "+bakup+".Write to log "+bakup2);
      FileInfo fi = new FileInfo(rarPath);
      content = content + fi.Length;
      Console.WriteLine(content+"bytes");
     }
     else
     {
      Console.WriteLine("No need to bukup "+dirName);
     }
    }
    catch(Exception ex)
    {
     Console.WriteLine(ex.Message);
    }
   }

  }
  
 }
}

 

//bakup.exe.config配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <!-- application specific settings -->

    <system.web>
        <customErrors mode="Off"/>
    </system.web>

    <appSettings>
 <add key="dir" value="e:/rui"  />
 <add key="maxcontent" value="2000" />
 <add key="logpath" value="e:/abc.txt" />
 <add key="bakupday" value="1" />
    </appSettings>
</configuration>

C# MySql 数据数据备份与还原

备份:
  • everlasting51
  • everlasting51
  • 2014年08月01日 15:08
  • 454

linux下把服务器上 tomcat下的java项目打包备份

备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据...
  • liuhailiuhai12
  • liuhailiuhai12
  • 2017年03月30日 16:11
  • 670

备份——如何用maven建立一个web项目

使用eclipse插件创建一个web project 首先创建一个Maven的Project如下图     我们勾选上Create a simple project (...
  • kldequfeng
  • kldequfeng
  • 2014年05月13日 20:04
  • 308

使用Eclipse时的配置备份/提取与导入

之所以用“使用Eclipse时的配置”,因为配置“配置”不全是针对Eclipse软件本身的配置。需要注意两点。 下面提到的任何配置经备份/提取后导入到另一台机器或者另一个Eclipse软件时,凡涉...
  • tanchen1991
  • tanchen1991
  • 2014年12月20日 12:09
  • 2244

C#备份还原数据库(sqldmo.dll篇)

SQLDMO(SQL Distributed Management Objects,SQL分布式管理对象)封装了Microsoft SQL Server数据库中的对象。SQLDMO是Microso...
  • cuoban
  • cuoban
  • 2014年12月21日 04:29
  • 334

VS脚本自动备份工程

VS自动备份工程
  • u013719984
  • u013719984
  • 2017年03月13日 15:15
  • 170

SDE For SQLServer迁移步骤(备份,恢复)

继续上一篇,SQLServer同时也提供了备份和恢复这种迁移方法(类似于oracle 的exp,imp和expdp,impdp方法),以下是详细测试步骤测试环境: 源库环境: IP: 192....
  • liufeng1980423
  • liufeng1980423
  • 2016年02月17日 14:21
  • 3576

【Rsync项目实战】备份全网服务器数据

【Rsync项目实战】备份全网服务器数据 标签(空格分隔): Linux服务搭建-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载...
  • huanghongfei1
  • huanghongfei1
  • 2017年03月18日 21:24
  • 633

linux系统备份(服务器开发思路)详解

一、前提说明              做linux服务器开发时,一个很重要的思想是:“备份”。当我们的数据非常重要时,更是需要多处备份。但是,并不仅仅局限于数据备份,系统备份也非常重要。比如说手机S...
  • yinhaide
  • yinhaide
  • 2015年03月10日 10:27
  • 1197

SQLDMO数据库备份还原 带进度条

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin...
  • hutao1101175783
  • hutao1101175783
  • 2014年03月29日 10:51
  • 1822
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:整盘备份的小项目(c#)
举报原因:
原因补充:

(最多只允许输入30个字)