Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Символические ссылки. Ограничения жестких ссылок

Пред. 

Глава 9. Файловая система Linux

 След.


Символические ссылки. Ограничения «жестких» ссылок

Здесь мы вынуждены столкнуться с очень распространенным заблуждением (даже среди пользователей UNIX®), которое является в основном следствием того, что ссылки, как мы видели ранее (незаслуженно называемые «жесткими» ссылками), ассоциируются только с обычными файлами (и мы видели, что это не повод –– так как даже символические ссылки являются «связанными»). Но для этого требуется, чтобы мы сначала разъяснили, что же представляют собой символические ссылки (часто называемые «мягкими» ссылками или даже еще чаще «симлинками»).

Символические ссылки - это файлы особого типа, единственным содержанием которых является произвольная строка, которая может указывать (а может и не указывать) на существующий файл. Когда вы обращаетесь к символической ссылке в командной строке или в программе, на самом деле вы обращаетесь к файлу, на который она указывает, если он существует. Например:

$ echo Hello >myfile
$ ln -s myfile mylink
$ ls -il
total 4
169 -rw-rw-r--    1 queen     queen            6 Dec 10 21:30 myfile
416 lrwxrwxrwx    1 queen     queen            6 Dec 10 21:30 mylink 
-> myfile
$ cat myfile
Hello
$ cat mylink
Hello

Как видите, тип файла mylink - 'l' (от слова Link), т.е. он является символической ссылкой. Права доступа для символической ссылки значения не имеют: они всегда будут rwxrwxrwx. Вы также можете видеть, что она и файл myfile - это два разных файла, т.к. ее номер inode отличается. Но она ссылается на него символически, поэтому, когда вы вводите команду cat mylink, на самом деле вы выводите содержимое файла myfile. Чтобы продемонстрировать, что символическая ссылка содержит произвольную строку, мы можем сделать следующее:

$ ln -s "I'm no existing file" anotherlink
$ ls -il anotherlink
418 lrwxrwxrwx    1 queen     queen           20 Dec 10 21:43 anotherlink 
-> I'm no existing file
$ cat anotherlink
cat: anotherlink: No such file or directory
$

Но символические ссылки существуют благодаря тому, что они преодолевают несколько ограничений, присущих («жестким») ссылкам:

  • Вы не можете создать ссылку на inode в каталоге, который находится в другой файловой системе. Причина проста: счетчик ссылки хранится в самом inode'е, а последние не могут совместно использоваться в разных файловых системах. А симлинки позволяют сделать это.
  • Вы не можете создать ссылки на каталоги, во избежание создания циклов в файловой системе. Но вы можете создать симлинк, указывающий на каталог и использовать его так, как если бы это на самом деле был каталог.

Поэтому символические ссылки очень полезны в различных ситуациях, и очень часто люди стремятся их использовать для связывания файлов даже тогда, когда могла бы быть использована обычная ссылка. Одно из преимуществ обычного связывания состоит в том, что вы не потеряете файл, если удалите «оригинальный».

И напоследок, если вы были внимательны, то могли заметить, что размер симлинка - это просто размер строки.


Пред. 

Уровень выше

 След.

Специальные файлы: Файлы символьного и блочного режима 

Начало

 Атрибуты файлов