Ntbackup是大家熟悉的在Windows 2003 Server系统中用来进行系统备份的工具,Windows Server 2008和Windows Server 2008 R2中用Windows Server backup代替了Ntbackup。那么Windows Server backup在进行系统状态备份时,究竟是如何决定哪些文件时系统状态文件的呢?
当完成一个系统状态备份之后,我们可以通过检查C:\Windows\logs\WindowsServerBackup中的备份日志来得到本系统状态文件的完整列表。可以想象,在域控制器上的系统状态文件列表和Web服务器上的列表是不同的。那系统又是如何得知这些不同的呢?
要回答以上的问题,我们先要理解Snapshot。Snapshot即所谓的系统快照工具,对于服务器来说,利用其可以轻松地创建、加载、恢复系统快照,以实现服务器系统的备份和还原。Windows Server backup并不是对系统当前磁盘的物理文件进行备份,而是请操作系统先创建一个系统状态的Snapshot。我们可以把这个Snapshot看作是一个虚拟的磁盘。Windows Server backup仅仅对这个虚拟磁盘作备份操作。
实际上, Windows Server backup服务本身并不十分理解系统状态究竟应该包括那些具体文件。当操作系统创建Snapshot时 ,它会查询当前系统中安装的VSS Writers。如果某个Writer的VSS_USAGE_TYPE属性设置为VSS_UT_BOOTABLESYSTEMSTATE 或VSS_UT_SYSTEMSERVICE。这个Writers将负责提供他认为需要在系统状态中备份的文件内容。
typedef enum VSS_USAGE_TYPE {
VSS_UT_UNDEFINED = 0,
VSS_UT_BOOTABLESYSTEMSTATE = 1,
VSS_UT_SYSTEMSERVICE = 2,
VSS_UT_USERDATA = 3,
VSS_UT_OTHER = 4
} ;
在Windows server 2008和Windows Server 2008 R2系统中,系统状态备份的绝大多数内容由System Writer提供。System Writer运行于Cryptographic Services (CryptSvc) 的系统服务中。一般情况下,他用于枚举以下的系统文件:
-
所有系统安装的静态文件. 它包括所有被Windows Resource Protection (WRP)保护的文件.
-
所有Windows Side-by-Side (WinSxS) 目录的内容
-
所有即插即用的驱动程序
-
所有运行在用户模式的服务以及非即插即用的驱动程序
-
所有CryptSvc 所拥有的目录文件(catalog)
了解以上的工作机制,我们再回到之前的一个问题:有没有办法改变或排除一些系统状态信息的的内容?答案是肯定的。但这不是Windows Server backup需要完成的工作,而更多是依赖于提供系统状态信息的各个VSS Writers。如果某些文件是由一个特定的Write枚举出来的而这个Write又提供相应的接口来改变它所枚举的内容,我们就可以改变系统备份具体内容。例如,对于System Writer,我们可以通过ExcludedBinaryPaths的注册表来排出一些文件 (在Windows Server 2008
R2 SP1中已经包含了这个设置。对于Windows Server 2008和Windows Server 2008 R2,需要安装升级包http://support.microsoft.com/?id=980794才能使用这个设置)。
希望以上的信息对大家了解Windows Server 2008服务器的系统状态备份有所帮助。
本博文仅供参考,微软公司对其内容不作任何责任担保或权利赋予。