robocopy /MIR 的替代品

robocopy /MIR 的替代品

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

VPN 连接仅通过 12Mbps ADSL 进行,虽然有很多文件和目录,但实际更改的文件数量非常少。

虽然带宽可能是一个问题,但我看到了如下输出的结果。robocopy /MIR 运行了 5 个小时,但实际执行复制只用了 30 分钟。

有没有人对如何改善这一点有什么建议。5 个小时现在太慢了,如果我们找不到加快速度的方法,那么我们将不得不想出一个完全不同的解决方案。

            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

答案1

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

如果在成功备份后重置存档文件属性会怎么样?

attrib -a /s *

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

robocopy source destination /mir /a

我还没有测试过,但我相信它应该更快,因为 Robocopy 需要处理的文件要少得多。

另一个想法是在远程服务器上运行计划作业(如果可能的话)以压缩整个目录结构,然后只需通过 VPN 复制生成的 zip 文件即可。 XML 将很好地压缩,并且在高延迟链接上复制单个文件将更加高效。

答案2

我使用 rsync for Windows 通过宽带连接进行复制。它据称是一个增量复制系统,只复制每个文件的变化,而 robocopy 则复制整个文件,只要文件有一点变化。(说实话,我有时想知道它是否真的这样做)

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

您可以使用 Windows Server 中的文件复制功能,对每个文件夹使用 DFS 路径并将本地和远程文件夹设置为目标。

答案3

我赞同 Charles Gargent 对 rsync 的建议。我使用 Cygwin 通过 SSH 使用 rsync。如果我没记错的话,有一个不依赖于 Cygwin 的可执行文件可用。

rsync 相对于 robocopy 的一个巨大优势是,它会在远程端生成一个 rsync 代理来执行该端的处理。远程代理可以检查远程文件系统,而不必将所有文件详细信息带回本地机器进行处理。这比 robocopy 快得多,这可能是您延迟 5 小时的原因。

您还可以通过 ssh 使用 rsync 压缩,这可以进一步加快速度。

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

答案4

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

ROBOCOPY 源目标/MIR

ROBOCOPY 源目标/COPY/M

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

Robocopy 源代码不太可能进一步调整,但我希望作者能为 /MIR 提供一个“this”,以便一次性重置存档位(例如 /MIR:A)。这对于在新系统上启动备份最为重要,但无论如何,这表明 robocopy /MIR 不是“完整”备份解决方案。

相关内容