Bezpieczne usuwanie folderu Windows.old po wykonaniu Upgrade’u OS.

7 stycznia 2015 at 17:03

Jako ciekawy przypadek z niekoniecznie oczywistym rozwiązaniem – Upgrade In-Place do Windows 2012 R2:

– Z uwagi na zalecenia biznesowe, utrzymanie ciągłości działania, brak dodatkowych zasobów sprzętowych oraz inne zdarzenia i związki przyczynowo skutkowe zdecydowałeś się na wykonanie Upgrade’u systemu operacyjnego do wersji Windows Server 2012 R2 (względnie Windows Server 2012) w miejscu (In-Place).

– Upgrade In-Place przebiegł pomyślnie, jednak w krótkim czasie zaczęło brakować miejsca na dysku systemowym

Co robić? Jak żyć? :)

Zacznijmy od tego – skąd nagły brak miejsca? – Otóż po wykonaniu upgrade’u In-Place – system pozostawia folder „Windows.old”, w którym zawarte są ustawienia systemowe, profile użytkowników, dane aplikacji etc. służące do ewentualnego odtworzenia systemu. Tenże folder często zajmuje kilkanaście – kilkadziesiąt GB, a jeśli jesteśmy zdecydowani pozostać przy aktualnej wersji systemu Windows Server 2012 R2, to można ten folder śmiało usunąć, z tym że nie jest to aż takie proste…

1. Próba usunięcia folderu skończy się odmową odstępu. Przejęcie go na własnosc + nadanie sobie uprawnień oczywiście pozwoli rozwiązać ten problem, ale system mimo wszystko utrzymuje pewne powiązania pomiędzy wcześniejsza wersją systemu a tą, na której w danej chwili działamy i takie brutalne usuwanie folderu może skończyć się crash’em systemu – nie o to nam przecież chodzi :)

2. Można usunąć ten folder z poziomu „Oczyszczania dysku”, ale… najpierw trzeba doinstalować „User Experience” a przeważnie też nie o to nam chodzi. Serwer nie powinien być śmietnikiem i niekoniecznie potrzebne nam są „wodotryski” w GUI.

3. Zróbmy to więc jak należy:

  • Pobieramy narzędzie Junction.exe – kopiujemy je na dysk lokalny serwera, z którego chcemy się pozbyć folderu „Windows.old” ( np. do ścieżki „C:\Content”)
  • Uruchamiamy Powershella jako administrator – wykonujemy następujące polecenie:
Rys.1. Zebranie informacji o istniejących w systemie powiązaniach

Rys.1. Zebranie informacji o istniejących w systemie powiązaniach

  • Po zakończeniu pracy programu weryfikujemy zawartość pliku, do którego wcześniej przekierowaliśmy wyniki. Jego składania powinna być podobna do:
Rys.2. Zawartość pliku ze znalezionymi powiązaniami.

Rys.2. Zawartość pliku ze znalezionymi powiązaniami.

  • Kolejnym krokiem jest przygotowanie prostego skryptu, który z wykorzystaniem narzędzia Junction.exe usunie znalezione wcześniej powiązania zasobów, a następnie jego uruchmienie:
Rys.3. Usunięcie powiązań za pomocą skryptu

Rys.3. Usunięcie powiązań za pomocą skryptu

  • Po usunięciu powiązań można przejść do przejęcia własności folderu oraz nadania sobie uprawnień (można nadać wszystkim, można nadać administratorom, można nadać tylko sobie – jak kto woli – ważne żeby uprawnienia były):

Rys.4. Przejęcie folderu "windows.old" na własność

Rys.4. Przejęcie folderu „windows.old” na własność



Rys.5. Nadanie uprawnień do folderu "windows.old"

Rys.5. Nadanie uprawnień do folderu „windows.old”

  •  Ostatnim krokiem jest usunięcie całego folderu „Windows.old” i zwolnienie kilkunastu-kilkudziesięciu GB miejsca na dysku:
Rys.6. Usunięcie folderu "windows.old"

Rys.6. Usunięcie folderu „windows.old”

Zawartość uruchamianego skryptu:

 , gdzie C:\Content\junctions.txt jest miejscem składowania wyciągniętych wcześniej informacji o istniejących powiązaniach, natomiast C:\Content\junction.exe jest miejscem, gdzie lokalnie znajduje się pobrany program Junction.exe