Библиотека сайта 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'е, а последние не могут совместно использоваться в разных файловых системах. А симлинки позволяют сделать это.
- Вы не можете создать ссылки на каталоги, во избежание создания циклов в файловой системе. Но вы можете создать симлинк, указывающий на каталог и использовать его так, как если бы это на самом деле был каталог.
Поэтому символические ссылки очень полезны в различных ситуациях, и очень часто люди стремятся их использовать для связывания файлов даже тогда, когда могла бы быть использована обычная ссылка. Одно из преимуществ обычного связывания состоит в том, что вы не потеряете файл, если удалите «оригинальный».
И напоследок, если вы были внимательны, то могли заметить, что размер симлинка - это просто размер строки.
Специальные файлы: Файлы символьного и блочного режима |
Атрибуты файлов |