Перейти к содержимому

RISH 2.9.6: бэкапы по месяцам и исправление установки

04 сентября 2026

Вышел RISH 2.9.6. Главное изменение — более длинная история резервных копий. Теперь RISH может сохранять не только несколько последних бэкапов, но и по одной копии за каждый из предыдущих месяцев.

Релиз также исправляет несколько проблем, которые проявлялись в реальной работе: бэкап активного сайта мог остановиться из-за изменившегося файла, смена PHP не затрагивала отдельную HTTPS-конфигурацию Selectel, а установка на AlmaLinux 10 могла упереться в несовместимые пакеты EPEL.

Версия 2.9.6 включает все изменения после выпуска 2.9.4, в том числе промежуточную 2.9.5. Разберём, как работают новые возможности, какие ошибки исправлены и что нужно проверить после обновления.

Месячные копии без отдельного расписания

Раньше за глубину истории отвечал только параметр keeplast. При значении keeplast=5 RISH оставлял пять последних каталогов с бэкапами. Если копии создавались каждый день, вся история занимала примерно пять дней — и могла оказаться слишком короткой, если удалённый файл или повреждение базы обнаруживались не сразу.

В версии 2.9.6 появился параметр keepmonthly. RISH по-прежнему сохраняет последние копии по правилу keeplast, но дополнительно оставляет последнюю существующую непустую копию за каждый из предыдущих календарных месяцев. Новое расписание для этого не требуется: месячными становятся уже созданные каталоги с датами.

Например, при keeplast=5 и keepmonthly=6 сохранятся пять самых свежих бэкапов и по одной копии за шесть завершившихся месяцев. Если одна и та же дата подходит под оба правила, дополнительная копия не создаётся — существующий каталог просто не удаляется.

Для новой конфигурации используется keepmonthly=6. При обновлении существующего сервера postupdate.sh добавляет более осторожное значение keepmonthly=1, если параметра ещё нет. Значение 0 отключает месячное хранение.

Текущие значения keeplast и keepmonthly, а также путь к /root/rish/rish_config.sh теперь видны прямо в меню резервного копирования. Там же появился пункт «Редактировать файл настроек»: он открывает конфигурацию в mcedit, проверяет её через bash -n и не позволяет запустить бэкап с синтаксически повреждённым файлом.

Ротация тоже стала осторожнее. Автоматически удаляются только непустые каталоги с датами в формате YYYY.MM.DD; папки с другими именами и посторонние данные не затрагиваются. Если RISH не смог надёжно прочитать список копий или проверить их содержимое, очистка пропускается. Для хранилищ, где не работает rclone purge, предусмотрен совместимый способ удаления с последующей проверкой результата. Если очистка завершилась ошибкой, новый бэкап остаётся сохранённым, а RISH записывает предупреждение в системный журнал.

После обновления: проверьте сайты с сертификатами Selectel

Если до обновления вы меняли PHP у сайта с wildcard-сертификатом Selectel, повторно выберите нужную версию через пункт «Сменить версию PHP» и проверьте сайт именно по HTTPS. Обычное обновление RISH не переписывает существующие виртуальные хосты автоматически.

Смена PHP для сайтов с сертификатами Selectel

Для сайта с wildcard-сертификатом Selectel RISH создаёт отдельный виртуальный хост Apache:

/etc/httpd/conf.d/<сайт>-selectel-ssl.conf

В этом файле указан сокет PHP-FPM. До версии 2.9.6 пункт «Сменить версию PHP» обновлял основной конфиг сайта, обычный SSL-конфиг и конфигурацию Let’s Encrypt, но пропускал файл <сайт>-selectel-ssl.conf. В результате HTTP уже мог работать на новой PHP, а основной HTTPS-адрес — продолжать обращаться к старому пулу.

Теперь конфигурация Selectel обновляется вместе с остальными виртуальными хостами, а её предыдущая версия сохраняется в файле с расширением .bak. После проверки конфигурации Apache изменение можно применить обычной перезагрузкой конфигурации.

Бэкап и клонирование при изменении файлов

На работающем сайте файлы постоянно меняются: обновляется кэш, записываются логи и сессии, загружаются изображения. Если файл изменился прямо во время чтения, tar завершает работу с кодом 1. Это предупреждение, но раньше RISH воспринимал его как ошибку всей цепочки: плановый бэкап останавливался, а уже созданный вручную архив удалялся.

В RISH 2.9.6 код tar=1 обрабатывается отдельно. Плановый бэкап продолжается, ручной архив сохраняется, а администратор видит предупреждение: копии изменившихся во время чтения файлов могут быть неточными.

При этом настоящие ошибки не скрываются. RISH отдельно проверяет работу tar, шифрования age и разбиения архива командой split. Ошибка шифрования, записи или передачи по-прежнему останавливает операцию.

Также исправлено клонирование сайтов между серверами. Изменение исходного файла больше не обрывает перенос целиком, но ошибки SSH, pv, локальной распаковки и серьёзные ошибки tar остаются критическими.

Установщик стал предсказуемее

Исправлена установка на AlmaLinux 10

На AlmaLinux 10 установщик мог получить из EPEL пакеты, собранные для более новой минорной версии Enterprise Linux. Проблема была воспроизведена на AlmaLinux 10.2 при установке Certbot: EPEL уже предлагал пакет python3-pyOpenSSL для EL 10.3, а подходящей версии cryptography в BaseOS 10.2 ещё не было. DNF не мог собрать совместимый набор зависимостей и останавливал установку.

Теперь на стабильной EL10 RISH сравнивает минорную версию системы с пакетами в подключённом EPEL. Если репозиторий опережает систему, поддерживаемые адреса EPEL переключаются на её ветку. Перед изменением создаётся резервная копия конфигурации, а после него репозиторий проверяется повторно. Если проверка не пройдена, исходные файлы восстанавливаются и установка останавливается до установки несовместимых пакетов.

Завершённые шаги больше не зависят от текста сообщений

Раньше RISH определял выполненные действия по точным русским строкам в /root/rish/logfile_rish_install.log. Стоило изменить формулировку на экране — и при повторном запуске уже завершённый шаг мог выполниться снова.

Теперь состояние хранится отдельно в /root/rish/completed_steps, а каждому шагу присвоен постоянный номер. При первом обновлении известные записи переносятся из старого журнала, дубликаты и устаревшие служебные строки отбрасываются. Неизвестные записи показываются администратору, но не мешают обновлению. Если postupdate.sh завершается ошибкой, основной сценарий обновления больше не скрывает её и просит повторить обновление после устранения причины.

При установке RISH на новый сервер Apache и MariaDB не перезапускаются без необходимости

Установщик настраивает для Apache и MariaDB автоматический перезапуск после непредвиденной остановки. Раньше после записи параметров обе службы принудительно перезапускались. Теперь RISH выполняет systemctl daemon-reload, проверяет, что systemd применил политику Restart=always, и отдельно смотрит фактическое состояние службы. Работающая служба остаётся запущенной; остановленная запускается и проверяется повторно.

Точнее стала и обработка Postfix. Отсутствующая служба больше не показывается как ошибка, а сбой самого запроса к systemd не выдаётся за отсутствие Postfix. В случае проблемы установщик выводит подходящую диагностическую команду и не отмечает шаг выполненным.

Другие изменения после RISH 2.9.4

  • Обновлён выбор MariaDB для новой установки. Из списка убрана версия 10.6; доступны 10.11, 11.4, 11.8 и 12.3, по умолчанию выбрана 11.4. Уже установленная MariaDB 10.6 при обычном обновлении RISH не удаляется и не заменяется.
  • Информация о пользователях стала понятнее. В интерфейсе используется слово «папка», а возле содержимого www явно указано, что считаются только объекты верхнего уровня.
  • Уточнена лицензия. В MIT License исправлена строка правообладателя, а в README пояснено, что MIT относится к коду RISH. Устанавливаемые и включённые сторонние компоненты сохраняют собственные лицензии.
  • Убраны служебные записи из состояния установки. Например, значение innodb_buffer_pool_size больше не записывается как выполненный шаг. Заодно добавлены проверки перехода в рабочие папки, исправлено экранирование путей и устранены замечания статического анализа.

Что проверить после обновления

  1. Откройте меню резервного копирования и проверьте значения keeplast и keepmonthly. На существующем сервере при первом обновлении будет добавлено keepmonthly=1.
  2. Оцените свободное место в удалённом хранилище. Если месячные копии не нужны, установите keepmonthly=0; если нужна более длинная история — увеличьте значение.
  3. Создайте тестовый бэкап и убедитесь, что он загрузился без ошибок очистки. Периодически проверяйте не только наличие файлов в облаке, но и реальное восстановление архива и дампа базы.
  4. Если до версии 2.9.6 вы меняли PHP у сайта с сертификатом Selectel, повторно выберите нужную версию и проверьте сайт по HTTPS.

Проверка EPEL, новый порядок настройки Apache, MariaDB и Postfix, а также обновлённый список MariaDB относятся к новой или незавершённой первоначальной установке. Обычное обновление работающего сервера не переключает его EPEL, не перезапускает службы и не меняет установленную версию базы данных.

RISH 2.9.6 не просто добавляет ещё один режим хранения. Релиз делает всю цепочку резервного копирования понятнее и устойчивее — от настройки глубины истории до архивации меняющихся файлов и безопасной очистки удалённого хранилища.

Основатель проекта RISH