Иногда приложение нужно выкладывать так, чтобы новая версия появлялась почти мгновенно, а откат занимал одну команду. Для этого часто используют директории releases и ссылку current.
Структура может быть такой:
/opt/app/releases/2026-08-29_1200
/opt/app/current -> /opt/app/releases/2026-08-28_1800
Сначала создаём новую папку релиза:
release="/opt/app/releases/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$release"
Потом копируем туда собранные файлы:
rsync -a ./dist/ "$release/"
До переключения current пользователи всё ещё смотрят на старую версию. Это удобно, потому что подготовка релиза не ломает рабочее приложение.
Переключение делается через ln -sfn:
ln -sfn "$release" /opt/app/current
Теперь current указывает на новую директорию. Само переключение происходит быстро, потому что меняется ссылка, а не копируются файлы поверх боевой папки.
Если нужен откат, можно вернуть ссылку на прошлый релиз:
ln -sfn /opt/app/releases/2026-08-28_1800 /opt/app/current
После переключения обычно перезапускают сервис или отправляют reload, если приложение умеет подхватывать файлы без полного рестарта.
Такой подход полезен для простых серверов, статических сайтов, внутренних тулов и приложений без сложной deploy-платформы.
➡️ DevOps Ready | #практика