Ссылки

В файловой системе Linux предусмотрена возможность создания и использования ссылок на объекты файловой системы. Существуют два типа ссылок.:

  • Жесткие (hard link).
  • Символьные (symbolic link).

С жесткими ссылками мы уже встречались, когда рассматривали физическое устройство файловой системы (см. описание информации хранящейся в директории). Жесткие ссылки — это еще одно имя файла.

У жестких ссылок есть два серьезных ограничения:

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

Действительно жесткая ссылка — это дополнительное имя файла, ссылающееся на номер inode файла. Этот номер уникален в пределах одной физической файловой системы. Именно по этому ссылка работает только в пределах физической файловой системы.

Второй тип ссылок — символьные. Они лишены всех недостатков жестких ссылок. Могут ссылаться на любые объекты файловой системы: файлы, директории, символьные ссылки и т.д. Они не ограничены пределами физической файловой системы.

Символьная ссылка — это специальный тип файла, очень похожий на ярлыки Windows, но имеющий больше возможностей. В файле символьной ссылки хранится путь к объекту файловой системы, на которую она ссылается. При использовании ссылки в указании пути к файлу, драйвер файловой системы пересчитывает путь с учетом того пути, что хранится в ссылке. Если символьная ссылка переносится, переименовывается или удаляется при помощи программ mv, cp и rm. Эти действия применяются к файлу ссылки, а не к файлу на который она ссылается.

При создании символьной ссылки, в нее можно записать как абсолютный, так и относительный путь к объекту, на который она ссылается. Если был записан абсолютный путь, например: /путь/к/файлу, то такую символьную ссылку можно переносить в любое место файловой системы и она всегда будет правильно ссылаться на указанный объект. Если же написать относительный путь, например: путь/к/файлу, то она будет ссылаться на объект, относительно той директории, в которой расположена ссылка.

Программа ln.