- deploy/backup.sh: BACKUP_OFFSITE_TARGET (rsync или rclone:remote:path)
выгружает готовый архив после локальной ротации; неудача выгрузки только
предупреждает. Ротация на приёмнике — опционально
(BACKUP_OFFSITE_KEEP_DAYS, rclone delete --min-age). Имя архива получает
суффикс, если бэкап запущен дважды в одну секунду.
- deploy/install.sh: offsite-настройки в .env (BACKUP_OFFSITE_TARGET,
BACKUP_OFFSITE_KEEP_DAYS) отдельным разделом; детектор незаполненных
плейсхолдеров учитывает цифры в именах (FAIL2BAN_ENABLED); dry-run больше не
требует прав на /opt/glchat — явность GLCHAT_ETC_DIR фиксируется до
подключения common.sh, иначе ветка временного каталога была недостижима.
- scripts/test-profiles.sh: сверка таблицы профилей 10.10 и одинакового набора
PROFILE_* (46 проверок), make profiles-test / ops-test.
- scripts/test-backup.sh: бэкап и offsite на синтетическом инстансе — локальный
rsync-приёмник, шим rclone, недоступный хост, нечисловой срок (12 проверок),
make backup-test.
- scripts/test-install.sh: проверка offsite-ключей в .env после установки.