1

Если я проверяю размер файла символьной ссылки с помощью stat() , то он сообщает о ненулевом размере файла, равном строке пути ссылки. Но когда я использую du по ссылке, он сообщает размер нулевых блоков.

Есть ли простое объяснение этому? Правильно ли интерпретировать символические ссылки как не требующие места на диске? Где хранится информация о символьной ссылке?

1 ответ1

4

Смотрите https://en.wikipedia.org/wiki/Symlink#Storage_of_symbolic_links. Современные системы используют так называемые "быстрые символические ссылки". Блоки не выделены для символической ссылки. Вместо этого ссылка на символическую ссылку сохраняется в самом inode, где обычный файл хранит расположение блоков, которые его составляют. du только смотрит на то, сколько блоков выделено, и поэтому может показывать 0. stat и ls -l достаточно умны, чтобы сообщать длину символической ссылки на основе данных, хранящихся в inode.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .