Символьные и жесткие ссылки в Linux и macOS: полное руководство
/ 2 min read
Table of Contents
В UNIX-подобных системах (Linux, macOS) ссылки являются фундаментальной частью файловой системы. Они позволяют эффективно управлять данными, создавать псевдонимы для библиотек или организовывать конфигурации.
Существует два основных типа ссылок: символьные (Soft/Symbolic) и жесткие (Hard). Чтобы понять разницу, нужно сначала разобраться в том, как система хранит файлы.
Что такое Inode (индексный дескриптор)?
Представьте, что ваш жесткий диск — это огромный склад с ящиками данных. У каждого ящика есть свой уникальный номер — это и есть Inode.
То, что вы видите в папках (файлы) — это просто записи в «блокноте» системы: Название файла -> Номер ящика.
- Жесткая ссылка — это когда вы в блокноте создаете две разные записи с разными именами, но указываете на один и тот же номер ящика.
- Символьная ссылка — это когда вы создаете запись, которая ведет не к ящику, а к другой записи в блокноте.
1. Символьные ссылки (Symbolic Links)
Символьная ссылка — это отдельный файл, содержащий путь к целевому объекту.
Особенности:
- Могут указывать как на файлы, так и на папки.
- Работают между разными дисками и файловыми системами.
- Если удалить оригинал, ссылка «сломается».
Создание:
ln -s /path/to/original /path/to/linkОбновление ссылки (ключ -sfn):
Если вам нужно переключить существующую ссылку (особенно на папку) на новый путь, используйте комбинацию -sfn:
ln -sfn /new/path/target /path/to/link-f(force) — удаляет старую ссылку перед созданием новой.-n(no-dereference) — гарантирует, что если ссылка ведет на папку, новая ссылка не будет создана внутри этой папки.
2. Жесткие ссылки (Hard Links)
Жесткая ссылка — это фактически второе имя для физических данных на диске.
Особенности:
- Работают только в пределах одного раздела.
- Нельзя создавать для папок.
- Если удалить оригинал, данные останутся доступны по жесткой ссылке.
Создание:
ln /path/to/original /path/to/linkСравнительная таблица
| Свойство | Symbolic Link (-s) | Hard Link |
|---|---|---|
| Для папок | Да | Нет |
| Между разделами | Да | Нет |
| Удаление оригинала | Ссылка ломается | Файл доступен по ссылке |
| Размер на диске | Несколько байт | 0 (указывает на тот же Inode) |
Полезные команды
Как узнать, куда ведет ссылка?
ls -l /path/to/link# Вывод: lrwxr-xr-x ... link -> /path/to/originalУдаление ссылки
Используйте обычную команду rm. Это безопасно — данные оригинала задеты не будут.
rm /path/to/linkРезюме
Используйте символьные ссылки (ln -s) в 99% случаев — это стандарт для конфигураций и ярлыков. Жесткие ссылки полезны для механизмов бэкапа или когда нужно гарантировать сохранность данных при удалении одного из имен файла.