nextuppreviouscontents
Next:Символические ссылкиUp:Работа со ссылками на Previous:Работа со ссылками на

Жесткие ссылки

  Для создания нескольких ссылок к одному файлу служит команда ln. Пусть, например, в текущем каталоге имеется файл с именем foo. Увидеть соответствующий ему номер индексного дескриптора можно с помощью команды ls -i. Пример:
/home/larry# ls -i foo
22192 foo 
/home/larry#
Здесь файлу foo соответствует индексный дескриптор номер 22192 файловой системы. К файлу foo можно создать еще одну ссылку и назвать ее bar. Это делается следующим образом:
/home/larry# ln foo bar
Теперь с помощью команды ls -i можно увидеть, что оба файла относятся к одному и тому же индексному дескриптору:
/home/larry# ls -i foo bar
22192 bar  22192 foo
/home/larry#
Теперь, обращаясь к файлу foo или bar, мы, в действительности, будем обращаться к одному и тому же файлу. Производя изменения в файле foo, мы можем увидеть, что они появились также и в файле bar. Со всех точек зрения файлы foo и bar -- это один и тот же файл.

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

При удалении файла командой rm в действительности удаляется только одна ссылка на файл. Если мы теперь введем команду

/home/larry# rm foo
то будет удалена только ссылка под названием foo, а ссылка bar будет продолжать существовать. По-настоящему файл будет удален из файловой системы только тогда, когда к нему не останется больше ссылок. Обычно на один файл имеются только одна ссылка, так что команда rm его удалит. Однако если к файлу имеются множественные ссылки, то команда rm будет удалять только одну ссылку, и для того, чтобы этот файл удалить, придется удалять все ссылки на этот файл.

  Команда ls -l выдает (помимо прочей информации) число ссылок на каждый файл.

/home/larry# ls -l foo bar
-rw-r--r--   2 root     root          12 Aug  5 16:51 bar
-rw-r--r--   2 root     root          12 Aug  5 16:50 foo 
/home/larry#
Цифра "2" во второй колонке этого списка обозначает число ссылок на файл.

Отметим, что каталог в действительности представляет собой просто файл, содержащий информацию о связях (ссылках) между именами файлов и индексными дескрипторами. Также каждый каталог содержит, как минимум, две жестких ссылки: ссылка "." указывает на тот же самый каталог, а ссылка ".." указывает на родительский каталог. У корневого каталога (/) ссылка ".." указывает на тот же самый каталог /. Иными словами, родительским каталогом корневого каталога является тот же самый каталог.


nextuppreviouscontents
Next:Символические ссылкиUp:Работа со ссылками на Previous:Работа со ссылками на
root

Sun Aug 29 12:01:30 MSD 1999