服务器重做系统【如何备份和恢复服务器上的网站信息】
备份
1、备份网站文件
2、备份数据库文件
3、备份IIS和应用池【IIS自带到功能】
4、备份计算机所有用户【cmd net user > c:\userlist.txt】
还原
1、还原IIS信息【同理还原应用池】
“开始”---“运行”---输入“cmd”,打开命令窗口,用下面的命令,控制切换到 windows\system32 目录
cd C:\windows\system32
那么,现在就可以输入命令还原了,
iiscnfg /import /f C:\IIS\IISConfig.xml /sp /LM/W3SVC /dp /LM/W3SVC /children
这个命令,就可以把旧服务器上的IIS所有配置还原到新的IIS配置了
说明:/LM/W3SVC 这个是在你的备份里面有的,第一个配置的路径,可参考上面的新浪博客那个贴子的说明。
注意的是,如果你的新服务器,原来有了一些网站的话,就要用到合并了,上面的命令加多一个“/merge”,如下
iiscnfg /import /f C:\IIS\IISConfig.xml /sp /LM/W3SVC /dp /LM/W3SVC /children /merge
这样子,就不会影响到你原来的网站了,最后,就是自己去检查一下了,看看那里漏掉的,自已补上就好,比如你分配了每个站一个用户权限的,那你就可以去增加原来的用户和密码给这些网站了,等等。。。。
如果还原好的配置,所有网站都是停止的,这个就可以重启IIS就可以了
当然,如果服务器IP有变的话,首先要改一下原备份的XML里的IP,然后再还原。
2、批量附加还原数据库
private void AddP(string dfspath)
{
DirectoryInfo d = new DirectoryInfo(dfspath);
FileInfo[] fs = d.GetFiles();
for (int i = 0; i < fs.Length; i++)
{
if (fs[i].Extension.ToLower().Contains("mdf"))
{
string DbPath = dfspath+"//" + fs[i].Name;
string LogPath = dfspath+"//" + fs[i].Name.Substring(0, fs[i].Name.LastIndexOf('.')) + "_log.ldf";
string StrSql = "exec sp_attach_db @dbname='" + fs[i].Name.Substring(0, fs[i].Name.LastIndexOf('.')) + "',@filename1='" + DbPath + "',@filename2='" + LogPath + "'";
string strcon = "Server=(local);Integrated Security=SSPI;Database=master";
try
{
SqlConnection cn = new SqlConnection(strcon);
SqlCommand cmd = new SqlCommand(StrSql, cn);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
}
catch { }
}
}
}
3、批量添加计算机用户【没有找到好方法凑合用吧】【你要有对系统的绝对权限】,网上还有一中是用EXCEL来存储用户信息进行还原的,不过我感觉不好用。
public void AddUser1()
{
FileInfo f = new FileInfo(@"C:\userlist.txt");
StreamReader sr = new StreamReader(f.Open(FileMode.Open));
List<string> listuser = new List<string>();
string ouser = "";
int j = 0;
while (sr.Peek()>0)
{
string line = sr.ReadLine();
for (int i = 0; i < line.Length; i++)
{
if (line[i] != ' ')
{
j = 1;
ouser = ouser + line[i].ToString();
}
else
{
if (j == 0)
{
}
else
{
listuser.Add(ouser);
ouser = "";
j = 0;
}
}
}
}
if (ouser != "")
{
listuser.Add(ouser);
}
for (int i = 0; i < listuser.Count; i++)
{
try
{
DirectoryEntry AD = new DirectoryEntry("WinNT://" +
Environment.MachineName + ",computer");
DirectoryEntry NewUser = AD.Children.Add(listuser[i], "user");
//密码123
NewUser.Invoke("SetPassword", new object[] { "123" });
NewUser.Invoke("Put", new object[] { "Description", "Test User from .NET" });
NewUser.CommitChanges();
DirectoryEntry grp;
grp = AD.Children.Find("web", "group");
if (grp != null) { grp.Invoke("Add", new object[] { NewUser.Path.ToString() }); }
Console.WriteLine("Account Created Successfully");
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadLine();
}
}
}