Ответ
Символическая ссылка (symbolic link, symlink, soft link) — это специальный файл в файловой системе Linux, который служит указателем (ссылкой) на путь к другому файлу или директории. Это аналог «ярлыка» в Windows.
Ключевые характеристики:
- Содержимое: Symlink содержит только текстовый путь к целевому файлу.
- Inode: Имеет собственный inode, отличный от inode цели.
- Разрешения: Права доступа к symlink обычно
lrwxrwxrwx(все могут читать ссылку), но реальный доступ определяется правами целевого файла. - Межфайловая система: Может ссылаться на файлы в других разделах и даже на сетевых ресурсах (NFS, SMB), если путь доступен.
Создание символических ссылок:
# Базовый синтаксис
ln -s <целевой_файл_или_папка> <имя_ссылки>
# Пример 1: Создать ссылку на файл в текущей директории
ln -s /var/log/syslog current-syslog.log
# Пример 2: Создать ссылку на директорию
ln -s /usr/share/doc ./docs-link
# Пример 3: Создать ссылку с абсолютным путём в другом месте
ln -s /home/user/projects/app /opt/application-link
# Пример 4: Создать ссылку с относительным путём (относительно расположения ссылки!)
# Из директории /home/user:
ln -s ../shared/config.yaml ./config # Ссылка будет указывать на /home/shared/config.yaml
Работа с ссылками:
# Проверить, является ли файл ссылкой, и куда он ведёт
ls -l <имя_файла>
# Вывод начинается с 'l', например: lrwxrwxrwx 1 user user 11 Apr 10 12:00 config -> ../shared/config.yaml
# Прочитать цель ссылки
readlink <имя_ссылки>
# Перейти по ссылке в директорию (команда 'cd' следует по symlink'ам)
cd docs-link
# Удалить саму ссылку (целевой файл не затрагивается)
rm current-syslog.log
# Удалить целевой файл (ссылка становится «битой» - dangling symlink)
rm /var/log/syslog
# Проверка: ls -l покажет красный цвет (в некоторых терминалах) и путь с несуществующей целью.
| Отличие от жёсткой ссылки (hard link): | Характеристика | Символическая ссылка (Soft Link) | Жёсткая ссылка (Hard Link) |
|---|---|---|---|
| Inode | Свой собственный inode | Разделяет тот же inode, что и оригинал | |
| На что ссылается | На путь (имя файла) | Непосредственно на данные на диске (inode) | |
| Межфайловая система | Да | Нет (только в пределах одной ФС) | |
| На директории | Да | Нет (обычно, кроме суперпользователя) | |
| При удалении оригинала | Становится битой (dangling) | Данные остаются, пока есть хотя бы одна жёсткая ссылка | |
| Размер | Занимает место, равное длине пути | Не занимает дополнительного места (только запись в каталоге) |
Практическое применение в DevOps:
- Управление версиями ПО: Ссылка
/usr/bin/python→/usr/bin/python3.9. - Организация логов: Ссылка
/var/log/application/current.log→/var/log/application/app-2023-10-27.log. - Развёртывание приложений: Паттерн «current release»:
/var/www/app/releases/20231027-123456/ /var/www/app/releases/20231028-234567/ /var/www/app/current -> /var/www/app/releases/20231028-234567/ # Переключение версии: ln -sfn /var/www/app/releases/20231028-234567 /var/www/app/current - Конфигурация: Ссылка на конфиг из репозитория в директорию, где его ожидает приложение.
- Создание удобных путей: Сокращение длинных путей для частого использования.