Что показывает команда du?

У меня есть обычная папка, поэтому, когда я щелкаю правой кнопкой мыши, захожу в свойства и проверяю размер ее данных, она дает 37,3 КБ. Но когда я использую команду du, она показывает 104 КБ.

Разве эти двое не должны дать один и тот же ответ?


person user3481478    schedule 18.06.2015    source источник
comment
Какую настольную систему вы используете? Гном? КДЕ? Единство? Другой?   -  person hek2mgl    schedule 18.06.2015
comment
Большинство файловых систем хранят файловые данные фрагментами фиксированного размера. Следовательно, резерв возникает, поскольку количество данных и совокупный размер фрагментов на диске совпадают только случайно. du выводит использование диска (фактическое количество байтов, используемых на диске), тогда как свойства файла отражают размер полезной нагрузки.   -  person collapsar    schedule 18.06.2015
comment
Можете ли вы объяснить мне немного подробнее? Что такое размер полезной нагрузки?   -  person user3481478    schedule 18.06.2015


Ответы (3)


Важно отметить, что жесткие ссылки имеют значение при вычислении размера каталога. Две жесткие ссылки на один и тот же файл не занимают больше места на диске и не имеют общего номера инода (по определению), но простой подсчет размеров файлов будет учитывать их вдвое.

Вот этот переключатель, по крайней мере, на GNU du:

   -l, --count-links
          count sizes many times if hard linked
person Adrien Nader    schedule 22.06.2015

Команда du рекурсивно спускается по всем каталогам и подкаталогам и всегда дает вам общее количество, содержащееся где-либо ниже.

Вкладка свойств в графическом интерфейсе не всегда делает это. Иногда есть флажок (там или в каком-либо другом диалоговом окне настроек), контролирующий, вычисляются ли размеры папок рекурсивно или только дает вам верхний уровень. Иногда, даже когда пользовательский интерфейс пытается рекурсивно вычислить размер, для его обновления требуется некоторое время, поэтому некоторое время он может отображать меньшее временное число, пока не дойдет до завершения полного рекурсивного поиска.

Поэтому неудивительно, что пользовательский интерфейс выдает меньшее число. Попробуйте найти предпочтения пользовательского интерфейса для этого.

person Steve Summit    schedule 18.06.2015
comment
Спасибо :) Но проблема не в этом. Потому что, когда я делаю команду ls -l и добавляю байты всех файлов, я получаю тот же результат, что и 37 КБ - person user3481478; 18.06.2015
comment
Но есть ли подкаталоги? (Если нет, ответ может быть тем, что отражен в комментарии @collapsar выше.) - person Steve Summit; 18.06.2015
comment
Попробуйте запустить ls -ls и посмотрите как на размер в байтах, так и на размер в блоках. (Однако имейте в виду, что размер в блоках не обязательно предполагает 1 КБ блоков. Вы можете принудительно установить его, установив переменную среды BLOCKSIZE.) - person Steve Summit; 18.06.2015
comment
Я вижу только один тип размера, который, как мне кажется, представляет собой размер в байтах. Что такое блоки? Есть ссылка на архитектуру? - person user3481478; 18.06.2015
comment
Более того, если @collapsor прав, значит ли это, что когда файлы на самом деле имеют размер 37 кН, на самом деле на диске используется 104 КБ? Разве это не так? - person user3481478; 18.06.2015

Ответ @Стива Саммита вместе с последующими комментариями упускают из виду некоторую полезную информацию для понимания проблемы:

  • простой ls -ls не покажет скрытые подкаталоги.
  • вы должны увидеть имена любых скрытых подкаталогов, используя ls -las.
  • чтобы увидеть их размер рекурсивно, добавьте параметр -R.
  • лучшим способом показать содержимое будет find . -ls, который показывает подкаталоги.
  • в любом случае du показывает блоки, которые содержат "много" байтов
  • Формулировка POSIX для размера блока (см. обоснование в ls) говорит, что результат -s различался в разных реализациях (например, некоторые могут отображать 1024):
    #P2#
  • С другой стороны, стандарт для du говорит, что должно быть 512 -байтовые единицы, как и ls -l.

Чтобы учесть недостающее пространство:

  • Если у вас много очень маленьких файлов, они могут использовать гораздо меньше байтов, чем количество блоков.
  • Точно так же у вас могут быть скрытые файлы, которые не были учтены в вопросе.
  • Наконец, в некоторых диалоговых окнах свойств могут отображаться только файлы. Каталоги также занимают место.

Кстати, вариант -ls для find упоминается в стандарте только в обосновании . Но с линуксом работает.

person Thomas Dickey    schedule 19.06.2015