Како да добијете величину датотеке или директоријума у ​​Линуку

Kada se koristi komanda `du` u Linuxu, prikazuju se dve bitne informacije: stvarna količina prostora na disku koju zauzima datoteka ili direktorijum, kao i njena prava veličina. U ovom tekstu ćemo razjasniti zašto te dve vrednosti često nisu identične.

Razlika između stvarne upotrebe diska i prave veličine datoteke

Veličina datoteke, izražena u broju bajtova, i prostor koji ona fizički zauzima na disku retko su jednaki. Razlog leži u načinu na koji sistem datoteka alocira prostor: on se dodeljuje u blokovima. Čak i ako je datoteka manja od veličine jednog bloka, njoj će biti dodeljen ceo blok, jer sistem nema manju jedinicu alokacije.

Dakle, osim u situaciji kada je veličina datoteke tačan umnožak veličine bloka, prostor koji ona zauzima na disku uvek se zaokružuje na sledeći ceo blok. Na primer, ako datoteka ima veličinu veću od dva, a manju od tri bloka, i dalje će joj biti dodeljena tri bloka prostora.

U kontekstu veličine datoteke, koristimo dva ključna merenja. Prvo je stvarna veličina datoteke, koja predstavlja ukupan broj bajtova koji čine njen sadržaj. Drugo je efektivna veličina datoteke na disku, što je broj blokova koje sistem datoteka koristi za njeno skladištenje.

Praktičan primer

Razmotrimo jednostavan primer. Kreiraćemo malu datoteku preusmeravanjem jednog znaka u nju:

echo "1" > geek.txt

Sada ćemo, koristeći komandu `ls` sa opcijom `-l` (duga lista), proveriti dužinu datoteke:

ls -l geek.txt

U izlistavanju, nakon informacija o vlasniku i grupi, stoji numerička vrednost od dva bajta. Zasto dva, kad smo upisali samo jedan znak? Hajde da pogledamo šta se dešava unutar same datoteke.

Koristićemo komandu `hexdump`, koja nam omogućava da vidimo tačan broj bajtova, uključujući i one neštampajuće karaktere, prikazujući ih kao heksadecimalne vrednosti. Dodatno, koristićemo opciju `-C` (kanonsku) kako bi heksadecimalni izlaz bio čitljiviji.