Ответы:
Это размер пространства на диске, который используется для хранения метаинформации для каталога (т. Е. Таблицы файлов, принадлежащих этому каталогу). Если это т.е. 1024, это означает, что для этой цели используются 1024 байта на диске (это всегда выделяет полные блоки).
«Размер каталога», напечатанный с помощью ls -l
(как и для любого типа файла) значения, указанного в stat()
вызове statbuf.st_size
.
Что это st_size
означает для каталогов, полностью зависит от типа файловой системы. Если вы не знаете тип файловой системы и не понимаете ее концепции, вы не сможете ничего вывести из значения в st_size
.
В исторической файловой системе UNIX, обычно называемой в настоящее время v7-fs
, каталоги повторялись 16-байтовыми записями, которые содержали 16-битный номер индекса и 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
по прибытию st_size
, так сообщили «размер» не имеет никакого реального значения по отношению к занимаемому дисковому пространству , по данным каталога. Есть нет .
и ..
записей в каталоге ZFS, но если вы звоните readdir()
, эти записи поддельные и возвращаются в течение первых двух операций. ZFS является единственной FS в списке, которая не поддерживает жесткие ссылки на каталоги, но сообщаемое число ссылок для каталогов всегда равно 2. Эти две ошибки в ZFS реализованы, чтобы уменьшить путаницу в не-POSIX исторических программах.
Подобно ZFS, WAFL копирует некоторые, но не все идеи WOFS
. Netapp WAFL
был написан через 3 года после WOFS
публикации статьи, WAFL копируется при записи, но WAFL, похоже, сообщает о значениях «размера», которые могут быть «реальным размером каталога» при условии, что каталог содержит контент.
Каталог резервирует 4096 байт (как минимум) для метаданных о себе и своем содержимом.
Кроме того, 4096 байт является единицей (блоком) выделения по умолчанию для файловой системы ext2 / ext3 / ext4, и поэтому каталог не может быть меньше.
В разных файловых системах вы можете найти каталоги с разными размерами по умолчанию, что связано с размером блока файловой системы по умолчанию.
Размеры каталогов также могут динамически увеличиваться по мере заполнения, но после заполнения пространство, зарезервированное для метаданных, не может быть перераспределено без удаления каталога.
Каталог - это просто каталог, похожий на телефонный справочник. Это просто файл со списком чисел и именем рядом с ними. Каждый номер ссылается на файл в файловой системе (номер индекса), а имя - это имя файла.
Вам необходимо место на диске для сохранения этих данных, то, как они распределяются, растут и сокращаются, зависит от файловой системы.