Что представляет собой "размер" символической ссылки в выводе ls?

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

$ 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 что заложено под размер столбца?

РЕДАКТИРОВАТЬ: Бег du:

$ du -sh symfile
0   symfile

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


ОБНОВИТЬ:

попробуй это

$ 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

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

3 ответа

Решение

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

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

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

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

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

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

ext4 Файловая система выполняет эту оптимизацию только для символических ссылок, критерии находятся в функции ext4_inode_is_fast_symlink.

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

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

Другие вопросы по тегам