Links

Жесткие и символические ссылки

Разбор инструментов ln, unlink и отличие символических ссылок от жестких в операционных системах Linux / UNIX.
В системах Linux имеется два вида ссылок – жесткие и символические. Они имеют большие отличия и могут быть полезны в различных ситуациях. Сегодня мы поговорим о том, как создать тот и другой вид ссылки, удалить, а также обсудим отличия этих двух видов.

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

Прежде всего в себе они содержат только путь к исходному файлу и ничего больше их не связывает. Из этого следуют все остальные признаки – различные права, различное имя, возможность ссылаться на файлы другого раздела и так далее.
Создание символической ссылки.
ln -s source.txt linkfile
Будет создана ссылка (или же ярлык) на файл source.txt.

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

Реализация данного типа ссылок расположена на довольно низком уровне операционной системы и затрагивает саму суть работы с файлами.
Никому не секрет, что все файлы, пути и прочее, что мы видим и с чем оперируем это все ссылки на определенные участки памяти диска. Жесткая ссылка подразумевает создание именно такой низкоуровневой ссылки на область памяти.
То есть содержимое одно, но файла, которые привязаны к этому содержимому – два. Благодаря этому мы получаем практически полноценные копии файлов.
Ссылка будет также клонировать все разрешения исходного файла, ее нельзя сделать на каталог и работает она только в пределах единой файловой системы.
Создание жесткой ссылки.
ln source.txt hardlinkfile
Таким образом будет создана жесткая ссылка на файл source.txt.
Даже если удалить исходный файл жесткой ссылки, то она по прежнему будет ссылаться на ту же область памяти и выводить содержимое правильно.

Удаление ссылок

Удаляются ссылки также, как и файлы, но для ссылок есть даже отдельный метод unlink, что иногда полезно при использовании символических ссылок на каталоги, которые не удаляются обычной командой rm.
unlink linkfile