Potřebuji získat velikost adresáře v terminálu pro účely podepisování. Používám následující příkaz:
du -s /path/to/dir
Výsledek vynásobím tradiční velikostí bloku UNIX (512 bajtů) a získám skutečnou velikost adresáře v bajtech. Dialogové okno „Získat informace“ Finderu však ukazuje velikost o něco menší, než je velikost vypočítaná pomocí příkazu terminálu. A zdá se, že je reprodukovatelné v jakékoli složce/svazku. Co mi chybí?
Přijatá odpověď:
Normálně du
zobrazuje informace o využití disku (odtud pochází jeho název). Mějte na paměti, že
disk usage != sum of file sizes
Protože každý soubor zabírá určitý počet bloků na souborovém systému (viz man mkfs.ext2
například). To znamená, že pouze ve velmi ojedinělých případech se využití disku souboru rovná jeho skutečné velikosti – proto musí být velikost přesně násobkem velikosti bloku.
Představte si bloky souborového systému jako krabice, které obsahují části souborů – každý může obsahovat část pouze jednoho souboru.
Pro GNU verzi du
, podívejte se na --apparent-size
možnost.
Ještě zajímavější situace může nastat, když jsou v souborovém systému nějaké řídké soubory!