Символические ссылки в Linux: как создать ярлык на папку или файл (ln -s)
Большие файлы логов или медиа забили системный диск, и их нужно перенести на второй подключенный диск (например, в /mnt/storage), но сайт или сервис требует, чтобы файлы оставались по старому системному пути (/var/www/uploads).
Что такое символическая ссылка (Symlink)?
Символическая ссылка (Soft link / Symlink) — это аналог ярлыка в Windows. Это специальный маленький файл-указатель, который перенаправляет программы по новому адресу. Любая программа, открывая симлинк, даже не замечает подмены и думает, что работает с оригинальной папкой.
Синтаксис команды ln -s
Запомните простое правило: ln -s КУДА_ССЫЛАТЬСЯ (Оригинал) ГДЕ_СОЗДАТЬ_ЯРЛЫК (Ссылка)
Шаг 1. Практический пример переноса папки
- Перемещаем тяжелую папку с картинками на большой второй диск:
sudo mv /var/www/uploads /mnt/storage/uploads - Создаем символический ярлык на старом месте:
sudo ln -s /mnt/storage/uploads /var/www/uploads
Теперь веб-сервер будет обращаться по привычному пути /var/www/uploads, но физически все файлы будут писаться на диск /mnt/storage/uploads!
Шаг 2. Как отличить симлинк от обычной папки (ls -l)
Выполните команду просмотра:
ls -l /var/www/Символическая ссылка обозначается буквой l в начале строки и стрелочкой:
lrwxrwxrwx 1 root root 20 Jan 15 uploads -> /mnt/storage/uploadsШаг 3. Как правильно удалить симлинк
Чтобы удалить ссылку-ярлык (без удаления оригинальных файлов):
sudo rm /var/www/uploadsВнимание: никогда не ставьте слэш / в конце имени ссылки при удалении (пишите uploads, а не uploads/), иначе система может удалить файлы внутри целевой папки!
Частые вопросы (FAQ)
В чем разница между жесткой (Hard link) и мягкой (Soft/Symbolic link) ссылкой?
Символическая ссылка (ln -s) — это ярлык, содержащий путь к файлу; она может указывать на папки и работать между разными дисками. Жесткая ссылка (ln без ключа -s) — это прямое второе имя того же самого inode на диске, не может указывать на каталоги и работает только в пределах одного раздела.
Почему ссылка подсвечивается красным цветом и мигает в терминале?
Это 'битая ссылка' (Broken symlink) — файл или папка, на которую указывал ярлык, была перемещена, переименована или удалена.
Нужно ли указывать полные (абсолютные) пути при создании ln -s?
Да, настоятельно рекомендуется всегда указывать полные абсолютные пути (начиная от корня /), чтобы ссылка не сломалась при обращении из других каталогов.
Как обновить путь существующей ссылки без ее удаления?
Используйте флаг принудительной перезаписи -f: ln -sf /new/target/path /path/to/symlink.