Символические ссылки

В данном разделе содержится информация о символических ссылках — симлинках.

Общие сведения

Система поддерживает символические ссылки (soft links) в Кипарисе. Такая ссылка представляет собой узел типа link, ссылающийся на другой объект target.
Путь к нему указывается при создании ссылки. В процессе вычисления адреса для выполнения операции все обращения к узлу-ссылке автоматически переадресуются к целевому объекту.

Ссылка на целевой объект зависит от его пути.
Если целевой путь будет удален или перемещен, ссылка перестанет действовать. Вы получите сообщение вида Link target does not exist.

Узел-ссылка не занимает дискового пространства. Его атрибут resource_usage/disk_space равен 0. Поэтому лимит на дисковую квоту не может быть превышен из-за создания узлов-ссылок.
При этом каждая ссылка представляет собой узел и занимает один node, поэтому можно превысить лимит nodes.

Создание

Чтобы создать символическую ссылку, используйте команду link. В качестве аргументов сначала укажите адрес целевого узла, затем адрес узла ссылки:

CLI

yt link //tmp/target_table //tmp/target_table_link

Ссылка может вести к произвольным узлам и объектам.
Например, к поддереву //tmp в домашней директории:

CLI

yt link //tmp //home/username/my_own_tmp

Примечание

Относительные ссылки не поддерживаются.

Переадресация

Автоматическая переадресация от узла-ссылки к целевому объекту работает с рядом исключений:

  • Команды remove, create и link для целевого пути обслуживаются в узле-ссылке. Например, при удалении //tmp/target_table_link пользователь не повредит содержимое таблицы //tmp/target_table.
  • Команда move сработает на целевом узле и узел-ссылка станет недействительной.

Чтобы отключить переадресацию, добавьте в конец имени ссылки маркер & (амперсанд).
Например, это позволяет изучать атрибуты узла-ссылки, а не целевого объекта.
Так, чтобы получить путь целевого объекта, выполните yt get //tmp/target_table_link&/@. Путь будет указан в атрибуте target_path.

Системные атрибуты

Помимо атрибутов, общих для всех типов узлов, узлы-ссылки содержат атрибуты:

Имя Тип Значение
target_path string Путь до объекта, на который указывает ссылка.
broken bool true, если ссылка указывает на несуществующий объект, иначе false.