在 Windows 上:為了複製系統而進行 robocopy 是否安全?
讓我先介紹一下背景。在 Linux 系統上,我經常依賴這樣一個事實,即只要我可以將所有文件從一個硬碟驅動器轉移到另一個硬碟驅動器,並且只要我修復了引導載入程序,我就會得到一個相同的、可引導的、完全功能係統。同樣的事情適用於備份和恢復(不需要特殊的系統狀態備份,只需要文件)……即使 MySQL有時也可以恢復,即使它在備份時沒有被凍結
在 Windows 上,我從來沒有在文件級別複製系統的運氣。我總是需要一個工具,例如 VMWare Converter、Ghost、diXML 等。它們基於將驅動器的映像作為一個整體。起初我認為這主要是因為 Windows 以特殊/神奇的方式進行系統資料庫,我沒有質疑它(它有效)。直到今天。我意識到這種想法很愚蠢,實際上 Windows 也只是文件的集合。因此,作為測試,我使用了一個離線的 Windows 2003 伺服器驅動器,我將文件複製到一個空白硬碟驅動器,使驅動器處於活動狀態,並且……它執行良好!
還是做到了?為什麼我會有這種非理性的恐懼,因為它不像我對 Ghost 所期望的那樣逐字複製,它會失敗?我應該害怕嗎?為什麼這麼容易?AD 伺服器有什麼不同嗎?有沒有這種方法會失敗的情況?
如果逐個文件複製是要走的路,為什麼當我嘗試對 VSS 做同樣的事情時(將複製的影子 C: 驅動器作為 S: 驅動器公開)同樣的方法失敗了。更具體地說,我有一個引導系統一直到登錄螢幕。它甚至接受了我的密碼,但隨後立即註銷了我的使用者,並且在 GUI 中沒有出現任何錯誤。我什至嘗試在複製之前關閉所有不可停止的服務……結果相同。
順便說一句,我
robocopy /E /SEC
用於所有這些複製操作我只是用這些方法來找麻煩嗎?我知道 Ghost 等已被證明.. 那麼為什麼要重新發明輪子呢?……我明白了……但作為一名專業人士,我想知道為什麼事情會以他們的方式運作。這就是為什麼弄清楚這一點對我來說很重要。(更不用說在我從未進行過系統狀態備份的系統上進行裸機恢復的罕見可能性)
AD 伺服器是不同的。域控制器在 C:\Windows\SYSVOL\sysvol 目錄上具有指向 C:\Windows\SYSVOL\domain 目錄的目錄 連接:
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 )