【问题标题】:C# Copy directory to another serverC# 将目录复制到另一台服务器
【发布时间】:2010-08-13 09:59:22
【问题描述】:

在尝试使用 robocopy 将文件作为 SQL 作业镜像到另一台服务器的尝试失败后(不要问)。

该作业必须每 15 分钟运行一次,并作为 SQL 作业运行以复制所有事务日志和备份文件,因此作业失败,它会在 SQL 中报告,然后由 MOM 检查。该作业不能每次都复制整个目录,因为它的大小约为 50gb,它只需要镜像目录,换句话说,删除源目录中不存在的文件并复制新的文件。

有人建议 c# 是最好的方法(对我来说它是一个很好的学习曲线)。但是我的 c# 知识非常少。

抱歉,我忘了提到我们在受限网络上,而 Robocopy 是唯一的选项来影响应用程序。 FTP也被禁止。

帮助

谢谢

【问题讨论】:

    标签: c# copy


    【解决方案1】:

    如果我理解你的话,你需要将一个目录复制到某个服务器上,但是,由于目录大小为 50Gb,你只需要移动特定的文件。

    如果是这样的话,我建议你看看FileSystemWatcher。它基本上“监听”对给定目录中文件所做的任何更改,您可以使用这些操作来了解对哪个文件执行了哪些操作(创建、编辑、删除)。

    【讨论】:

      【解决方案2】:

      您可以自己编写程序或安装微软的工具TyncToy这个工具允许您创建需要同步的文件夹对。第一次使用 GUI 设置文件夹对,但之后您可以从命令行调用该工具

      【讨论】:

        【解决方案3】:

        作为非 C# 选项 - 我不确定为什么会有帮助 - 还有 rsync。我没有在 Windows 上使用它,但我在 Linux 上使用它来做这种事情。它可以作为守护进程/客户端运行以在机器之间拆分工作。然而,它似乎只能通过 cygwin 在 Windows 上使用,而不是原生 API。

        【讨论】:

          【解决方案4】:

          听起来使用 FTP 传输文件是个不错的选择。

          这里是使用 C# 上传带有FtpWebRequest 的文件的教程:http://www.vcskicks.com/csharp_ftp_upload.php

          【讨论】:

          • 我认为 FTP 不是复制 50GB 目录的最佳选择。而如果他不想每次都复制文件就需要自己写同步逻辑了
          • 他要求提供 C# 解决方案,这就是我想到的。您能想到使用 C# 的更好选择吗?我不知道 C# 是否一定是最好的解决方案,但我觉得我至少回答了他的问题。
          【解决方案5】:

          抱歉,我忘了提到我们在受限网络上,而 Robocopy 是唯一的选项来影响应用程序。 FTP也被禁止。

          【讨论】:

          • 您应该将其添加为问题下方的评论或将其编辑到问题中 - 在那里更容易找到!谢谢。
          • ...但是用 C# 编写自己的应用程序可以吗?
          【解决方案6】:

          对于非编程类型的选项,Microsoft 的 SyncToy 可以很好地保持文件目录同步。关于如何处理更改(更新/删除)有不同的文件夹选项。我将它与任务计划程序结合使用,以便在一天中的预定时间运行。此外,我还在桌面上保留了一个快捷方式,以便在必要时“不按计划”运行它。

          编辑:

          如果 SyncToy UI 不是你的东西,你可以使用底层框架(Microsoft Sync Framework)http://msdn.microsoft.com/en-us/sync/bb887623.aspx 来开发你自己的 UI 或者只是在后台使用它。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-06-18
            • 2011-02-06
            • 2018-08-16
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多