我正在尝试将大量数据(数百个演出,包含各种大小的文件夹和文件)从 Windows 2008 服务器上的本地存储复制到另一台服务器上的 CIFS 共享。CIFS 共享空间只能通过 CIFS 访问,托管 CIFS 共享的系统不能以任何方式“登录”(通过 ssh 或 RDP 或类似方式)。必须维护所有权限,必须维护所有文件夹树和文件名,并且必须在合理的时间内完成复制。服务器不能长时间离线,无论使用什么方法/工具都必须是免费的。
Microsoft 的“RichCopy”实用程序似乎无法覆盖对其运行的帐户无权访问的文件夹的权限。但是,它提供了线程复制,由于大量非常小的文件,这对于快速复制数据似乎相当重要。
我阅读了其他几篇有类似问题的帖子,但大多数都与 Linux 环境有关,或者没有所有相同的要求。这里有很多细节,但我希望有人可以帮助我找到一个好的解决方案!
Windows 2008 版本的 Robocopy 正确处理权限,在需要覆盖 ACL 的限制时调用备份权限(通过 /B 或 /ZB 开关),该限制将拒绝运行副本的帐户直接访问文件\目录。它还支持多线程副本(通过 /MT 开关,默认为 8 最大为 128)。/Z(或/ZB)开关提供部分复制\恢复。
/B 选项需要可以调用备份权限的用户 - 管理员或 Backup Operators 组成员的用户可以调用此权限。您使用的帐户应满足源和目标的这些要求。
我注意到 Robocopy 的一个怪癖是 /B 或 /ZB 开关只有在您从源系统到目标运行 Robocopy 时才能可靠地工作,在拉模式下,您在目标系统上运行它我见过访问被拒绝错误。
我已经 非常成功地多次使用了TeraCopy 。我相信它正确地维护了所有权限。计算机是否在同一个域中?如果不是,则可能存在用户存在于一台计算机上而不是另一台计算机上的问题,但我不知道任何解决方案将如何解决该问题。
TeraCopy 还使用线程复制,因此它比内置的 Windows 复制方法快得多。如果您在复制过程中出于任何原因需要暂停或停止,它将从中断的地方继续。
至于复制您无权访问的文件,我不确定是否有任何实用程序能够做到这一点。在我的 Windows 2003 域中,有一个名为 Backup Operators 的内置安全组,描述为“成员可以绕过文件安全性来备份文件”。如果你是这个小组的成员,你也许可以做你想做的事。
我尝试按照上面 Helvick 的建议下载 Windows 2008 R2 评估版。我制作了一个虚拟机来运行操作系统,因为此时我无法将数据源服务器升级到 R2。
在此过程中我遇到了相当多的减速带,最终发现即使设置了 /B 和 /MIR 开关,Robocopy 只有在源(可能还有目标)服务器上运行时才能正确传输 ACL。如果在中间设备上运行,即使复制了数据,在目标端设置 ACL 也会失败。然后,Robocopy 将其有权访问的最深文件夹的 ACL 应用于树的该级别以下的所有数据,这是不可接受的。除此之外,通过中间服务器运行副本的开销太高,并且大大降低了复制速度。
但是,当在源服务器上运行时,Robocopy 的 2008 Vanilla 版本能够顺利传输和实施 ACL。幸运的是,我们还发现非线程 Robocopy 的速度应该足以进行这种数据迁移。但是,如果我可以将源服务器更新到 2008 R2,我毫不怀疑数据副本绝对会使用多线程进行飞行。
希望 MS 的男孩们很快会在 RichCopy 中添加一个“备份”模式,它将成为一个超级有用的小实用程序。