Intereting Posts

Robocopy / MIR的替代品

我们运行了许多networking应用程序,这些应用程序以小的xml文件存储大量本地数据。 我们备份/恢复策略的一部分是通过VPN向托pipe中心生成文件系统的本地镜像

VPN连接只能通过一个12Mbps的ADSL,而有很多文件和目录,实际改变的文件数量非常小。

虽然带宽可能是一个问题,但我看到了下面的输出结果。 Robocopy / MIR花费了5个小时才能运行,只有30分钟才能完成拷贝。

有没有人有任何build议,以改善这种方式。 现在5个小时的速度太慢了,如果我们找不到加快速度的方法,那么我们将不得不提出一个完全不同的解决scheme。

Total Copied Skipped Mismatch FAILED Extras Dirs : 17625 6618 11007 0 0 0 Files : 1112430 1223 1111207 0 0 0 Bytes : 57.451 g 192.25 m 57.263 g 0 0 0 Times : 5:01:23 0:35:55 0:00:00 4:25:27 Speed : 93509 Bytes/sec. Speed : 5.350 MegaBytes/min. Ended : Fri Apr 16 05:54:23 2010 

Robocopy必须先枚举所有本地和远程文件,以确定哪些文件需要传输。 这很可能是花时间。

如果在成功备份后重置“归档文件”属性,情况如何:

 attrib -a /s * 

然后每次写入文件时,存档位将自动设置。 下一次,您可以告诉Robocopy只存档A标志设置的文件:

 robocopy source destination /mir /a 

我没有testing过这个,但是我相信它应该更快,因为Robocopy将会有更less的文件需要处理。

另一个想法是在远程服务器上运行一个预定的作业(如果可能的话),压缩整个目录结构,然后将结果压缩文件复制到VPN上。 XML将很好地压缩,复制单个文件将比高延迟链接更有效率。

我使用Windows的rsync通过宽带连接进行复制。 它被认为是一个三angular洲复制系统,只复制每个文件的变化,而robocopy复制整个文件,如果它已经改变了一个位。 (有时候我是否怀疑它是否真的这样做)

您也可以使用robocopy / mon:x开关并使其永久运行。 当robocopy在文件系统中看到x的变化时,这将运行。 如果运行非常频繁,那么只会发生less量的更改。

您可以使用Windows Server中的文件复制function,为每个文件夹使用DFSpath,并将本地和远程文件夹设置为目标。

我第二个查尔斯加斯特的rsync的build议。 我用Cygwin通过SSH使用rsync。 如果我没有记错,有一个非cygwin-depenedent可用的可执行文件。

rsync与robocopy相比有一个巨大的好处,那就是rsync代理将在远程端产生,从而完成这个过程。 远程代理可以检查远程文件系统,而不必将所有文件的详细信息带回本地机器进行处理。 这比robocopy快得多,可能是你的5小时延迟。

你也可以在ssh上使用rsync进行压缩,这可以进一步提高速度。

但是请注意,Cygwin文件系统ACL和Windows ACL不能很好地结合在一起。 如果你需要一个完美的ACL副本,rsync可能不适合你。 我必须编写一个脚本来运行xcacls来复制文件后“清理”我的文件的权限。

只是使用attrib -a / s来解决robocopy的不足之处。 如果您要使用此解决scheme,请在运行完全备份之前运行该解决scheme。 即。 完整备份通常需要大量时间,并且其中一些文件可能在备份时间和后来运行attrib之间发生变化,这可能意味着在后面的副本中缺less这些更改。

关于这个解决scheme的第二个注意事项是,只有当你的副本没有被过滤时,它才能工作。 如果过滤备份或robocopy进程以避免临时文件和类似垃圾,那么确保attrib只查看复制进程所查看的文件并不容易。 那是; 你正在改变你实际上没有复制的文件的属性 – 这不是一个好主意。

令人着迷的是,robocopy似乎无法创build一个传统的全备份,或者不能一次运行。 你可以通过运行两次来完成。 一旦复制一切,然后再次用/ M复制,这次实际上复位存档位。 什么是PITA。

XYZ关于使用ATTRIB的缺点的评论是有帮助的,但是仅仅使用robocopy / COPY / M命令跟随robocopy / MIR命令来select性地重置存档位是不够的。 Robocopy不会重置该位,除非它实际上复制该文件,并且(默认情况下)它不会复制“相同”文件。 因此,

ROBOCOPY来源目的地/ MIR

ROBOCOPY源目的地/ COPY / M

将保持源上许多文件的存档位不变。 (我希望这不是真的。)

Robocopy源代码不太可能会进一步调整,但是我希望作者能够在/ MIR中提供一个“this”来重置归档位(例如/ MIR:A)。 这对启动新系统的备份最为重要,但无论如何,这表明robocopy / MIR不是“完整的”备份解决scheme。