# Символические и жесткие ссылки

<https://losst.ru/simvolicheskie-i-zhestkie-ssylki-linux>

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

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

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

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

* Могут ссылаться на файлы и каталоги;
* После удаления, перемещения или переименования файла становятся недействительными;
* Права доступа и номер inode отличаются от исходного файла;
* При изменении прав доступа для исходного файла, права на ссылку останутся неизменными;
* Можно ссылаться на другие разделы диска;
* Содержат только имя файла, а не его содержимое.

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

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

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

* Работают только в пределах одной файловой системы;
* Нельзя ссылаться на каталоги;
* Имеют ту же информацию inode и набор разрешений что и у исходного файла;
* Разрешения на ссылку изменяться при изменении разрешений файла;
* Можно перемещать и переименовывать и даже удалять файл без вреда ссылке.

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

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

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

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

* **-d** - разрешить создавать жесткие ссылки для директорий суперпользователю;
* **-f** - удалять существующие ссылки;
* **-i** - спрашивать нужно ли удалять существующие ссылки;
* **-P** - создать жесткую ссылку;
* **-r** - создать символическую ссылку с относительным путем к файлу;
* **-s** - создать символическую ссылку.

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

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

`ln -s source softlink`

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

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

`ln source hardlink`

### Выводы

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