在 Windows 上:执行 robocopy 以克隆系统是否安全?

ixn*_*aum 19 windows ghost robocopy vss clone

让我先介绍一下背景。在 Linux 系统上,我经常依赖这样一个事实:只要我可以将所有文件从一个硬盘驱动器转移到另一个硬盘驱动器,并且只要我修复了引导加载程序,我就会得到一个相同的、可引导的、完全相同的功能系统。同样的事情适用于备份和恢复(不需要特殊的系统状态备份,只需要文件)......即使 MySQL有时也可以恢复,即使它在备份时没有被冻结

在 Windows 上,我从来没有通过在文件级别克隆系统而走运。我总是需要一个工具,如 VMWare Converter、Ghost、diXML 等。它们基于将驱动器的图像作为一个整体。起初我认为这主要是因为 Windows 注册表的特殊/神奇方式,我没有质疑它(它有效)。直到今天。我意识到这种想法很愚蠢,实际上Windows也只是一个文件的集合。因此,作为测试,我使用了一个脱机的 Windows 2003 服务器驱动器,我将文件复制到一个空白的硬盘驱动器,使驱动器处于活动状态,并且 .. 运行完美!

还是做到了?为什么我会因为它不像我对 Ghost 所期望的那样逐字复制而有这种非理性的恐惧,它会失败?我应该害怕吗?为什么这么容易?AD服务器有什么不同吗?有没有这种方法会失败的情况?

如果逐个文件复制是可行的方法,为什么当我尝试使用 VSS(将影子复制的 C: 驱动器暴露为 S: 驱动器)做同样的事情时,同样的方法失败了。更具体地说,我有一个引导系统一直到登录屏幕。它甚至接受了我的密码,但随后立即注销了我的用户,GUI 中没有错误。我什至尝试在复制之前关闭所有不可停止的服务......相同的结果。

顺便说一句,我正在使用robocopy /E /SEC所有这些复制操作

我使用这些方法只是在寻找麻烦吗?我知道 Ghost 等已经被证明了……那为什么要重新发明轮子呢?......我明白了......但作为一名专业人士,我想知道为什么事情会这样运作。这就是为什么弄清楚这一点对我来说很重要。(更不用说在我从未进行过系统状态备份的系统上进行裸机还原的罕见可能性)

Eva*_*son 7

我已经执行ntfsclone了 Windows 2000 和 Windows XP 的文件级克隆(使用 Linux NTFS 工具实用程序)。我还没有尝试ntfsclone过 Windows Vista 或更新版本,但我预计不会出现任何问题。我ImageX经常在 Windows XP 和 Windows 7 上使用 Microsoft 的文件级克隆工具 ,并且在那里也没有问题。我通常不克隆服务器计算机,但我希望ImageX能与服务器操作系统一起正常工作。

复制实时文件系统始终是一个挑战。卷影复制应该暴露一个静止的文件系统,但我认为你仍然在冒险。(我不能告诉你你的 VSS 克隆卷发生了什么,不允许你登录。如果没有能够看到失败的克隆,它真的很难诊断)。如果可能,我总是建议您克隆脱机的系统。

假设您正在复制一个完全静止的文件系统并且能够获取所有文件,您唯一关心的是:

  • 拥有良好的主引导记录 (MBR) 和分区引导记录 (PBR)
  • 有一个好的引导程序

Microsoftbootsect.exe可用于为较旧的基于 NTLDR 的 Windows NT 版本(NT 3.5 到 Windows Server 2003)和基于 BOOTMGR 的版本(Windows Vista 和更新版本)编写良好的 MBR 和 PBR。您的 Windows 2003 克隆必须是具有 NT 5.2 格式 PBR 的磁盘(因为它已启动)。

NTLDR 引导加载程序将被复制到文件级副本中,这解释了为什么您的 Windows 2003 副本没有问题。可以使用该bcdboot.exe实用程序(包含在基于 BOOTMGR 的 Windows 安装介质中)安装 BOOTMGR 引导加载程序。

我不会以这种方式克隆 Active Directory 域控制器 (DC) 计算机。您不想在与原始 DC 相同的网络上启动 DC 的克隆,因为这是完全不受支持且可能是计划外的情况。

编辑(现在我在真正的计算机上有几分钟的时间):

我上面描述的工具ImageXntfsclone,是文件系统级别的克隆工具(如果不是在原始扇区模式下运行,那么 Ghost 也是如此)。它们解释 NTFS 文件系统,而不是逐扇区复制。这两种工具都不会出现连接点或硬链接的问题,例如ROBOCOPY(不带/SL参数)和XCOPY(带任何参数)会。

通常,Microsoft 不打算让您执行基于文件级副本的系统克隆。是的,你可以做到,但如果它坏了,你可以保留碎片。


Gre*_*kew 5

AD 服务器是不同的。域控制器有一个目录连接在C:\ WINDOWS \ SYSVOL \ SYSVOL目录指向C:\ WINDOWS \ SYSVOL \域目录:

 Directory of C:\Windows\SYSVOL\sysvol

04/13/2011  01:22 PM    <DIR>          .
04/13/2011  01:22 PM    <DIR>          ..
04/13/2011  01:22 PM    <JUNCTION>     domainName.acme.com [C:\Windows\SYSVOL\domain]
Run Code Online (Sandbox Code Playgroud)

几乎任何类型的手动复制操作都会导致 SYSVOL 由于连接中断而无法联机。尽管准确地说,这可能发生在正常的还原场景中,因此始终建议在必要时检查并重新创建 SYSVOL 结点。

说到链接,任何 Windows 2008/Vista/Windows 7 系统都可能在 %SYSTEMROOT%\System32 文件夹中为二进制文件提供数千个链接。这些链接目标实际上位于 %SYSTEMROOT%\Winsxs 文件夹中。

我还没有确认这一点,但 Robocopy 可能会复制目标而不是链接。这将解释开关 /SL :: “复制符号链接与目标”。

系统可能看起来运行正常,但是当需要执行系统更新活动时会发生什么,这需要维护链接目标通常所在的文件?也许它会重新创建它们,但这将是值得测试的东西。

如果您对这些链接如何传输到复制的磁盘感到好奇,您可以拍摄前后快照,然后使用 Windiff 或 Notepad++ 比较文件。

您可以使用以下命令获取驱动器上连接点的输出:

dir C:\ /aL /s  >> junctions.txt  
Run Code Online (Sandbox Code Playgroud)

您可以在文件中使用以下脚本来获取某个位置(例如 systemroot)的链接输出:

for /r %systemroot% %%i in (*.exe,*.dll) do (
  echo Checking file: %%i >> file.txt
  fsutil.exe hardlink list "%%i" >> file.txt 2>&1
  echo . >> file.txt
)
Run Code Online (Sandbox Code Playgroud)