Ile miejsca zajmują puste katalogi?
W systemach plików Windows i NTFS mówi się „0 bajtów”, co jest niemożliwe.
Ile naprawdę zajmuje katalog? Czy to zależy od systemu plików lub systemu operacyjnego?
filesystems
disk-space
ShadowHero
źródło
źródło
Odpowiedzi:
Technicznie to, co pokazuje okno Właściwości, to zawartość folderu, który, jeśli pusty, zajmuje 0 bajtów na dowolnym dysku.
Twoje pytanie dotyczy przestrzeni zajmowanej przez strukturę folderów w systemie plików, który jest oczywiście od niego zależny. W systemie FAT32 jedyne rzeczy, które musisz przechowywać, to niektóre flagi (ukryte, zarchiwizowane) oraz nazwa i ścieżka. W NTFS musisz również przechowywać uprawnienia i kilka innych rzeczy. Podsumowując, ta przestrzeń jest prawie znikoma.
Miejsce zajmowane przez pustą strukturę katalogów zależy od nazwy i ścieżki folderu. Jako przykład załóżmy, że umieściłeś wszystkie foldery na dysku głównym (powiedzmy C :) i użyjesz wszystkich 26 znaków alfabetycznych; z 1 miliardem unikatowych nazw możesz mieć log_26 (1.000.000.000) = około 7 (6.3065) znaków długości folderu. 7 Bajtów * 1.000.000.000 to w przybliżeniu 7 GB miejsca.
Jest to minimum oparte tylko na ilości nazw przestrzeni, które muszą przyjąć dowolną strukturę. Jak zostanie pokazane, systemy plików przechowują o wiele więcej informacji poza nazwą pliku w swojej strukturze plików.
Wydaje mi się, że mam około 1 miliona folderów i plików na wszystkich dyskach, więc w rzeczywistości wartość nie jest nawet osiągana. Nie zapominaj, że jest to bardzo przybliżona ocena.
Obecnie najczęściej używane systemy plików można uznać (prawdopodobnie) za FAT (tablicę alokacji plików) i NTFS (system plików nowej technologii). FAT, jaki znamy, jest używany od 1996 roku, kiedy system Windows 95 został wydany z FAT32. Chociaż został zastąpiony innymi, bardziej odpornymi systemami plików, takimi jak NFTS (Windows), HFS + (OSX) lub ext3 (Linux), nadal jest szeroko stosowany w urządzeniach przenośnych lub na kartach pamięci lub dyskach flash, ponieważ jest dobrze obsługiwany przez większość systemów operacyjnych a przede wszystkim jest to proste.
Teraz ważne. Pliki i katalogi na partycji FAT, nawet jeśli nic w nich nie mają, mają nazwę, lokalizację, określone atrybuty itp. Przechowywane w strefie zwanej tablicą katalogów .
Stół Katalog jest specjalnym plikiem (to znaczy jest ukryte przed regularnym stosowaniu, tak że tylko aplikacje systemowe oraz niektóre mogą bezpośrednio uzyskać do niego dostęp). Reprezentuje katalog (inaczej folder), a każdy plik lub folder w nim przechowywany ma 32-bajtową pozycję w tabeli. Ponieważ tabela katalogów jest plikiem, zajmuje ona co najmniej jeden klaster (tzn. Skrzynki o zadanym rozmiarze na dysku, gdzie mieści się tylko jeden plik (lub jego część)).
Tak więc każdy folder lub katalog na nowoczesnym dysku (> 512 MB) ma co najmniej 4 KB, aby przechowywać tabelę (źródło) . Oznacza to jednak, że możesz przechowywać 128 różnych plików (4 * 1024 B / 32 B = 128) w tym samym folderze, a narzut związany z przechowywaniem rekordów jest nadal taki sam jak 4KB.
Piggybacking w pierwszym przykładzie oznaczałoby, że miliard folderów miałby narzut 32 GB, a nie mniej więcej szacowane 7 GB, które obliczyłem. Te 32 GB przechowują nie tylko krótką nazwę (8 znaków ASCII), ale także atrybuty, flagi, daty dostępu, tworzenia i modyfikacji oraz inne atrybuty starszego typu.
Zakładając, że przeczytałeś to wszystko, może pojawić się pytanie: „Cóż, to wszystko dobrze i dobrze, ale jak przechowywane są długie nazwy, takie jak Wabbajack, a nawet nazwy mieszane, takie jak e4d909c290d0fb1ca068ffaddf22cbd0 ?”
Microsoft w Windows 95 postanowił dodać tę funkcję, aby poprawić wrażenia użytkownika. Aby uniknąć złamania systemu „prawie standardowego”, zastosowali staranne obejście o nazwie VFAT (Virtual FAT). Zasadniczo, aby zmieścić długą nazwę pliku w pliku, dodatkowe rekordy zostały zapisane przed faktycznym rekordem pliku (z pewnymi specjalnymi atrybutami, które nie były widoczne we wcześniejszych systemach). System długich nazw plików pozwala na maksymalną długość 255 znaków UTF-16 (Unicode) (źródło) (źródło) .
Jeśli zmienisz pierwszy przykład tak, że każdy folder ma 9 znaków, wówczas narzut zwiększy się dwukrotnie z 32 GB do 64 GB, ponieważ trzeba będzie zapisać jeszcze jeden rekord, aby zapisać długą nazwę.
Zgodnie z artykułem Wikipedii na temat NTFS wszystkie uprawnienia są przechowywane w głównej tabeli plików. Widocznie przestrzeń jest widoczna przez Defragmentator dysków, jak pokazano tutaj .
Rozmiar, jaki zajmuje rekord MFT z folderu lub pliku, został opisany tutaj :
Tak więc w NTFS foldery zajmują co najmniej 1 KB miejsca, chyba że mają bardzo długie listy argumentów i uprawnień; w tym momencie rekord MFT zajmuje dodatkowy klaster na partycji, którego rozmiar zależy od tego, jak został sformatowany, chociaż dla ponad 2 GB Microsoft w tym poście zaleca klastry 4KB.
źródło
Na przykład w świecie rzeczywistym właśnie nagrałem swoje wolne miejsce, a następnie utworzyłem dużą strukturę katalogów i odjąłem nowe wolne miejsce, aby sprawdzić, ile miejsca zostało wykorzystane. Utworzyłem katalogi 0-6 dla każdego dnia tygodnia, następnie wewnątrz katalogów 0-23 dla godzin dnia, a następnie 0-59 dla minut godziny. W sumie jest to 10 080 katalogów. Moje użycie dysku zmieniło się o 6 926 336 bajtów. Działa to do 687 bajtów na katalog. W przypadku, gdy Ci zależy, działa to również do 0,0006% dysku o pojemności 1 TB (jeśli obliczasz 1 TB jako 1024 ^ 4).
źródło
W systemie Windows 10 utworzyłem 1 000 000 pustych folderów i, zgodnie z
getsize
funkcją Pythona , zajmowało 200540160 bajtów miejsca. To średnio 200,54016 bajtów na folder.źródło