W systemie Windows: czy bezpieczne jest wykonanie robocopy w celu sklonowania systemu?


16

Zacznę od przedstawienia trochę tła. W systemach Linux często polegam na tym, że tak długo, jak mogę przenieść wszystkie pliki z jednego dysku twardego na drugi i dopóki naprawię moduł ładujący, pozostanie mi identyczny, bootowalny, w pełni system funkcjonalny. To samo działa w przypadku kopii zapasowych i przywracania (nie jest wymagana specjalna kopia zapasowa stanu systemu, tylko pliki) ... nawet MySQL można czasem odzyskać, nawet jeśli nie został zawieszony w momencie tworzenia kopii zapasowej

W systemie Windows nigdy nie miałem szczęścia do klonowania systemu, robiąc to na poziomie pliku. Zawsze potrzebuję narzędzia, takiego jak VMWare Converter, Ghost, diXML itp. Są one oparte na pobieraniu obrazu dysku jako całości. Na początku założyłem, że dzieje się tak głównie ze względu na specjalny / magiczny sposób, w jaki system Windows rejestruje się i nie kwestionowałem tego (działało). Do dzisiaj. Uświadomiłem sobie, że tego rodzaju myślenie było głupie i że w rzeczywistości Windows to także zbiór plików. W ramach testu wziąłem dysk z serwerem Windows 2003 w trybie offline, skopiowałem pliki na pusty dysk twardy, uaktywniłem dysk i ... działał idealnie!

A może to? Dlaczego mam ten irracjonalny strach, że upadnie tylko dlatego, że nie jest to dosłowny klon, jakiego oczekiwałbym od Ducha? Czy powinienem się bać? Dlaczego to było takie proste? Czy serwery AD są inne? Czy istnieją przypadki, w których ta metoda zawiedzie?

Jeśli najlepszym rozwiązaniem jest kopiowanie plik po pliku, dlaczego jest tak, że kiedy próbowałem zrobić to samo z VSS (ujawnianie dysku C: skopiowanego jako dysk S: dysk), to samo podejście nie powiodło się. Mówiąc dokładniej, mam system rozruchowy aż do ekranu logowania. Zaakceptował nawet moje hasło, ale natychmiast wylogował mojego użytkownika bez błędu w GUI. Próbowałem nawet wyłączyć wszystkie usługi, których nie można zatrzymać przed skopiowaniem ... tego samego rezultatu.

Nawiasem mówiąc, używam robocopy /E /SECdo wszystkich tych operacji kopiowania

Czy szukam kłopotów przy użyciu tych metod? Wiem, że Ghost itp. Są sprawdzone ... więc po co wymyślać koło? ... rozumiem to wszystko ... ale jako profesjonalista chcę wiedzieć, dlaczego te rzeczy działają tak, jak działają. Dlatego tak ważne jest, abym to rozgryzł. (nie wspominając o rzadkiej możliwości przywrócenia systemu od zera w systemie, w którym nigdy nie miałem kopii zapasowej stanu systemu)


2
Rozwiązanie konkretnego przypadku kontrolerów domeny: należy pamiętać, że nie ma bezpiecznego sposobu klonowania kontrolera domeny, ponieważ powoduje to zakłócenia replikacji usługi Active Directory. Nie jestem pewien szczegółów, ale w zasadzie każdy DC ma unikalny identyfikator, który jest niezbędny do zachowania spójności sekwencji zmian AD. Jeśli dwa kontrolery domeny spróbują użyć tego samego identyfikatora, cały system upadnie na krzyczącą stertę.
Harry Johnston,

Ponadto zauważ, że awans sklonowanego serwera na kontrolerze domeny nie jest bezpieczny. Jeśli wystąpienie systemu Windows będzie kontrolerem domeny, należy je zainstalować za pomocą Instalatora systemu Windows. Nieprzestrzeganie tego środka ostrożności może powodować szereg bardzo dziwnych objawów.
Harry Johnston,

Odpowiedzi:


4

Serwery AD są różne. Kontroler domeny ma złącze katalogu w katalogu C: \ Windows \ SYSVOL \ sysvol, które wskazuje katalog 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]

Prawie każdy rodzaj ręcznej operacji kopiowania spowodowałby, że SYSVOL nie przejdzie w tryb online z powodu przerwanego połączenia. Chociaż może to być dokładne, może się to zdarzyć w normalnych scenariuszach przywracania, dlatego zawsze zaleca się sprawdzenie i ponowne utworzenie złącza SYSVOL, jeśli to konieczne.

Mówiąc o linkach, każdy system Windows 2008 / Vista / Windows 7 może mieć tysiące linków w folderze% SYSTEMROOT% \ System32 dla plików binarnych. Te cele linków faktycznie znajdują się w folderze% SYSTEMROOT% \ Winsxs.

Nie potwierdziłem tego, ale Robocopy może skopiować cel zamiast linku. Co wyjaśniałoby zmianę / SL :: „skopiuj dowiązania symboliczne do celu”.

Możliwe, że system może wydawać się działać poprawnie, ale co by się stało, gdy nadszedł czas na wykonanie aktualizacji systemu, która musi utrzymywać pliki, w których zwykle znajdują się elementy docelowe łącza? Być może odtworzy je, ale byłoby to coś, co warto przetestować.

Jeśli jesteś ciekawy, w jaki sposób te linki zostały przeniesione na skopiowany dysk, możesz zrobić migawkę przed i po, a następnie porównać pliki za pomocą Windiff lub Notepad ++.

Możesz użyć następującego polecenia, aby uzyskać dane wyjściowe punktów połączenia na dysku:

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

Możesz użyć następującego skryptu w pliku, aby uzyskać wyjście linków do lokalizacji (na przykład 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
)

Masz rację. Głównymi problemami są punkty połączeń. Po przeprowadzeniu dalszych badań na ten temat, nie tylko serwery AD używają skrzyżowań. System Windows 7 również ich używa. Robocopy nie wie, jak skopiować skrzyżowania. „Robocopy może napotkać Złącza ... Mogą to być Punkty Montażu Wolumenu utworzone za pomocą polecenia MOUNTVOL lub Łącza do katalogu utworzone za pomocą polecenia LINKD. Robocopy obsługuje połączenia w źródle poprzez utworzenie normalnego katalogu ta sama nazwa w miejscu docelowym, ponieważ replikacja skrzyżowania w miejscu docelowym może być niemożliwa. ” ... Czy istnieje narzędzie do kopiowania plików?
ixnaum

tutaj jest więcej szczegółów na temat tego, że robocopy nie kopiuje skrzyżowań w systemie Windows 7. Fastcopy może rzekomo kopiować skrzyżowania ... spróbuje tego później
ixnaum

1
Kolejny potencjalny problem, Windows 7 (prawdopodobnie również 2008) ma okrągłe złącze w każdym folderze profilu użytkownika w folderze C: \ users \ <użytkownik> \ AppData \ Local \ dla „Dane aplikacji”. Jeśli uruchomisz Robocopy przy użyciu konta z uprawnieniem Kopia zapasowa lub zmienisz uprawnienia do folderu, możesz przejść do nieskończonej pętli na tym połączeniu.
Greg Askew

7

Przeprowadziłem klonowanie na poziomie plików (za pomocą narzędzia Linux NTFS Tools ntfsclone) systemów Windows 2000 i Windows XP. Nie próbowałem ntfsclonez Windows Vista ani nowszymi wersjami, ale nie spodziewałbym się żadnych problemów. Używam narzędzia do klonowania na poziomie plików Microsoftu ImageX, dość regularnie z Windows XP i Windows 7, i nie mam też żadnych problemów. Zasadniczo nie klonuję komputerów z serwerami, ale spodziewałbym ImageXsię , że będę działał dobrze z systemami operacyjnymi serwera.

Kopiowanie systemu plików na żywo zawsze będzie wyzwaniem. Volume Shadow Copy ma ujawnić cichy system plików, ale myślę, że nadal ryzykujesz. (Nie mogę powiedzieć, co się stało z woluminem sklonowanym przez VSS, który nie pozwoliłby ci się zalogować. Bez możliwości zobaczenia nieudanego klonowania jest to naprawdę bardzo trudne do zdiagnozowania). Zawsze radziłbym ci klonować systemy offline, jeśli to możliwe.

Zakładając, że kopiujesz całkowicie spoczynkowy system plików i jesteś w stanie uzyskać wszystkie pliki, twoje jedyne obawy to:

  • Posiadanie dobrego głównego rekordu rozruchowego (MBR) i rekordu rozruchowego partycji (PBR)
  • Posiadanie dobrego programu ładującego

Microsoft bootsect.exemoże być używany do pisania dobrych MBR i PBR dla starszych wersji Windows NT opartych na NTLDR (NT 3.5 do Windows Server 2003) i wersji opartych na BOOTMGR (Windows Vista i nowsze). Twój klon systemu Windows 2003 musiał znajdować się na dysku, na którym był PBR w formacie NT 5.2 (od momentu uruchomienia).

Program ładujący NTLDR zostanie skopiowany w kopii na poziomie pliku, co wyjaśnia, dlaczego kopia systemu Windows 2003 działała bez problemu. Program ładujący BOOTMGR można zainstalować za pomocą bcdboot.exenarzędzia (zawartego na nośniku instalacyjnym Windows opartym na BOOTMGR).

W ten sposób nie klonowałbym komputerów kontrolera domeny Active Directory (DC). Nie chcesz uruchamiać klonu kontrolera domeny w tej samej sieci z oryginalnym kontrolerem domeny, ponieważ jest to całkowicie nieobsługiwany i prawdopodobnie nieplanowany scenariusz.

Edytuj (teraz, gdy mam kilka minut na prawdziwym komputerze):

Narzędzia, które opisałem powyżej, ImageXi ntfsclonesą narzędziami do klonowania na poziomie systemu plików (podobnie jak Ghost, jeśli nie jest uruchomiony w trybie surowego sektora). Interpretują system plików NTFS zamiast kopiować sektor po sektorze. Oba te narzędzia nie będą miały problemów z punktami połączenia lub linkami twardymi, takimi jak ROBOCOPY(bez /SLargumentu) i XCOPY(z dowolnymi argumentami).

Ogólnie rzecz biorąc, Microsoft nie planuje wykonywania klonowania systemów na poziomie plików. Tak, możesz to zrobić, ale jeśli się zepsuje, zatrzymaj kawałki.


Ale ntfsclone i ImageX są oparte na obrazach podobnie jak Ghost ... a co z kopiowaniem plik po pliku?
ixnaum

1
ImageX nie generuje kopii dysku na poziomie bloku, jest zdecydowanie oparty na plikach. (Oczywiście generuje „plik obrazu”, ale jest to bardziej plik zip niż, powiedzmy, iso). ImageX jest jedynym i jedynym sposobem na wsparcie tego.
Harry Johnston,

4

Problem z kopiowaniem aktywnego systemu plików VSSpolega na tym, że istniejąca instancja Windows prawdopodobnie będzie miała podpis nowego dysku już w rejestrze. Podczas uruchamiania kopii podpis partycji, z której się uruchamia, jest dopasowywany do rejestru i montowany jako D:lub E:raczej niż C:powinien.

Możesz to rozwiązać, instalując plik rejestru i aktualizując. HKLM\SYSTEM\MountedDevices Zrób to po kopii, ale przed ponownym uruchomieniem. Po prostu chcesz usunąć \DosDevices\C:wpis i zmienić wpis dla nowego dysku na C:.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.