資料保護**:**Windows Server 2008 R2 中的備份基礎
Jeffery Hicks
資料保護向來是 Windows 專業人員的重要工作。許多 IT 專業人員處理這項工作的方式,是使用磁帶或磁碟執行備份工作。規模較大的 IT 工作室通常有預算可以負擔功能更完整的協力廠商備份解決方案。而像我們這些沒什麼預算的人則仰賴 Microsoft 所提供的免費備份工具。
Microsoft 過去的免費工具是當今德高望重的 NTBackup。不過,該公用程式早已上了天國的資源回收筒。Windows Server 2008 提供新一組的備份工具,而我想要向您示範將它們與全新的 Windows Server 2008 R2 搭配使用有多麼簡單。即使您已經有協力廠商的備份工具,知道如何進行應急的備份可能蠻有幫助的。請注意,新的備份功能無法管理使用 NTBackup 建立的備份。
安裝基礎
首先,我們必須安裝備份功能,因為這個功能預設並不會安裝。使用伺服器管理員中的「新增功能精靈」,並新增 Windows Server Backup 功能 ([圖 1])。我要使用命令列工具子功能,如此一來就可以使用 Windows PowerShell,這我在本文稍後會詳細說明。您也可使用像 ServerManagerCMD.exe 這類的命令列工具來安裝此功能:C:\ servermanagercmd –install backup-features。
[圖 1] 使用「新增功能精靈」來安裝 Windows Server Backup 功能和命令列工具。
下一步是識別備份的位置。您可以將檔案備份到網路共用、本機磁碟區或是專用磁碟。您無法將資料備份到磁帶,不過隨著近來便宜的 USB 連接的存放裝置大為普及,這也不算是什麼大障礙。倒是有些因素您需要考量。
就索引、類別目錄和其他支援檔案而言,Windows 備份會產生一些可觀的額外負荷。這跟建立 .zip 檔案不一樣,別以為 100KB 的檔案只需要 100KB 的備份空間,它們需要的空間大很多。
當備份到網路共用時,您必須注意檔案層級的存取控制,以便保護備份的完整性和安全性。另外要注意的是,如果您將檔案備份到相同的檔案共用,會覆寫之前的備份。簡單的解決之道是為每個備份建立子資料夾。選擇將本機磁碟區作為備份目標的情況也是如此。
使用網路共用或磁碟區的優點之一,就是 Windows 備份會建立一個包含所有備份檔案的 .vhd 檔案。而當您指定備份位置時,Windows 備份會建立名為 WindowsImageBackup 的上層資料夾。在這個資料夾當中有每部電腦專用的備份資料夾。備份是依日期來分版本,您會看到一個名稱像 Backup 2009-12-14 172606 的資料夾。而在該資料夾內的是備份的檔案和 .vhd。您可以在 Windows 7 和 Windows Server 2008 R2 中掛接這個 .vhd。視您的備份和封存需求而定,可直接將此檔案移到長期的磁碟存放區或將它燒錄到 DVD。
最簡單又最快速的選擇是使用專用的連接磁碟。磁碟可以是內部連接或透過 USB 或 FireWire 外部連接。Microsoft 建議連接裝置要有足夠的可用空間,擁有您要備份的資料量的兩倍半空間。該磁碟機會經過格式化,而且從一般的管理工具看不到,不過您可以在 [磁碟管理] 中看到它。您可以使用最大 2TB 大小的磁碟。
建立備份工作
Windows 備份的目的是要提供一勞永逸的機制來保護伺服器。您可以啟用排定的工作來備份檔案和系統狀態,或是提供裸機復原。Microsoft 假設您會針對此目的安排一個排定的工作。我假設您使用 Windows 備份功能是因為預算有限,並且考慮到公用程式的限制而欲尋求最大保護。
安裝 Windows 備份功能之後,請展開 [伺服器管理員] 內的 [存放] 節點,並選取 [Windows Server Backup]。在 [動作] 窗格中,選取 [備份排程],這將啟動「備份排程精靈」。然後在 [快速入門] 畫面上按一下 [下一步]。
在步驟 2 中,指定您要備份的類型。試著進行完整的伺服器備份。您也可以建立自訂備份,並挑選像是選定檔案和系統狀態等項目。我稍後會向您示範如何進行快速的檔案備份,目前我假設您想要完整的伺服器保護。
在第三個步驟中,指定您要備份工作在何時執行。大多數時候,單次備份應該就綽綽有餘,不過您可以一天執行一次以上。如果您是備份重要的檔案,這可能是個不錯的選擇。
在步驟四中,決定要存放備份的位置。Microsoft 建議使用專用的硬碟。請記住,這個磁碟機將會重新經過格式化,而且不能用於其他用途。您也可以使用磁碟區或網路共用。請特別注意相關警告和限制。您可能會看到提醒您磁碟將重新格式化的警告。
如果您看不到所有的磁碟,按一下 [顯示所有可用磁碟] 按鈕以重新整理。每次選取新磁碟,您都會收到警告。選定之後,您會有機會確認您的備份設定。如果有設定不正確,請使用 [上一步] 按鈕返回修正錯誤。設定全都沒問題後,您應該會看到摘要畫面。您可以在隔天檢查 [Windows Server Backup] 節點查看結果或錯誤。
您也可以使用 Windows 備份來執行單次備份。在 [動作] 窗格中選取 [單次備份] 選項。您可以使用跟排定的工作一樣的設定,或是挑選全然不同的設定。如果您選擇後者,精靈會再次執行,而您可以輸入新參數。例如,您可能會想把檔案複製到網路共用。請記得,這會覆寫相同資料夾中任何現有的備份。備份會立即執行。如果這是一項您想要經常執行的備份工作,可利用從命令列或 Windows PowerShell 執行的指令碼解決方案。我稍後會講解該程序。
還原資料
Windows 備份使用時間戳記作為版本資訊。使用復原工作會啟動容易遵循的精靈。選取適當的備份來源。「復原精靈」會顯示所有可用備份的 datetime 控制項 (請參閱 [圖 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 檔案的使用確實提供一些誘人的可能性來克服這些限制。剩下的就要看您的聰明才智了。
最後,就跟使用任何備份軟體一樣,請確定您先在非實際執行的環境下練習還原程序。您可不希望在真正需要復原、老闆又在背後監督的時候學習這個程序。先熟悉這個程序,好在時機到的時候一展身手。
Jeffery Hicks身兼 MCSE、MCSA、MCT,他是 Microsoft MVP,同時也是作家、培訓講師和顧問。擁有 17 年經驗的 IT 老手,Hicks 擅長系統管理指令碼和自動化,他是活躍的部落格作者和研討會講師。他的近作是《Windows PowerShell 2.0:TFM》(Sapien Press,2009 年)。請透過他的網站與他連絡,網址是jdhitsolutions.com。