
Я также спросилродственный вопрос для Windows.
В Linux (я только что проверил):
- Размер пустой папки составляет 4 КБ (независимо от ее имени).
- Размер пустого файла равен 0 байт.
Однако файлы и папки, очевидно, имеют имена, которые должны где-то храниться.
- Где, примерно, они хранятся?
- Является ли максимальный объем памяти, доступный для хранения этих данных, предопределенным значением или он зависит от доступного места на диске?
- Занимает ли пустой файл с коротким именем меньше места, чем пустой файл с длинным именем? (или, возможно, структура данных, в которой хранятся эти имена, имеет фиксированное количество байтов для каждого файла, которое, возможно, заполняет оставшиеся байты
\0
?) - Занимает ли пустая папка с коротким именем меньше места, чем пустая папка с длинным именем?
- Пустая папка с именем
foobar
занимает меньше места, столько же места или больше места, чем пустой файл с именемfoobar
? - Пустой файл по адресу
/etc/empty.txt
занимает меньше места, столько же места или больше места, чем пустой файл по адресу/etc/long/nested/path/until/the/empty/file/is/reached/empty.txt
?
решение1
Имена файлов хранятся в каталоге. Каталог состоит из записей каталога, и каждая запись каталога содержит имя файла и номер инода для этого файла. Инод содержит различные метаданные, такие как идентификатор пользователя и идентификатор группы, владеющей файлом, время последнего изменения инода и т. д. Файл с более длинным именем файла займет больше места в каталоге. Может быть несколько записей каталога (в одном и том же или разных каталогах), которые ссылаются на один и тот же номер инода. Когда создается дополнительная запись каталога, указывающая на тот же инод, это называется созданием жесткой ссылки.
В таблице инодов имеется фиксированное количество инодов, поэтому если вы создадите большое количество инодов, в конечном итоге в таблице инодов может закончиться место. (Вы можете увидеть, сколько инодов используется, с помощью "df -i". Вы также можете создать файловую систему с большим количеством инодов, если предполагаете, что средний размер инодов в файловой системе будет меньше значения по умолчанию.)
Каталоги также состоят из inodes и работают во многом как файлы, за следующим исключением. Во-первых, даже "пустой" каталог будет иметь записи каталога для '.' (сам каталог) и ".." (родительский каталог), поэтому даже "пустой" каталог займет 4k места. Во-вторых, каталог не может иметь жестких ссылок. То есть (игнорируя записи '.' и '..'), может быть только запись каталога, ссылающаяся на inode каталога. Это означает, что каталоги образуют дерево, а не обобщенный граф.
решение2
Команда ls отображает, помимо прочего, размер файла:
Если файл является каталогом, отображается размер, выделенный ему системой.(На блок размером 4 КБ: 4096 бит для файловой системы ext4) даже если в нем 0 байт.
Если файл обычный, то отображается размер его содержимого, а не размер, занимаемый файлом.
Чтобы узнать размер, занимаемый файлом, будь то обычный файл или каталог, используйте команду «du file_name»