Команда Linux `du` показує як фактичне використання дискового простору, так і дійсний об’єм файлу або папки. Розгляньмо, чому ці показники можуть відрізнятися.
Фактичний простір на диску та реальний об’єм
Розмір файлу і простір, який він займає на носії інформації, часто не співпадають. Місце на диску розподіляється у вигляді блоків. Якщо файл менший за блок, для нього все одно виділяється повний блок, оскільки файлова система не оперує меншими одиницями для зберігання даних.
Якщо розмір файлу не є точним кратним розміру блоків, обсяг простору на диску, необхідний для його зберігання, завжди округлюється до більшого цілого блоку. Наприклад, якщо розмір файлу перевищує два блоки, але менший за три, для його зберігання все одно буде задіяно три блоки.
Існують два вимірювання, що стосуються об’єму файлу. Перше – це фактичний розмір файлу, що є кількістю байтів даних, з яких складається цей файл. Друге – це об’єм, який файл займає на жорсткому диску, тобто кількість блоків файлової системи, необхідна для його зберігання.
Приклад
Розгляньмо наочний приклад. Створимо маленький файл, перенаправивши в нього один символ:
echo "1" > geek.txt
geek.txt’ у терміналі” onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);” onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”>
Тепер переглянемо розмір файлу, використовуючи команду `ls` з параметром `-l`:
ls -l geek.txt
Розмір файлу (числове значення після запису про права доступу) становить 2 байти. Чому два байти, якщо ми записали лише один символ? Перегляньмо вміст файлу.
Скористаємося командою `hexdump`, яка покаже точну кількість байтів, включно з недрукованими символами у шістнадцятковому форматі. Застосуємо також параметр `-C` (канонічний), щоб шістнадцяткові значення відображались у зрозумілому вигляді.