Что означает «размер» символической ссылки в ls output?

10

Начну с примера:

$ ls -l dir1
total 4
-rw-r--r-- 4 maythux maythux 1650 2008-01-10 16:33 file
lrwxrwxrwx 1 maythux maythux  7 2008-01-15 15:17 symfile -> file

symfile является символической ссылкой файла file

Также, как я знаю, 1650 будет размером файла file , но каково число 7 , которое помещено под столбцом размера?

EDIT: Выполнение du :

$ du -sh symfile
0   symfile

Итак, как вы могли доказать, что 7 - размер символической ссылки?!

UPDATE:

попробуйте это

$ touch file
$ du -sh file
0 file
$ ls -l file
-rw-rw-r-- 1 maythux maythux 0 Jun  1 19:42 file

Обратите внимание, что размер также здесь 0.

Сейчас:

$ ln -s file sym
$ du -sh sym
0 sym
$ ls -l sym
lrwxrwxrwx 1 maythux maythux 4 Jun  1 19:44 sym -> file

Итак, я полагаю, что это не только размер

    
задан Maythux 01.06.2015 в 16:23
источник

3 ответа

12

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

Таким образом, это размер символической ссылки.

В отношении размера от du -sh : du учитывает только количество блоков, и поэтому может показывать 0. stat и ls -l лучше показывают размер в этом отношении.

    
ответ дан Rinzwind 01.06.2015 в 16:27
источник
4

Это размер символьной ссылки в байтах.

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

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

Файловая система ext4 выполняет эту оптимизацию только для символических ссылок, критерии находятся в функции ответ дан Simon Richter 01.06.2015 в 19:14

0

Это размер файла symlink в байтах.

Файл Symlink - это обычный файл, в котором хранятся данные о том, где находится файл, на который он указывает. В ext 4 это 7 байт.

    
ответ дан Pilot6 01.06.2015 в 16:26