Начну с примера:
$ 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
Итак, я полагаю, это не только размер
symbolic-link
ls
Maythux
источник
источник
7
Зависит от файловой системы (и , возможно , других параметров). Это 7 на ext4, но может быть 13 на btrfs и 3 на tmpfs.mkdir foo; ls -ld foo; for i in {1..1000}; do ln -s foo/bar foo/$i; done; ls -ld foo
.Ответы:
Символические ссылки занимают место, необходимое для хранения имени и цели, а также несколько байтов для других метаданных.
Так что это размер символической ссылки.
Относительно размера from
du -sh
:du
только смотрит на то, сколько блоков выделено, и поэтому может показывать 0.stat
иls -l
лучше показывает размер в этом отношении.источник
du -sh symfile
дает 0? -Это размер символической ссылки в байтах.
Некоторые файловые системы имеют небольшую область внутри записи каталога, которая используется для начала файла, что значительно ускоряет обработку символических ссылок и небольших операций чтения (думаю
file
) за счет более крупных записей каталога.Если все содержимое символической ссылки помещается в запись каталога, то блоки данных не выделяются, а
du
размер отображается как ноль. Если символьная ссылка не подходит, пространство распределяется нормально (так что в итоге вы выделяете один блок), который может быть оптимизирован файловой системой с использованием хвостового слияния (но API дляdu
этого не существует).ext4
Файловая система выполняет эту оптимизацию для симлинок только критерии находятся в функции ext4_inode_is_fast_symlink .источник
Это размер файла символической ссылки в байтах.
Файл символической ссылки - это обычный файл, в котором хранятся данные о том, где находится файл, на который он указывает. В ext 4 это 7 байтов.
источник
du -sh symfile
дает 0?