我写了一个自动备份网站的一个程序,那位大哥给优化一下,或者给揪揪错!明天服务器上要用!一个控制台程序:using System;
using System.IO;
namespace BackUp
{
/// <summary>
/// 备份网站。
/// </summary>
class backup
{
/// <summary>
/// 备份网站,参数说明:第一个参数源目录,第二个copy目录,第三个源目录,第四个间隔时间。
/// </summary>
[STAThread]
static void Main(string[] args)
{
try
{
DateTime dt = DateTime.Now;
System.Console.WriteLine("开始时间:" + dt.ToString());
FindFile(args[0], args[1], args[2], Convert.ToInt32(args[3]));
DateTime dt1 = DateTime.Now;
System.Console.WriteLine("结束时间:" + dt1.ToString());
TimeSpan ts = dt1 - dt;
System.Console.WriteLine("耗时:" + ts.ToString() + "秒");
}
catch
{
System.Console.WriteLine("Error");
}
} private static void FindFile(string dir, string copyDir, string initDir, int intSleep)
{     
DirectoryInfo Dir = new DirectoryInfo(dir);
try
{
foreach(DirectoryInfo d in Dir.GetDirectories())     //查找子目录   
{
FindFile(Dir+d.ToString()+"\\", copyDir, initDir, intSleep); if(!Directory.Exists(Dir.ToString().Replace(initDir, copyDir) + d.ToString()))
{
Directory.CreateDirectory(Dir.ToString().Replace(initDir, copyDir) + d.ToString());
}
}
foreach(FileInfo f in Dir.GetFiles("*.*"))             //查找文件
{
FileInfo fileInfo = new FileInfo(Dir + f.ToString());
FileInfo fileInfo1 = new FileInfo(Dir.ToString().Replace(initDir, copyDir) + f.ToString());
if(!File.Exists(Dir.ToString().Replace(initDir, copyDir) + f.ToString()) || !fileInfo.LastWriteTime.Equals(fileInfo1.LastWriteTime))
{
File.Copy(Dir + f.ToString(), Dir.ToString().Replace(initDir, copyDir) + f.ToString(), true);
}
}
//间隔
System.Threading.Thread.Sleep(intSleep);
}
catch
{}
}
}
}

解决方案 »

  1.   

    哦,大概看了一下,其实你这个程序对于备份网站来说没有什么实际意义.一般情况下网站的程序都是写好,固定不变的,你备份它没有什么用处.网站坏了,大不了重新安装一次.我的理解网站的备份应该是网站数据的备份.也就是数据库的备份.而你写的此程序中大概意思是对网站遍历目录,来备份网站文件的.如果想备份数据库的话,可以在Global.asax.cs文件上作文章.在此文件中加入system.timer,然后再写入备份数据库的代码.不知道我这样讲是否正确!?
      

  2.   

    sxlfybb(房客) ( ) 说的不错,网站没有什么好每天备份的吧,要做的还是数据库的备份,那样直接用数据库建个业务就可以了
      

  3.   

    同意sxlfybb(房客) 的看法。网站的页面是不用备份的,主要是数据备份。而数据的备份可以用现成的工具。比如你的数据库用的是SQLServer,就用它自带的数据库备份工具来做好了。
    除数据库外,需要备份的就是用户上传的文件什么的了。如果情况允许,我建议楼主写一个Windows服务来做这个事。
      

  4.   

    sxlfybb(房客)理解错误,如果我做的是信息站,每天都有很多图片上传,肯定是需要备份网站目录的
      

  5.   

    数据库备份,我会用自带的啊!正如楼上所说的,上传图片,有时候会有一些修改,即使网站坏了,我可以在几分钟之内马上用这个备份直接恢复了!上述备份没考虑绝对的同步,但是效率应该没问题,如果备份目录过大,可以用最后一个参数来指定服务器延迟时间。只是想请大家看看这段代码有问题没,或者可以用一些手法优化一下!!
    system.timer,显然不如计划任务有效率,其实上述xcopy就可以完成,但是效率不如这个,还有就是cpu的占用量不如这个。