Что означает размер каталога в выводе команды «ls -l»?

Что означает размер каталога в выводе команды «ls -l»?

Что означает размер каталога в выводе ls -lкоманды?

решение1

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

решение2

Выведенный с помощью параметра «Размер каталога» ls -l(как и для любого типа файла) представляет собой значение, возвращаемое вызовом stat()в statbuf.st_size.

Что это st_sizeозначает для каталогов, полностью зависит от типа файловой системы. Если вы не знаете тип файловой системы и не понимаете ее концепции, вы не сможете ничего вывести из значения в st_size.

  • В исторической файловой системе UNIX, которая в настоящее время обычно называется v7-fs, каталоги представляли собой повторяющиеся 16-байтовые записи, содержащие 16-битный номер inode и 14 байтов имени файла. «Размер» каталога имел значение относительно операции read(2)и всегда увеличивался или оставался таким, какой есть. Записи .и ..создаются путем ручного жесткого связывания их с текущим и каталогом на уровень выше. Количество ссылок для разумного пустого первого каталога равно 2.

  • В файловой системе BSD-4.2, которая с 1989 года (SVr4) называется ufs, каталоги представляют собой ряд записей переменной длины, которые используют формат, который не может быть стабильным, поэтому командам пользовательского пространства не разрешено читать этот формат. Сообщаемый "размер" - это размер в байтах, как в v7-fs, размер обычно увеличивается или остается таким, как есть, но более новые версии файловой системы могут уменьшать размер при некоторых условиях - но не всегда, когда вы можете этого ожидать. Сообщаемое количество ссылок для пустого каталога равно 2, как и в v7-fs.

  • В WOFS, файловой системе, которую я разработал и реализовал между летом 1988 и маем 1991 года, каталоги всегда сообщают "размер" 0 и никогда не имеют типа содержимого, которое может быть прочитано с помощью вызова read(2). Это потому, что WOFSэто первая файловая система Copy-on-Write и потому, что в WOFSфайлах сообщается каталог, в котором они находятся, а не указываются в каталоге. Если вы читаете каталог WOFSс помощью readdir(), вы получаете данные только для предполагаемых записей, но никогда для .и ... Количество ссылок пустого каталога на WOFSравно 1, и все поведение полностью совместимо с POSIX.

  • В ZFS, который был реализован после прочтения WOFSстатей. ZFSявляется файловой системой копирования при записи, и ее авторы не отрицают, что скопировали концепции из WOFS. Каталоги на ZFS сообщают number of directory entriesв , поэтому сообщаемый «размер» не имеет реального значения относительно занятого дискового пространства данными каталога. В каталоге ZFS st_sizeнет записей .и , но если вы вызываете , эти записи подделываются и возвращаются для первых двух операций. ZFS — единственная файловая система в списке, которая не поддерживает жесткие ссылки на каталоги, но сообщаемое количество ссылок для каталогов всегда равно 2. Эти две нерегулярности в ZFS реализованы для уменьшения путаницы в исторических программах, не поддерживающих POSIX...readdir()

  • Подобно ZFS, WAFL копирует некоторые, но не все идеи из WOFS. Netapp WAFLнаписала WOFSстатью через 3 года после ее публикации, WAFL копирует при записи, но WAFL, похоже, сообщает значения «размера», которые могут быть «реальным размером каталога», если предположить, что каталог имеет содержимое.

решение3

Каталог резервирует 4096 байт (минимум) для метаданных о себе и своем содержимом.

Кроме того, 4096 байт — это единица распределения (блок) по умолчанию для файловых систем ext2/ext3/ext4, поэтому каталог не может быть меньше.

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

Размеры каталогов также могут динамически увеличиваться по мере их заполнения, но после заполнения пространство, зарезервированное для метаданных, не может быть перераспределено без удаления каталога.

решение4

Каталог — это просто каталог, как телефонный справочник. Это просто файл со списком номеров и именем рядом с ними. Каждый номер ссылается на файл в файловой системе (номер inode), а имя — это имя файла.

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

Связанный контент