将C#目录复制到另一台服务器

3

在尝试使用robocopy作为SQL作业(不要问)将文件镜像到另一台服务器时,我们尝试了无数次但都失败了。

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

有人建议使用C#是最好的方法(对我来说也是一个很好的学习机会)。但是我的C#知识非常有限。

抱歉我忘了提到我们处于受限网络上,Robocopy是关于应用程序唯一的选择。FTP也被禁止了。

求助

谢谢

6个回答

2
如果我理解得正确,您需要将一个目录复制到某个服务器,但由于该目录的大小为50Gb,因此您只需要移动特定的文件。
如果是这种情况,那么我建议您看一下FileSystemWatcher。它基本上“监听”给定目录中对文件所做的任何更改,您可以使用这些操作来了解对哪个文件进行了什么操作(创建、编辑、删除)。

1

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


1
作为一种非 C# 的选择,我真的不确定它会有什么帮助,还有 rsync。我没有在 Windows 上使用过它,但我在 Linux 上使用它来做这样的事情。它可以作为守护进程/客户端运行,将工作分配给不同的机器。不过,它似乎只能通过 cygwin 在 Windows 上使用,而不能使用本机 API。

0

我不认为FTP是复制50GB目录的最佳选择。而且如果他不想每次复制文件,就需要自己编写同步逻辑。 - Wouter Janssens
1
他要求一個C#解決方案,這是我想到的。你能想到更好的使用C#的選擇嗎?我不知道C#是否一定是最好的解決方案,但我至少覺得我回答了他的問題。 - Nathan Taylor

0

抱歉,我忘了提到我们在受限制的网络上,Robocopy是唯一可用的应用程序。FTP也被禁止使用。


你应该将这个内容作为评论添加到你的问题下面,或者编辑到问题中 - 这样更容易找到!谢谢。 - Rup
但是用C#编写自己的应用程序也没问题吗? - Rup

0

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

编辑:

如果SyncToy用户界面不适合您,您可以使用底层框架(Microsoft Sync Framework)http://msdn.microsoft.com/en-us/sync/bb887623.aspx开发自己的用户界面或仅在后台使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接