Trudno mi zrozumieć, jaki jest właściwy sposób odczytu rozmiaru plików, ponieważ każde polecenie daje różne wyniki. Natknąłem się również na post na http://forums.devshed.com/linux-help-33/du-and-ls-generating-inconsistent-file-sizes-42169.html, który stwierdza, co następuje;
du podaje rozmiar pliku znajdującego się w systemie plików. (IE zawsze da wynik podzielny przez 1024).
ls da ci rzeczywisty rozmiar pliku.
To, na co patrzysz, to różnica między faktycznym rozmiarem pliku a ilością miejsca na dysku, którą zajmuje. (zwana także wydajnością systemu plików).
Jaka jest różnica między tym, jak rezyduje on w systemie plików, a faktycznym rozmiarem pliku
du
pokazuje cid
isku
mędrca, patrzy na miejsce zajmowane na bieżącym dysku, a tym samym pokazuje rozmiar rezydenta.df -h
?df
zgłasza liczbę pozostałych bloków * rozmiar bloku systemu plików. W tym przypadku byłoby to bardziej podobnedu
, ponieważ nawet częściowo wykorzystane bloki są uważane za w pełni przydzielone.df
w zasadzie tłumaczy statvfs , więc możesz spojrzeć na to wywołanie systemowe, aby uzyskać lepszy obraz tego, co się dzieje.Jest jeszcze jedna opcja, która nie została omówiona - rzadkie pliki . W tym przypadku,
du
pokaże mniejszy rozmiar niż prostels -l
będzie, ponieważls
jest zgłoszenie „wielkość” pliku jako bycia pozorna wielkość (liczba bajtów można odczytać, jeśli całe mnóstwo zer chciał), natomiastdu
wola nadal używaj rzeczywistej liczby używanych bloków dysku.Zabawna sztuczka: utwórz wiele dużych, rzadkich plików, a następnie zaimponuj znajomym, ile masz miejsca na dysku („spójrz, przechowuję jedenaście gazillionów 1 TB plików na moim dysku twardym!”). OK, może nie tak fajnie.
źródło
Systemy plików składają się z bloków. Pliki nie muszą dobrze pasować do bloków. Jeśli plik miałby 1024 bajty, jego rozmiar w ls i du wynosiłby 1024. Jeśli rozmiar pliku to 1025, rozmiar wynosiłby 1025 w ls i 2048 w du.
Zwróć uwagę, że powyższy przykład zakłada rozmiar bloku 1024. Większe rozmiary bloków są obecnie normą e, g,
źródło
Jest jeszcze jeden powód, dla którego mogą się różnić. du -h wie, kiedy widzi ten sam plik pod inną nazwą (twarde linki, w przeciwieństwie do dowiązań symbolicznych) i zgłasza każdy plik pod względem rozmiaru, ale dodaje rozmiar tylko raz do wspólnego katalogu nadrzędnego.
źródło