数据保护始终是 Windows 专业人员的关键任务。运行备份作业将数据备份至磁带或磁盘,是许多 IT 专业人员处理此项任务的方式。大型 IT 商店通常都有预算,可以承担功能更全面的第三方备份解决方案。而其他人则依赖于 Microsoft 提供的免费备份工具。
过去的 Microsoft 免费工具已在已经成为古老的 NTBackup。但是,该工具已经进入了天空中那个巨大的回收站。Windows Server 2008 提供了一组新的备份工具,我将向您展示在新的 Windows Server 2008 R2 中,它们使用起来是如何简单方便。即使您拥有第三方备份工具,您仍然会发现它有助于理解如何执行快速备份和更新备份。请注意,新的备份功能不能管理用 NTBackup 创建的备份。
安装要点
首先,我们需要安装备份功能,因为默认情况下不会安装此功能。使用服务器管理器中的“添加功能向导”,并添加 Windows Server 备份功能(图 1)。我将使用命令行工具子功能,以便使用 Windows PowerShell - 我将在本文后面详细介绍此功能。我还可以使用 ServerManagerCMD.exe 等命令行工具来安装该功能:C:\ servermanagercmd –install backup-features。
图 1 使用“添加功能向导”安装 Windows Server 备份功能和命令行工具。
下一步是找出备份的位置。您可以备份到网络共享、本地卷或专用磁盘。您不能将数据备份到磁带上,但是考虑到价格便宜的 USB 存储设备不断增多并且使用广泛,目前这不是一个很大的缺陷。但是,您需要考虑一些因素。
Windows 备份在索引、目录和其他支持文件方面会产生相当大的开销。这与创建 .zip 文件不同。切勿假设 100KB 的文件只需要 100KB 的备份空间 - 它们需要的空间要大得多。
在备份到网络共享时,您必须小心处理文件级访问控制,以便保护备份的完整性和安全性。还需要注意,如果您将文件备份到相同的网络共享,以前的备份将被覆盖。简单的解决方法是为每个备份创建一个子文件夹。这同样也适用于您选择本地卷作为备份目标的情况。
使用网络共享或卷的一项优势是 Windows 备份将创建一个 .vhd 文件来包含所有备份的文件。当您指定备份位置时,Windows 备份将创建名为 WindowsImageBackup 的顶级文件夹。在此文件夹中,将为每个计算机创建一个备份文件夹。备份按日期建立版本;因此您将看到类似如下的文件夹名称:Backup 2009-12-14 172606。该文件夹中包含备份的文件和 .vhd。您可以将此 .vhd 装入到 Windows 7 和 Windows Server 2008 R2 中。根据您的备份和存档要求,您可能只需要将此文件移到长期磁盘存储设备上或将其刻录到 DVD 上。
最简单、最快速的方法是使用专用磁盘。该磁盘可以是内部连接的,也可以是通过 USB 或 FireWire 外部连接的。Microsoft 建议,该磁盘上的可用空间应该不少于您要备份的数据的 2.5 倍。该驱动器将被格式化,并从普通管理工具中隐藏,但是会显示在“磁盘管理”工具中。您可以使用容量高达 2TB 的磁盘。
创建备份作业
Windows 备份旨在提供一站式设置来保护服务器。您可以启用计划任务,以便备份文件和系统状态,或者提供裸机还原。Microsoft 假设您会有一个计划任务用于此目的。而我假设您由于预算有限而正在使用 Windows 备份功能,并且力图在该工具的限制下寻求最大程度的保护。
当您安装 Windows 备份功能后,在服务器管理器中展开“存储”节点,并选择“Windows Server Backup”。在“操作”窗格中,选择“备份计划”,从而启动“备份计划向导”。然后,在“入门”屏幕上单击“下一步”。
在第二步中,指定您需要执行何种备份。请尝试执行完整的服务器备份。您也可以创建自定义备份并选取某些项目,例如选定文件或系统状态。以后我将向您展示如何执行快速文件备份,但是现在我假设您希望执行完整的服务器备份。
在第三步中,指定您希望备份任务在何时运行。大多数时候,一次备份就足够了,但是您也可以每天运行多次备份。如果您要备份关键文件,这可能是一种好选择。
在第四步中,决定将备份存储在何处。Microsoft 建议使用专用的硬盘。请记住,此驱动器将被重新格式化,并且不再可用。您也可以使用卷或网络共享。请密切注意警告和限制。您可能会看到一条警告,提醒您该磁盘将被重新格式化。
如果您没有看到所有磁盘,请单击“显示所有可用磁盘”按钮进行刷新。当您选择一个新磁盘时,不会显示警告。选择后,您有一次机会来确认备份设置。如果有任何问题,请使用“上一步”按钮返回并更正错误。如果一切顺利,您将看到汇总屏幕。第二天,您就可以检查 Windows Server Backup 节点,了解结果或错误。
您也可以使用 Windows 备份来执行一次性备份。在“操作”窗格中,选择“立即备份”选项。您可以使用与计划作业相同的设置,也可以选择完全不同的设置。如果您选择了后者,向导将再次运行,以便您输入新参数。例如,您可能希望将文件复制到网络共享。请记住,同一文件夹中的任何现有备份都将被覆盖。备份将立即执行。如果有一项您需要经常执行的备份任务,则您可能希望利用从命令行或 Windows PowerShell 执行脚本化解决方案。我将在后面介绍该过程。
还原数据
Windows 备份使用时间戳作为版本信息。使用“恢复”任务将启动一个很容易处理的向导。选择合适的备份来源。恢复向导将显示所有可用备份的日期时间控件
(请参见图 2)。选择合适的备份。根据备份的类型,您可能只有一项选择。
图 2 从恢复向导中选择可用的备份。
接着,选择您希望恢复何种数据。如果您选择“文件和文件夹”,则可以突出显示您要恢复的文件。遗憾的是,几乎不可能从多个目录中选择文件。您可以轻松恢复所有内容,或者从一个目录中恢复选定的文件。在您设置备份作业时,一定要注意这一点。
当您恢复文件时,需要指定目标文件夹,该文件夹可以是原始文件夹,也可以是其他位置。您也可以控制如果存在当前版本,则在您恢复当前文件时将如何处理。您可以创建一个副本,以便获得两个版本;您可以覆盖现有版本;也可以在检测到现有版本时跳过恢复操作。恢复过程会立即执行。
使用 WBADMIN.EXE
如果您安装了命令备份工具,就会有更多选项。打开命令提示服,然后查看 WBADMIN.EXE 的帮助。您可以使用该工具来设置计划备份,但我认为用 GUI 来执行同样的任务要容易得多。您会发现此工具更适用于创建一次性备份作业。运行以下命令来查看语法帮助:
C:\> wbadmin start backup /?
本文没有足够的篇幅来解释所有选项,但是可以展示一下如何使用此命令行工具,定期将文件备份到网络共享:
@echo off
::Demo-Backup.bat
::demonstration script using WBADMIN.EXE on a Windows Server 2008 R2 Server
rem backup share UNC
set backupshare=\\mycompany-dc01\backup
rem files and folders to include
set include=c:\scripts,c:\files
rem define date time variables for building the folder name
set m=%date:~4,2%
set d=%date:~7,2%
set y=%date:~10,4%
set h=%time:~0,2%
set min=%time:~3,2%
set sec=%time:~6,2%
rem defining a new folder like \\mycompany-dc01\backup\RESEARCHDC\12152009_132532
set newfolder=%backupshare%\%computername%\%m%%d%%y%_%h%%min%%sec%
echo Creating %newfolder%
mkdir %newfolder%
rem run the backup
echo Backing up %include% to %newfolder%
wbadmin start backup -backuptarget:%newfolder% -include:%include% -quiet
rem Clear variables
set backupshare=
set include=
set m=
set d=
set y=
set h=
set min=
set sec=
set newfolder=
由于我不希望覆盖任何现有的备份,我将创建一个新的文件夹,该文件夹在其名称中使用了计算机名称和日期/时间戳。批处理文件中包含处理此项任务的代码。脚本的主要功能是调用 WBADMIN.EXE,在指定的共享处创建备份。同样,如果您想调整此步骤,请查看语法帮助。此脚本让我喜欢的地方在于,我可以使用任务计划程序来设置自己的计划任务。因此,即使备份向导仅允许我创建一个计划任务,我仍然可以使用 WBADMIN.EXE 根据需要创建尽可能多的任务。我也可以使用此工具创建系统状态备份。
若要查看执行了哪些备份作业,请运行此命令:C:\> wbadmin get versions。
请密切注意版本标识符,因为您必须有此值,才能使用 WBADMIN 来恢复文件(当然您可以轻松地使用恢复向导)。
使用 Windows PowerShell 进行备份
另一种命令行方法是使用 Windows 备份 PowerShell cmdlet。若要访问它们,您需要先加载 Windows 备份管理单元:
PS C:\> add-pssnapin Windows.ServerBackup
若要查看其中包含哪些 cmdlet,请使用 Get-Command:
PS C:\> get-command -pssnapin windows.serverbackup
遗憾的是,创建备份作业是一个多步骤过程。尽管您可以在命令提示符中交互式输入必要的命令,但是我认为您会发现使用脚本的方法会更简单一些。下面是我最初的批处理文件的 Windows PowerShell 版本:
#requires -version 2.0
#requires -pssnapin Windows.ServerBackup
#Demo-WBBackup.ps1
$policy = New-WBPolicy
$files=new-WBFileSpec c:\scripts,c:\files
Add-wbFileSpec -policy $policy -filespec $files
$backdir=("\\mycompany-dc01\backup\{0}\{1:MMddyyyy_hhmmss}" -f $env:computername,(get-date))
write-host "Creating $backdir" -foregroundcolor Green
mkdir $backdir | out-null
$backupLocation = New-WBBackupTarget -network $backdir
Add-WBBackupTarget -Policy $policy -Target $backupLocation
write-host "Backing up $files to $backdir" -foregroundcolor Green
$policy
Start-WBBackup -Policy $policy
Windows PowerShell cmdlet 是以创建和执行策略为基础的。该策略包括:要包含或排除的文件或卷,要将文件备份到何处,以及各种各样的选项。您还可以创建系统状态和裸机恢复作业。在我的演示中,我只是备份了一些目录。Start-WBBackup cmdlet 用于执行备份任务。
当您查看 Windows 备份的 cmdlet 列表时,您会注意到一个明显的疏漏:没有用于恢复数据的 cmdlet。我想出现这种情况的原因是假设您不需要自动执行此步骤,尽管您可以使用 WBADMIN.EXE 来执行此步骤。将来可能会增加 cmdlet。同时,您可以使用恢复向导或 WBADMIN.EXE 来恢复文件。
现在轮到您了
当您尝试使用这些工具时,我确信您会认识到 Windows 备份工具为您提供的功能远不止我所说的这些。您还会需要评估这些功能与您的整体备份策略以及您可能拥有的任何业务连续性计划的契合程度。就某些方面而言,免费的 Windows 备份解决方案有很大的限制,但是编写脚本的方式以及对 .vhd 文件的使用,提供了一些可克服这些限制的诱人可能性。您只需要具备一定的灵活性即可。
最后,正如任何备份软件一样,请务必在非生产设置中练习恢复过程。您一定不希望在实际执行恢复操作时学习该过程,而让您的老板愤怒地卡您的脖子。请务必熟悉该过程,以便在时机成熟时,您不再需要充英雄。