首先说明一下环境:2台服务器A、B,在一个局域网内,B备份用的,两台都是Win Server2003,其中B是英文的系统,A是中文系统。A与B的D盘都共享了同样的文件夹。A服务器有账户与密码。要求实现功能:用C#做一个WinForm应用程序,能A中更新的文件备份到B去。疑问:1、怎么访问局域网共享文件夹?其中还要通过账户密码验证。
2、怎么比较两个文件夹中更新的文件,并且进行大文件的传输备份?大虾来提供思路啊,我也想想还有什么不清楚的地方。(我是新手,想边写点东西边学习,)
2、怎么比较两个文件夹中更新的文件,并且进行大文件的传输备份?大虾来提供思路啊,我也想想还有什么不清楚的地方。(我是新手,想边写点东西边学习,)
http://hi.baidu.com/freezesoul/blog/item/1ab4d42aa672eb2ed42af119.html
http://www.xueit.com/html/2010-05/21-7643156652010511221607546.html
程序
http://download.csdn.net/source/1464385
可以使用FileSystemWatcher对象,文件夹内容变化了,系统会回调你的。
参考:
http://article.pchome.net/content-175659.html
至于第一个,Windows系统很复杂,没有搞过类似的问题,如果是我,我就Socket传了
public static void MapDrive(IntPtr hwnd, string netRes, string shareName, string userName, string password)
{
NETRESOURCE NetRes = new NETRESOURCE();
NetRes.dwScope = RESOURCE_GLOBALNET | RESOURCE_REMEMBERED;
NetRes.dwType = RESOURCETYPE_DISK;
NetRes.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE;
NetRes.dwUsage = RESOURCEUSAGE_CONNECTABLE;
NetRes.lpRemoteName = Marshal.StringToBSTR(netRes);
NetRes.lpLocalName = Marshal.StringToBSTR(shareName);
NetRes.lpComment = IntPtr.Zero;
NetRes.lpProvider = IntPtr.Zero; int ret = WinCE.WNetAddConnection3(hwnd, NetRes, password, userName, 1); if (ret != 0)
{
throw new System.ComponentModel.Win32Exception(ret, ((NetworkErrors)ret).ToString());
} }可以利用WNetAddConnection3这个API实作共享文件夹的登入....
确定可以用...0.0
p = new Process();
p.StartInfo.FileName = "cmd.exe";
// 这里是关键点,不用Shell启动/重定向输入/重定向输出/不显示窗口
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true; p.Start();
p.StandardInput.WriteLine("net use \\\\" + serverIp + " " + pssword + " /user:" + userName);// 向cmd.exe输入command p.StandardInput.WriteLine("exit");
p.WaitForExit();
string s = p.StandardOutput.ReadToEnd();// 得到cmd.exe的输出
p.Close();或者使用磁盘映射,将共享目录映射为本机分区
直接上WCF,开发一个服务器端,一个客户端就可以了。
ConnectionOptions co = new ConnectionOptions();
co.Username = "Administrator";
co.Password = "";
System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\192.168.1.100\\root\\a", co);
1. 客户端 自动并持久运行(24 小时不间断),能够自动与服务器端连接,服务器端停止服务重新启动后能够再次与服务器连接
2. 服务器端 自动将需要传输的文件夹打包发送(后台压缩文件)
3. 客户端每个一阶段(比如说:每隔 24 小时)将原有文件的创建时间(主要是日期)发送给服务器端,服务器端比对接受到的时间与当前日期比较已决定是否传输覆盖原来客户端的文件
先验证文件修改时间,如果有差异再各自算成MD5值,进行比较, 如果不用则判定此文件已更新。大文件传输备份可采用分块传输,再用hash 校验完整性
参照一下NET USE /?