Команда ln: как создать символическую ссылку в Linux
Символическая ссылка — это ярлык: файл, который указывает на другой файл или папку. На сервере ссылками включают сайты в nginx и переключают версии сайта. Ниже — как их создавать, проверять и удалять.
Содержание 11
Что сделать прямо сейчас
- Подключитесь к серверу — инструкция.
- Включите сайт в nginx ссылкой на его настройки:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/. - Проверьте, что ссылка ведёт куда нужно:
ls -l /etc/nginx/sites-enabled/. После имени ссылки стоит стрелка->и путь к файлу. - Проверьте настройки и примените их:
sudo nginx -t, затемsudo systemctl reload nginx.
Сначала пишут, на что ссылаться, затем — где создать ссылку. Если вторым указать папку, ссылка появится в ней под тем же именем.
Как устроена команда
ln -s ЧТО ГДЕ| Часть | Что значит |
|---|---|
-s | создать символическую ссылку |
ЧТО | файл или папка, на которые ссылаемся |
ГДЕ | имя новой ссылки или папка, в которой её создать |
Пишите в ЧТО полный путь от корня, со слешем в начале. Относительный путь ln сохранит как есть, и считаться он будет от папки, где лежит ссылка, а не от папки, где вы были. Например, sudo ln -s sites-available/example.com /etc/nginx/sites-enabled/ из папки /etc/nginx создаст ссылку, которая никуда не ведёт.
ln не проверяет, существует ли ЧТО: ссылка на опечатку создастся без ошибки. Поэтому после создания проверяйте её — как.
Ключи ln
| Ключ | Что делает |
|---|---|
-s | символическая ссылка; без этого ключа ln создаёт жёсткую |
-f | если на этом месте уже есть файл или ссылка, заменить |
-n | вместе с -f: заменить саму ссылку на папку, а не создавать ссылку внутри папки |
-r | вместе с -s: записать путь относительно места ссылки |
-v | написать, какая ссылка создана |
Включить и выключить сайт в nginx
В Ubuntu nginx читает настройки сайтов из папки /etc/nginx/sites-enabled/. Сами файлы лежат в /etc/nginx/sites-available/, а в sites-enabled кладут ссылки на них. Так сайт можно выключить, не удаляя настройки.
| Команда | Что делает |
|---|---|
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ | включить сайт |
sudo rm /etc/nginx/sites-enabled/example.com | выключить сайт: удалится только ссылка, файл в sites-available останется |
После каждого изменения — sudo nginx -t и sudo systemctl reload nginx. Весь путь от настроек до работающего сайта — в инструкции Как разместить сайт на VPS.
Заменить ссылку на новую
Ключи -sfn меняют ссылку за один шаг. Так переключают сайт на новую версию: ссылка /var/www/current ведёт на папку с текущей версией.
sudo ln -sfn /var/www/releases/2 /var/www/currentБез -n ln увидит, что /var/www/current ведёт на папку, и создаст новую ссылку внутри неё, а старая останется.
Куда ведёт ссылка
| Команда | Что покажет |
|---|---|
ls -l /etc/nginx/sites-enabled/ | ссылки и пути, на которые они ведут |
readlink /etc/nginx/sites-enabled/example.com | путь, записанный в ссылке |
readlink -f /etc/nginx/sites-enabled/example.com | полный путь к файлу, на который ссылка ведёт в итоге |
readlink -e /etc/nginx/sites-enabled/example.com | то же, но если файла нет — ничего не выведет |
Если readlink -e ничего не вывел, ссылка битая: файла, на который она ведёт, нет. Удалите её и создайте заново с правильным путём.
Как удалить ссылку
sudo rm /etc/nginx/sites-enabled/example.comrm удаляет саму ссылку, файл, на который она вела, остаётся. Ссылку на папку удаляйте так же — без слеша в конце и без ключа -r: rm /var/www/current. Со слешем команда обратится к самой папке, на которую ведёт ссылка.
Жёсткая ссылка
Без ключа -s ln создаёт жёсткую ссылку — второе имя того же файла. Для папок жёсткие ссылки запрещены. Для настроек и сайтов на сервере используйте символические, с -s.
Ошибки и как их исправить
| Ответ | Что значит | Что сделать |
|---|---|---|
failed to create symbolic link …: File exists | на этом месте уже есть файл или ссылка | проверьте ls -l; заменить — ключи -sfn |
failed to create symbolic link …: Permission denied | нет прав на эту папку | добавьте sudo |
failed to create symbolic link …: No such file or directory | нет папки, в которой создаётся ссылка | проверьте второй путь на опечатки |
hard link not allowed for directory | забыт ключ -s | добавьте -s |
target … is not a directory | после -t указана не папка | проверьте путь после -t |
sudo nginx -t пишет No such file or directory про файл в sites-enabled | ссылка битая | разбор ошибки |
Источники
- Справка ln для Ubuntu 24.04 — ключи -s, -f, -n, -r, -t, -v; без -s создаётся жёсткая ссылка; относительная ссылка считается от папки, где лежит сама ссылка.
- Справка readlink для Ubuntu 24.04 — ключи -f и -e.
- Исходный код coreutils 9.4: ln.c — тексты ошибок failed to create symbolic link, hard link not allowed for directory и target is not a directory.
Сверено 11 октября 2026 года.
Что почитать дальше
- Как разместить сайт на VPSнастройки nginx для своего сайта.
- Редактор nanoкак изменить файл настроек.
- Команда systemctlreload и restart.
- Команды Linux для новичкашпаргалка по командам.
Проверено и обновлено: 11.10.2026