Каков реальный размер файла? - PullRequest
0 голосов
/ 05 марта 2019

Как возможно, что текстовый файл имеет размер, равный количеству символов внутри?Например, в файле file.txt у вас есть строка «abc» и ее размер составляет 3 байта.Все хорошо, но что со значком файла, именем файла и информацией о файле?Где эти данные были сохранены?

Я проверял это в Windows, но в системах Unix ситуация, вероятно, такая же.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Диски выделяют место в блоках. Исторически блоки составляли 512 байт, но с годами они увеличились, так что 4K является обычным явлением. Ваш размер файла всегда будет кратным размеру блока.

Большинство файловых систем (и это делает Windoze) выделяют дисковое пространство в кластерах. Кластер - это ряд смежных блоков. Размер вашего файла всегда будет кратным размеру блока, умноженному на коэффициент кластеризации. Обычно это размер файла в соответствии с операционной системой.

Все зависит от формата диска и операционной системы:

Все хорошо, но что со значком файла, именем файла и информацией о файле? Где хранятся эти данные?

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

В рационально разработанной файловой системе имя файла "A" будет храниться в заголовке. Имена файлов также хранятся в каталогах, и файл может иметь несколько имен, если он связан с несколькими каталогами. Имя файла заголовка используется для восстановления файла в случае повреждения.

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

0 голосов
/ 06 марта 2019

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

В linux (и, как правило, в unix), это с помощью inode, который полностью описываетфайл.Информация, хранящаяся в этих inodes:
* режим доступа
* идентификаторы пользователя и группы, которым принадлежит файл
* размер в байтах
* дата создания, изменения и доступа
*список дисковых блоков, содержащих данные файла

Это более или менее информация, отображаемая с помощью ls -l

Вы также можете увидеть номер инода каждого файла с помощью ls -i

Вы можете найти здесь дополнительные сведения о inode.

Другая информация кодируется по-другому.Например, имена находятся только в специальных файлах, описывающих каталог, а не в inode.Каталог - это действительно список, который связывает имя с inode.

Значки, как правило, определяются в масштабе всей системы, и связь значка с файлом выполняется либо с именем файла (и расширением файла), либо с типом файла "type", который записывается в "inode" (илиего эквивалент в других ОС).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...