• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#实现服务器间文件同步C#实现服务器间文件同步

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
using System.IO;


        /// <summary>
        /// 远程登陆服务器
        /// </summary>
        /// <param name="remoteHost">远程服务器IP路径</param>
        /// <param name="userName"></param>
        /// <param name="passWord"></param>
        /// <returns>是否登陆成功</returns>
        public static bool ConnectServer(string remoteHost, string userName, string passWord)
        {
            bool Flag = false;
            Process proc = new Process();
            try
            {
                proc.StartInfo.FileName = "cmd.exe";
                proc.StartInfo.UseShellExecute = false;
                proc.StartInfo.RedirectStandardInput = true;
                proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.RedirectStandardError = true;
                proc.StartInfo.CreateNoWindow = true;
                proc.Start();
                string dosLine = "net use " + remoteHost + " " + passWord + " /user:" + userName;
                proc.StandardInput.WriteLine(dosLine);
                proc.StandardInput.WriteLine("exit");
                while (!proc.HasExited)
                {
                    proc.WaitForExit(1000);
                }
                proc.StandardError.Close();

                Flag = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                proc.Close();
                proc.Dispose();
            }

            return Flag;
        }
        //Connect(@"\\192.168.15.90", "administrator", "123")//连接服务器



        /// <summary>
        /// 递归-拷贝文件夹及文件
        /// </summary>
        /// <param name="sourceDirectoryUrl">源路径</param>
        /// <param name="copyDirectoryUrl">复制路径</param>
        private void CopyDirectory(string sourceDirectoryUrl, string copyDirectoryUrl)
        {
            try
            {
                string folderName = sourceDirectoryUrl.Substring(sourceDirectoryUrl.LastIndexOf("\\") + 1);

                string desfolderdir = copyDirectoryUrl + "\\" + folderName;

                if (copyDirectoryUrl.LastIndexOf("\\") == (copyDirectoryUrl.Length - 1))
                {
                    desfolderdir = copyDirectoryUrl + folderName;
                }

                string[] filenames = Directory.GetFileSystemEntries(sourceDirectoryUrl);

                foreach (string file in filenames)// 遍历所有的文件和目录
                {
                    if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
                    {

                        string currentdir = desfolderdir + "\\" + file.Substring(file.LastIndexOf("\\") + 1);
                        if (!Directory.Exists(currentdir))
                        {
                            Directory.CreateDirectory(currentdir);
                        }

                        CopyDirectory(file, desfolderdir);
                    }
                    else // 否则直接copy文件
                    {
                        string srcfileName = file.Substring(file.LastIndexOf("\\") + 1);

                        srcfileName = desfolderdir + "\\" + srcfileName;

                        if (!Directory.Exists(desfolderdir))
                        {
                            Directory.CreateDirectory(desfolderdir);
                        }

                        File.Copy(file, srcfileName, true);

                    }
                }//foreach 

                MessageBox.Show("文件同步成功!");

            }
            catch(Exception ex)
            {
                MessageBox.Show("文件同步失败! 错误提示:"+ex.Message);
            }
            finally
            {
                this.Dispose();
                this.Close();
            }

           

        }

        //文件同步按钮
        private void synchronization_Btn_Click(object sender, EventArgs e)
        {
            //连接远程服务器
            if (ConnectServer(@"\\192.168.0.150\文件同步测试区", "lgq0821", "123456"))
            {
                //同步文件
                CopyDirectory(@"F:\文件同步测试区\A服务器\工具包", @"\\192.168.0.150\文件同步测试区");
            }
            else
            {
                MessageBox.Show("身份验证失败!");
            }

        }
using System.IO;


        /// <summary>
        /// 远程登陆服务器
        /// </summary>
        /// <param name="remoteHost">远程服务器IP路径</param>
        /// <param name="userName"></param>
        /// <param name="passWord"></param>
        /// <returns>是否登陆成功</returns>
        public static bool ConnectServer(string remoteHost, string userName, string passWord)
        {
            bool Flag = false;
            Process proc = new Process();
            try
            {
                proc.StartInfo.FileName = "cmd.exe";
                proc.StartInfo.UseShellExecute = false;
                proc.StartInfo.RedirectStandardInput = true;
                proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.RedirectStandardError = true;
                proc.StartInfo.CreateNoWindow = true;
                proc.Start();
                string dosLine = "net use " + remoteHost + " " + passWord + " /user:" + userName;
                proc.StandardInput.WriteLine(dosLine);
                proc.StandardInput.WriteLine("exit");
                while (!proc.HasExited)
                {
                    proc.WaitForExit(1000);
                }
                proc.StandardError.Close();

                Flag = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                proc.Close();
                proc.Dispose();
            }

            return Flag;
        }
        //Connect(@"\\192.168.15.90", "administrator", "123")//连接服务器



        /// <summary>
        /// 递归-拷贝文件夹及文件
        /// </summary>
        /// <param name="sourceDirectoryUrl">源路径</param>
        /// <param name="copyDirectoryUrl">复制路径</param>
        private void CopyDirectory(string sourceDirectoryUrl, string copyDirectoryUrl)
        {
            try
            {
                string folderName = sourceDirectoryUrl.Substring(sourceDirectoryUrl.LastIndexOf("\\") + 1);

                string desfolderdir = copyDirectoryUrl + "\\" + folderName;

                if (copyDirectoryUrl.LastIndexOf("\\") == (copyDirectoryUrl.Length - 1))
                {
                    desfolderdir = copyDirectoryUrl + folderName;
                }

                string[] filenames = Directory.GetFileSystemEntries(sourceDirectoryUrl);

                foreach (string file in filenames)// 遍历所有的文件和目录
                {
                    if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
                    {

                        string currentdir = desfolderdir + "\\" + file.Substring(file.LastIndexOf("\\") + 1);
                        if (!Directory.Exists(currentdir))
                        {
                            Directory.CreateDirectory(currentdir);
                        }

                        CopyDirectory(file, desfolderdir);
                    }
                    else // 否则直接copy文件
                    {
                        string srcfileName = file.Substring(file.LastIndexOf("\\") + 1);

                        srcfileName = desfolderdir + "\\" + srcfileName;

                        if (!Directory.Exists(desfolderdir))
                        {
                            Directory.CreateDirectory(desfolderdir);
                        }

                        File.Copy(file, srcfileName, true);

                    }
                }//foreach 

                MessageBox.Show("文件同步成功!");

            }
            catch(Exception ex)
            {
                MessageBox.Show("文件同步失败! 错误提示:"+ex.Message);
            }
            finally
            {
                this.Dispose();
                this.Close();
            }

           

        }

        //文件同步按钮
        private void synchronization_Btn_Click(object sender, EventArgs e)
        {
            //连接远程服务器
            if (ConnectServer(@"\\192.168.0.150\文件同步测试区", "lgq0821", "123456"))
            {
                //同步文件
                CopyDirectory(@"F:\文件同步测试区\A服务器\工具包", @"\\192.168.0.150\文件同步测试区");
            }
            else
            {
                MessageBox.Show("身份验证失败!");
            }

        }

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
(C#)VS类视图和对象浏览器图标发布时间:2022-07-18
下一篇:
C#获取请求头中包含指定元素的值发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap