Skonfiguruj system plików w Windows - 12 przydatnych wskazówek dla mniej początkujących (2009)


Poniższy tekst został wpierw opublikowany w serwisie benchmark.pl (część 1 i część 2)

 Spis treści
 
  1. Linki i sznurki na NTFS
  2. Alternatywne strumienie na NTFS
  3. Błędy na NTFS
  4. Kompresja plików na NTFS
  5. Czas ostatniego dostępu na NTFS
  6. Pliki z pustą zawartością na NTFS
  7. TRIM
  8. Nazwy plików i katalogów z uwzględnianiem małych i wielkich liter
  9. Szyfrowanie pliku wymiany
  10. Partycje w pliku
  11. Uprawnienia
  12. Co jest teraz otwarte ?

Redakcja benchmark.pl przygotowała artykuł "Skonfiguruj Windows 7 - 14 przydatnych wskazówek dla początkujących". W odpowiedzi na związany z nim konkurs przygotowałem swoją odpowiedź, czyli poradnik dotyczący partycji NTFS i obsługi dysków w Windows.

Większość moich uwag dotyczy systemów XP/Vista/7, niektóre są związane tylko z tym ostatnim.

Na tym prawdopodobnie zakończę tę tematykę. Przedstawione porady jej oczywiście nie wyczerpują. Mamy przecież chociażby śledzenie zmian (tzw. USN journal) albo transakcyjność (możliwe jest wykonanie szeregu operacji w systemie plików i "pokazanie" zmian aplikacjom po fizycznym wykonaniu ostatniej operacji). Obawiam się jednak, iż pisanie o nich mogłoby być interesujące tylko dla programistów - wydaje mi się natomiast, iż nie taki jest cel mini-recenzji.

Jeżeli któreś z moich wskazówek były przydatne/źle przedstawione, proszę o dodanie odpowiedniego komentarza - tylko w ten sposób będę mógł uzyskać pewność, iż jest sens pisać podobne poradniki/będę mógł poprawić jakość. Z góry dziękuję za taką pomoc, jak również za wystawione oceny.

Artykuł jest przewidziany raczej dla użytkowników mniej początkujących :)

Linki i sznurki na NTFS

Na partycjach NTFS możemy przechowywać nie tylko pliki i katalogi. Przykładem dodatkowych obiektów są odnośniki do prawdziwych plików czy katalogów:

  • połączenie (junction point) między katalogami na dysku lokalnym dostępne od czasów Windows 2000 - po wykasowaniu "prawdziwego" katalogu połączenie pozostaje na dysku, wykasowanie połączenia nie kasuje "prawdziwego" katalogu. W ten sposób jest obecnie tworzony katalog "Documents and Settings".
  • łącze stałe (hard link) między plikami na dysku lokalnym dostępne od czasu Windows 2000 - po jego utworzeniu na dysku zapisany będzie fizycznie jeden plik widoczny jako dwa pliki o tej samej wielkości, fizyczna zawartość pliku zostanie wykasowana po usunięciu obu
  • łącze symboliczne (symbolic link) między katalogami dostępne od czasu Windows Vista - po wykasowaniu "prawdziwego" katalogu połączenie pozostaje na dysku, wykasowanie połączenia nie kasuje "prawdziwego" katalogu. W ten sposób jest obecnie tworzony katalog "All Users" w "Documents and Settings".
  • łącze symboliczne (symbolic link) między plikami dostępne od czasu Windows Vista - po jego utworzeniu na dysku zapisany będzie fizycznie jeden plik widoczny jako dwa pliki (gdzie łącze będzie mieć wielkość 0 bajtów), po wykasowaniu "prawdziwego" pliku łącze pozostaje na dysku, wykasowanie łącza nie kasuje "prawdziwego" pliku

Poniżej przedstawiłem komendy służące do ich tworzenia (gdzie katalog/plik.txt to źródło, a link/link.txt to stworzone odnośniki)

Typ Łączone obiekty Komenda

połączenie
(junction point)

katalogi

mklink link katalog /j
(nie wymaga uprawnień administratora, nie działa w Windows XP)

junction link katalog
(bezpłatne narzędzie Microsoftu należy pobrać stąd, nie wymaga uprawnień administratora)

łącze stałe
(hard link)

pliki

mklink link.txt plik.txt /h
(nie wymaga uprawnień administratora, nie działa w Windows XP)

fsutil hardlink create link.txt plik.txt

łącze symboliczne
(symbolic link)

katalogi

mklink link katalog /d
(wymaga włączenia łączy na partycji, nie działa w Windows XP)

pliki

mklink link.txt plik.txt
(wymaga włączenia łączy na partycji, nie działa w Windows XP)

 

Obecność łączy symbolicznych na partycji możemy sprawdzać i kontrolować stosując fsutil, np.

fsutil behavior query SymlinkEvaluation

służy do sprawdzenia, czy opcja jest aktywna.

Aby sprawdzić, czy do danego pliku są dołączane łącza stałe (znów w Vista/7), należy z kolei wykonać

fsutil hardlink list plik.txt

Pewną bardzo specyficzną formą odnośników są nazwy plików w formacie 8 znaków + 3 znaki rozszerzenia (pozostałość zachowana w celu uzyskania zgodności z DOS - oprócz długiej nazwy pliku tworzona jest też krótka). Możemy zmienić wygenerowaną nazwę na inną stosując

fsutil file setshortname plik.txt krotka.txt

Potwierdzenie zmiany możemy uzyskać wykonując np. komendę

dir /x

Tworzenie skróconych nazw plików można kontrolować na poszczególnych partycjach stosując znowu komendę fsutil (wersja dla Vista/7 dla partycji c:):

  • fsutil behavior query Disable8dot3 c: w celu sprawdzenia
  • fsutil behavior set Disable8dot3 c: 1 w celu wyłączenia
  • fsutil behavior set Disable8dot3 c: 0 w celu włączenia

Z kolei w Windows XP ustawienie jest globalne (dotyczy wszystkich partycji) i należy użyć odpowiednio:

  • fsutil behavior query Disable8dot3
  • fsutil behavior set Disable8dot3 1
  • fsutil behavior set Disable8dot3 0

Możliwe jest również podłączanie partycji pod określone katalogi. Należy na dysku stworzyć standardowo katalog, a następnie użyć komendy mountvol. Pokaże ona szeregi ciągów znaków

\\?\Volume{numer}\

dla każdej partycji. Wybieramy jeden z nich, wykonujemy komendę

mountvol katalog \\?\Volume{numer}\

i od tej pory partycja jest już podłączona. Aby to odwołać, wystarczy wykonać

mountvol katalog /d

Do góry

Alternatywne strumienie na NTFS

Większość z nas jest przyzwyczajona, iż plik ma jedną zawartość. W przypadku NTFS tak nie jest - z jednym plikiem mogą być powiązane dane z wielu niezależnych od siebie tzw. alternatywnych strumieni. Żeby uzyskać do nich dostęp, należy podać nazwę pliku połączoną z dwukropkiem i nazwą strumienia. Przykładowo komenda

notepad plik.txt:strumien

będzie edytować strumień o nazwie "strumien" połączony z plikiem plik.txt.

Niestety Eksplorator nie pokaże poprawnie wielkości pliku na dysku (tj. wielkości podstawowej zawartości + wielkości alternatywnych strumieni). Aby je odczytać (również z konta bez podwyższonych uprawnień), należy użyć np. komendy

dir /r

(przełącznik /r dostępny jest w Windows Vista/7) albo darmowego narzędzia Streams Microsoftu (poniższa komenda pokaże informacje o pliku plik.txt):

streams plik.txt

Do góry

Błędy na NTFS

Załóżmy, że chcemy sprawdzić partycję c: pod względem błędów (np. mieliśmy zanik prądu). Standardowa opcja

chkdsk c: /f

może nie zadziałać (np. w tle działa program antywirusowy, który na to nie pozwala albo chcemy sprawdzić partycję systemową). Aby nakazać systemowi sprawdzenie partycji c: przy starcie, należy ustawić tzw. "bit zanieczyszczenia" przez wykonanie komendy

fsutil dirty set c:

Jeżeli pomimo jej zastosowania partycja nie została sprawdzona, należy wykonać

chkntfs /c c:

albo alternatywnie

chkntfs /d

(wtedy system będzie sprawdzał wszystkie dyski po ustawieniu na nich "bitu zanieczyszczenia").

Możemy skrócić czas oczekiwania na uruchomienie chkdsk przy starcie ze standardowych 10 sekund np. na 2 sekundy stosując

chkntfs /t:2

Począwszy od Visty mamy też opcje "samonaprawiania" - w przypadku wykrycia uszkodzeń jakiegoś pliku dostęp do niego jest blokowany, a system dokonuje poprawek. Funkcjonalność ta powinna być standardowo włączona. Aby to sprawdzić dla partycji c: należy wykonać

fsutil repair query c:

Włączenie uzyskamy przez

fsutil repair set c: 1

W obecnych systemach Microsoftu możemy również wymusić, aby system wygenerował "niebieski ekran", gdy wykryje błąd na danej partycji NTFS. Wykorzystujemy w tym celu przynajmniej dwie komendy:

fsutil behavior set BugCheckOnCorrupt 1
fsutil repair set c: 0x10

(drugą komendę powtarzamy po restarcie systemu dla wszystkich partycji, dla których ma to działać)

Do góry

Kompresja plików na NTFS

Pliki i katalogi na dyskach NTFS mogą być kompresowane, co wydłuża czas dostępu do nich, ale zmniejsza zajmowane przez nie miejsce (plik jest zapisany w postaci spakowanej na dysku, przed dostarczeniem go aplikacjom jego zawartość jest rozpakowywana przez system operacyjny). I tak komenda

compact /s /a /c *.*

wymusza kompresję wszystkich plików (również z atrybutem ukrytym i systemowym) w katalogu bieżącym i podkatalogach, zaś

compact /s /a /u *.*

to wycofuje. Możliwe jest wyłączenie funkcji kompresji na wszystkich partycjach

fsutil behavior set DisableCompression 1

Do góry

Czas ostatniego dostępu na NTFS

NTFS oprócz czasu modyfikacji pliku/katalogu przechowuje również informację o czasie ostatniego dostępu do niego. Aby go zobaczyć, można użyć np. komendy

dir /t:a

albo dodać odpowiednią kolumnę w Eksploratorze Windows. Opcja jest globalna i musi być uaktywniona (jej włączenie może nieznacznie spowolnić system):

fsutil behavior set DisableLastAccess 0

Do góry

Pliki z pustą zawartością na NTFS

Tym razem dwie ciekawostki dotyczące plików z bajtami o kodzie 0x00. Żeby "wyczyścić" w ten sposób dowolny plik, należy użyć komendy

fsutil file setzerodata offset=0 length=100 plik.txt

gdzie zamiast 0 i 100 wstawiamy odpowiednio numer pierwszego czyszczonego bajtu i długość obszaru.

Możemy zaoszczędzić miejsce na dysku w przypadku tzw. plików rozszedzonych (ich pusta część nie jest tam fizycznie zapisywana). Wpierw zaznaczamy plik jako wykorzystujący tę funkcję (działa w Windows Vista/7):

fsutil sparse setflag plik.txt

Następnie informujemy system, że określony obszar (w przykładzie 100 bajtów począwszy od pierwszego bajtu w pliku) może być wyczyszczony (zostanie wypełniony bajtami o kodzie 0x00, miejsce poprzednio zajmowane przez nie na dysku zostaną zwolnione)

fsutil sparse setrange plik.txt 0 100

Do góry

TRIM

Windows 7 obsługuje komendę TRIM. O ile jest ona zaimplementowana w firmware dysku SSD, pozwala w określonych przypadkach na zwiększenie prędkości jego działania (więcej można przeczytać np. tutaj).

Sprawdzenie, czy jest włączona w systemie, uzyskamy przez wykonanie

fsutil behavior query DisableDeleteNotify

(wartość 0 oznacza, że działa). Możemy ją włączyć komendą

fsutil behavior set DisableDeleteNotify 0

Nazwy plików i katalogów z uwzględnianiem małych i wielkich liter

Przyzwyczailiśmy się, że w Windows wielkość liter w nazwach plików i katalogów nie ma znaczenia (w przeciwieństwie np. do Linuxa, gdzie pliki "PLIK" i "plik" to dwa różne zbiory). W tym punkcie chciałbym zmienić to przeświadczenie i pokazać, jak uzyskać efekt widoczny na obrazku:

Opiszę to na przykładzie Windows 7 Ultimate:

  1. Przechodzimy do Panelu Sterowania
  2. Klikamy na ikonę Programy i funkcje
  3. Klikamy na odnośnik Włącz albo wyłącz funkcje systemu Windows
  4. Instalujemy Podsystem aplikacji systemu Unix
  5. Z menu Start klikamy na odnośnik Wszystkie Programy\Subsystem for UNIX-based Applications\Download utilities for Subsystem for UNIX-based Applications
  6. Pobieramy 32-bitową lub 64-bitową wersję (oczywiście bezpłatną :))
  7. Instalujemy pobrane narzędzia (wybieramy "Change the default behavior to case sensitive" w trakcie instalacji)
  8. Z menu Start klikamy na Wszystkie Programy\Subsystem for UNIX-based Applications\Korn Shell
  9. Przechodzimy do odpowiedniego katalogu komendami cd .. i cd nazwa_katalogu
  10. Możemy teraz stworzyć kolejne pliki np. komendą cp (przykład użycia: cp PLIK.txt plik.txt) oraz kolejne katalogi np. komendą mkdir (przykład użycia: mkdir KATALOG)

Cała sztuczka polega na tym, iż partycje NTFS są "wrażliwe" na wielkość znaków w nazwach, standardowo w Windows brak jest natomiast narzędzi, które potrafią tworzyć odpowiednie pliki/katalogi. Wykonując opisane wyżej komendy zainstalowaliśmy w "okienkach" kolejny subsystem (tzw. Interix lub SUA, czyli Subsystem for Unix-based Applications) zawierający odpowiednie programy. Jego różne wersje były dostępne również dla wcześniejszych Windows (np. 2003 Server), ma on w sobie dużo typowych unixowych narzędzi. Więcej można poczytać np. tutaj.

Należy pamiętać o tym, iż próba działania na takich plikach/katalogach przez aplikacje windowsowe (chociażby Notatnik) może skończyć się nieprzywidywalnie (np. wybierany będzie inny plik niż tego będziemy chcieć).

Do góry

Szyfrowanie pliku wymiany

Obecne wersje Windows (Vista/7) mają opcję szyfrowania pliku wymiany. Wystarczy wykonać:

fsutil behavior set EncryptPagingFile 1

Analogicznie opcja zostanie wyłączona po użyciu komendy

fsutil behavior set EncryptPagingFile 0

Do góry

Partycje w pliku

Można mówić o powrocie do korzeni - starsi Czytelnicy na pewno pamiętają takie programy jak Stacker/DoubleSpace czy DriveSpace. Pozwalały one stworzyć pliki, które były następnie "montowane" jako oddzielne dyski.

Windows 2008/7 zawierają podobne możliwości - tym razem użytym formatem pliku jest VHD wykorzystywany przez Virtual PC. Co więcej - ich droższe edycje (np. Windows 7 Ultimate) nie mają ograniczeń licencyjnych i pozwalają na takim "dysku" zainstalować sam system (przykład procedury jest podany np. tutaj). Należy jednak pamiętać o tym, iż pewne funkcje mogą być wtedy niedostępne (chociażby hibernacja).

Możemy zamontować plik VHD z poziomu okna Zarządzanie komputerem, ale też używając komendy diskpart. Wystarczy wykonać dwa polecenia:

select vdisk file=plik.vhd
attach vdisk

Z kolei zabezpieczenie takiego dysku przed zapisem uzyskamy wykonując w diskpart:

select volume 4
attributes volume set readonly

(w przykładzie wybraliśmy wolumin numer 4 - aby dobrać właściwy numer, wystarczy wykonać list volume). Takie zabezpieczanie możemy również wykonać dla części partycji, alternatywą jest tutaj oczywiście ustawienie (czy raczej usunięcie) odpowiednich praw dostępu np. z poziomu Eksploratora.

Na cofnięcie tej blokady pozwolą:

select volume 4
attributes volume clear readonly

Kolejną opcją jest przypisanie wybranej litery:

select volume 4
assign letter=Z

Możliwe jest zapisanie wymienionych powyżeń poleceń w pliku i wywołanie ich przez diskpart w trybie wsadowym:

diskpart /s plik

Dodanie takiego skrótu do Autostartu może spowodować, iż Windows będzie automatycznie montował dyski również przy starcie.

Do góry

Uprawnienia

Zdarza się, że nawet będąc administratorem systemu, nie mamy dostępu do jakiegoś katalogu (przykładem jest np. System Volume Information). W takich wypadkach najczęściej wystarcza oczywiście wybranie właściwości katalogu w Eksploratorze i dodanie pełnych praw dostępu w zakładce Zabezpieczenia. Czasem jednak jest z tym problem (np. w Windows XP Home). Jak sobie z tym poradzić ?

Wyświetlamy nazwę zalogowanego użytkownika korzystając z polecenia

whoami

Następnie dodajemy sobie uprawnienia z linii komend wykonując

cacls "katalog" /E /G nazwa_uzytkownika:F

(zamiast katalog wpisujemy w cudzysłowie nazwę katalogu, zamiast nazwa_uzytkownika ciąg znaków podanych przez whoami)

Uprawnienia możemy usunąć wykonując

cacls "katalog" /E /R nazwa_uzytkownika

Do góry

Co jest teraz otwarte ?

Załóżmy, że chcielibyśmy zobaczyć, które pliki są otwarte przez konkretny proces. Pozwala na to sam system Windows. Wpierw należy włączyć tę opcję:

openfiles /local ON

Następnie trzeba zrestartować system i użyć

openfiles

Minusem jest to, iż komenda nie pokazuje zawsze pełnej ścieżki do plików. Plusem, iż mamy również od razu informację o plikach otwartych z innych komputerów.

Na koniec można opcję wyłączyć:

openfiles /local OFF

Alternatywą może być użycie np. bezpłatnego Process Explorera od Microsoftu.

Do góry