Jak uzyskać rozmiar pliku lub katalogu w systemie Linux

Używając polecenia Linux du, uzyskujesz zarówno rzeczywiste użycie dysku, jak i rzeczywisty rozmiar pliku lub katalogu. Wyjaśnimy, dlaczego te wartości nie są takie same.

Rzeczywiste wykorzystanie dysku i rzeczywisty rozmiar

Rozmiar pliku i zajmowanego przez niego miejsca na dysku twardym rzadko są takie same. Miejsce na dysku jest przydzielane w blokach. Jeśli plik jest mniejszy niż blok, cały blok jest nadal do niego przydzielany, ponieważ system plików nie ma mniejszej jednostki nieruchomości do wykorzystania.

O ile rozmiar pliku nie jest dokładną wielokrotnością bloków, miejsce, które zajmuje na dysku twardym, zawsze należy zaokrąglić w górę do następnego całego bloku. Na przykład, jeśli plik jest większy niż dwa bloki, ale mniejszy niż trzy, przechowywanie go nadal zajmuje trzy bloki.

Stosowane są dwa pomiary w odniesieniu do rozmiaru pliku. Pierwsza to rzeczywisty rozmiar pliku, czyli liczba bajtów zawartości, które składają się na plik. Drugi to efektywny rozmiar pliku na dysku twardym. Jest to liczba bloków systemu plików potrzebnych do przechowywania tego pliku.

Przykład

Spójrzmy na prosty przykład. Przekierujemy pojedynczy znak do pliku, aby utworzyć mały plik:

echo "1" > geek.txt

Plik geek.txt ”w oknie terminala. ’ width = ”646 ″ height =” 57 ″ onload = ”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);” onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”>

Teraz użyjemy listy w długim formacie, ls, aby sprawdzić długość pliku:

ls -l geek.txt

Plik

Długość to wartość numeryczna, która następuje po wpisach dave dave, czyli dwa bajty. Dlaczego jest to dwa bajty, kiedy wysłaliśmy tylko jeden znak do pliku? Rzućmy okiem na to, co dzieje się w pliku.

Użyjemy polecenia hexdump, które da nam dokładną liczbę bajtów i pozwoli nam „zobaczyć” znaki niedrukowalne jako wartości szesnastkowe. Użyjemy również opcji -C (canonical), aby wymusić wyświetlanie wartości szesnastkowych w pliku wyjściowym