DataLife Engine / Жесткие и символические ссылки в Linux: полный гид для эффективной работы

Жесткие и символические ссылки в Linux: полный гид для эффективной работы

Символические и жесткие ссылки - это особенность файловой системы Linux, которая позволяет размещать один и тот же файл в нескольких директориях. Это очень похоже на ярлыки в Windows, так как файл на самом деле остается там же где и был, но вы можете на него сослаться из любого другого места.

В Linux существует два типа ссылок на файлы. Это символические и жесткие ссылки Linux. Они очень сильно отличаются и каждый тип имеет очень важное значение. В этой небольшой статье мы рассмотрим чем же отличаются эти ссылки, зачем они нужны, а также как создавать ссылки на файлы в Linux.


Содержание статьи

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

Символические ссылки более всего похожи на обычные ярлыки. Они содержат адрес нужного файла в вашей файловой системе. Когда вы пытаетесь открыть такую ссылку, то открывается целевой файл или папка. Главное ее отличие от жестких ссылок в том, что при удалении целевого файла ссылка останется, но она будет указывать в никуда, поскольку файла на самом деле больше нет.

Вот основные особенности символических ссылок:

Теперь давайте рассмотрим жесткие ссылки.

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

Этот тип ссылок реализован на более низком уровне файловой системы. Файл размещен только в определенном месте жесткого диска. Но на это место могут ссылаться несколько ссылок из файловой системы. Каждая из ссылок - это отдельный файл, но ведут они к одному участку жесткого диска. Файл можно перемещать между каталогами, и все ссылки останутся рабочими, поскольку для них неважно имя. Рассмотрим особенности:

Использование ссылок в Linux

Теоретические отличия вы знаете, но осталось закрепить все это на практике, поэтому давайте приведем несколько примеров работы со ссылками в Linux. Для создания символических ссылок существует утилита ln. Ее синтаксис очень прост:

$ ln опции файл_источник файл_ссылки

Рассмотрим опции утилиты:

Создание символических ссылок

Сначала создайте папку test и перейдите в нее:

mkdir test && cd test

Жесткие и символические ссылки в Linux: полный гид для эффективной работы

Затем создайте файл с именем source с каким-либо текстом:

echo "текст текст текст текст" > source
$ cat source

Жесткие и символические ссылки в Linux: полный гид для эффективной работы

Файл готов, дальше создадим символическую ссылку Linux, для этого используется команда ln с опцией -s:

ln -s source softlink

Жесткие и символические ссылки в Linux: полный гид для эффективной работы

Попробуем посмотреть содержимое файла по ссылке:

cat softlink

Жесткие и символические ссылки в Linux: полный гид для эффективной работы

Как видите, нет никакой разницы между ней и исходным файлом. Но утилита ls покажет что это действительно ссылка:

ls -li

Жесткие и символические ссылки в Linux: полный гид для эффективной работы

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

Теперь удалите исходный файл и посмотрите что будет:

cat softlink

Жесткие и символические ссылки в Linux: полный гид для эффективной работы

Вы получите ошибку, что такого файла не существует, потому что мы действительно удалили исходный файл. Если вы удалите ссылку, то исходный файл останется на месте.

Создание жестких ссылок

Снова создайте файл source с произвольным текстом:

echo "текст текст текст текст" > source
$ cat source

Жесткие и символические ссылки в Linux: полный гид для эффективной работы

Теперь создадим жесткую ссылку Linux. Для этого достаточно вызвать утилиту без параметров:

ln source hardlink

Жесткие и символические ссылки в Linux: полный гид для эффективной работы

Посмотрите содержимое файла:

cat hardlink

Жесткие и символические ссылки в Linux: полный гид для эффективной работы

Данные те же самые, а если мы посмотрим вывод утилиты ls, то увидим что inode и права доступа тоже совпадают:

ls -li

Жесткие и символические ссылки в Linux: полный гид для эффективной работы

Если для одного из файлов поменять разрешения, то они изменяться и у другого. Теперь удалите исходный файл:

rm source

Затем посмотрите содержимое:

cat hardlink

Жесткие и символические ссылки в Linux: полный гид для эффективной работы

Как видите, ничего не произошло и ссылка по-прежнему указывает на нужный участок диска, это главное отличие жесткой ссылки от символической. Мы можем сделать вывод, что жесткая ссылка linux это обычный файл. Каждый файл имеет как минимум одну ссылку, но для некоторых мы можем создать несколько ссылок.

Выводы

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

На завершение видео про ссылки в Linux:

12-10-2025, 17:14
Вернуться назад