在Windows上:为了克隆系统进行robocopy安全吗?


16

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

在Windows上,我从未在文件级别完成过克隆系统的运气。我一直需要像VMWare Converter,Ghost,diXML等这样的工具。它们基于整个驱动器的映像。起初,我认为这主要是由于Windows进行注册表的特殊/神奇方式而引起的,我并没有对此提出质疑(它起作用了)。直到今天。我意识到这种想法是愚蠢的,实际上Windows只是文件的集合。因此,作为测试,我使用了一个脱机的Windows 2003 Server驱动器,然后将文件复制到空白硬盘驱动器上,使该驱动器处于活动状态。

还是呢?为什么我会如此非理性地担心它会失败,因为它不是像Ghost那样的逐字复制?我应该害怕吗?为什么这么容易?AD服务器有什么不同吗?在某些情况下此方法会失败吗?

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

顺便说一下,我robocopy /E /SEC用于所有这些复制操作

我只是通过使用这些方法来寻找麻烦吗?我知道Ghost等已被证明..那为什么要重新发明轮子呢?...我得到了所有...但是作为专业人士,我想知道事情为什么以它们的方式运作。这就是为什么对我来说很重要。(更不用说在我从未进行过系统状态备份的系统上进行裸机还原的极少数可能性)


2
解决域控制器的特殊情况:请注意,没有安全的方法来克隆域控制器,因为这样做会破坏Active Directory复制。我不清楚细节,但是基本上每个DC都有一个唯一的标识符,这对于保持AD更改顺序的一致性至关重要。如果两个DC尝试使用相同的标识符,则整个系统会在尖叫的堆中崩溃。
哈里·约翰斯顿

此外,请注意将克隆的服务器提升为域控制器是不安全的。如果Windows实例将是DC实例,则必须通过Windows安装程序进行安装。未能遵循此预防措施会导致多种非常奇怪的症状。
哈里·约翰斯顿

Answers:


4

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]

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

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

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

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

如果您想知道这些链接如何转移到复制的磁盘上,可以在快照前后进行快照,然后使用Windiff或Notepad ++比较文件。

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

dir C:\ /aL /s  >> junctions.txt  

您可以在文件中使用以下脚本来获取位置链接的输出(例如,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
)

你是对的。连接点是主要问题。通过对此进行更多的研究,不仅是使用结点的AD服务器。Windows 7也大量使用它们。Robocopy不知道如何复制结点“ Robocopy可能会遇到结点……这可能是使用MOUNTVOL命令创建的卷安装点,也可能是使用LINKD命令创建的目录链接。Robocopy通过创建标准目录来处理源中的结点在目标中使用相同的名称,因为可能无法在目标中复制Junction。” ...是否有文件复制工具可以?
ixnaum 2012年

这里是ROBOCOPY无法在Windows拷贝路口7.更详细 FASTCOPY可以推测复制路口...会尝试,未来
ixnaum

1
另一个潜在问题是Windows 7(可能也是2008),在“应用程序数据”的C:\ users \ <user> \ AppData \ Local \下的每个用户配置文件文件夹中都有一个循环连接。如果您使用具有“备份”权限的帐户运行Robocopy,或更改文件夹权限,则有可能在该联结上陷入无限循环。
Greg Askew

7

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

复制实时文件系统总是一个挑战。假定卷影复制应公开静态文件系统,但我认为您仍在冒险。(我无法告诉您VSS克隆卷发生了什么情况,导致您无法登录。无法看到失败的克隆,这确实非常难以诊断)。如果可能的话,我总是建议您克隆脱机的系统。

假设您正在复制一个完全静态的文件系统并能够获取所有文件,则您唯一需要关注的是:

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

Microsoft bootsect.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并不打算让您执行基于文件级基于副本的系统克隆。是的,您可以做到,但是如果失败了,您可以保留这些碎片。


但是ntfsclone和ImageX是基于图像的,就像Ghost一样...逐个文件复制怎么办?
ixnaum 2012年

1
ImageX不会生成磁盘的块级副本,它肯定是基于文件的。(当然,它会生成一个“图像文件”,但是它比iso文件更像是一个zip文件。)ImageX是实现此目的的唯一方法。
哈里·约翰斯顿

4

从中复制活动文件系统的问题VSS在于,现有Windows实例可能会在其注册表中已经具有新磁盘的签名。启动副本时,从中启动分区的签名与注册表匹配,并以D:E:而不是C:应该挂载。

您可以通过挂载注册表文件并更新来解决HKLM\SYSTEM\MountedDevices 此问题,方法是在复制之后但重新启动之前执行此操作。您只想删除\DosDevices\C:条目并将新驱动器的条目更改为C:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.