我写了一个自动备份网站的一个程序,那位大哥给优化一下,或者给揪揪错!明天服务器上要用!一个控制台程序: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
{}
}
}
}
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
{}
}
}
}
除数据库外,需要备份的就是用户上传的文件什么的了。如果情况允许,我建议楼主写一个Windows服务来做这个事。
system.timer,显然不如计划任务有效率,其实上述xcopy就可以完成,但是效率不如这个,还有就是cpu的占用量不如这个。