Резервные копии защищают базы данных, настройки и медиафайлы радиоаккаунтов и позволяют переносить аккаунты на другой сервер. Полная копия включает медиафайлы. Быстрый режим сохраняет базы данных и настройки без медиафайлов, поэтому требует меньше места и времени. Каждый архив пригоден для самостоятельного восстановления: инкрементальное копирование не используется.

Перед отправкой в хранилище сервер создаёт архив на локальном диске. Для этого нужно свободное место под файлы и базы данных аккаунта, а также настроенный запас свободного места. Быстрый режим полезен, если на диске не хватает места для ещё одной копии медиатеки.

Локальные копии и расписания аккаунтов

Откройте Радио аккаунты и нажмите кнопку Бэкап со значком диска у нужного аккаунта.


Здесь можно:

  • Нажать Сделать сейчас, чтобы запросить резервное копирование при следующем запуске задания на сервере.
  • Выбрать Авто-бэкап → Ежедневно или Еженедельно, указать время или день недели и нажать Сохранить.
  • Включить Быстрый режим, чтобы не копировать медиафайлы.
  • Нажать Применить ко всем, чтобы применить настройки и расписание локального копирования ко всем аккаунтам, которыми вы управляете.

Локальные архивы сохраняются в /var/users/backup/<username>.tar.gz. Новая успешно созданная копия заменяет локальный архив этого аккаунта. Если архив доступен, в настройках копирования аккаунта отображаются его путь и кнопка скачивания.

Общие настройки сервера и управление удалёнными хранилищами находятся в разделе Настройки → Бэкапы и восстановление (/settings/backup), доступном администраторам. На странице три вкладки:

  • Бэкап: хранилища, серверные настройки, резервные копии и предупреждения об удалённом копировании.
  • Восстановление: восстановление отсутствующих аккаунтов, массовое восстановление и история запросов.
  • Журнал: результаты операций и подробности ошибок. Сначала отображается последний цикл копирования; для просмотра предыдущих используйте фильтры.

Важно для локальных архивов: настройка Сохранять локальную копию после успешной загрузки по умолчанию выключена. При включённом удалённом копировании сервер может удалить локальный архив аккаунта, когда все хранилища, которым полагается копия этого архива, получат проверенную копию. Включите настройку, если архив нужен и на сервере. Если копия ещё не получена из-за ошибки, отключения или удаления хранилища, локальный архив сохраняется. Без удалённых загрузок локальные копии остаются в каталоге резервного копирования.

Запуск резервного копирования из консоли сервера

Подключитесь как root и используйте Python из окружения Платформы Интернет-радио. Чтобы выполнить задания по расписанию:

/opt/venv/sc/bin/python /opt/bin/sc_backup

Чтобы принудительно создать копии всех подходящих радиоаккаунтов:

/opt/venv/sc/bin/python /opt/bin/sc_backup all

Чтобы вместо полных копий создать быстрые:

/opt/venv/sc/bin/python /opt/bin/sc_backup all quick

При обычном запуске задание также выполняет удалённые загрузки, сканирование, запросы на восстановление и скачивание. Установщик добавляет в /etc/crontab следующую строку:

*/15 * * * * root /opt/venv/sc/bin/python /opt/bin/sc_backup 1>/dev/null 2>/dev/null

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

Удалённые резервные копии

Удалённое копирование отправляет архив каждого аккаунта в одно или несколько хранилищ вне сервера. Загрузки в хранилища, которым нужна новая копия, выполняются параллельно. Перед отправкой сервер проверяет локальный архив, затем проверяет размер загруженного файла и сравнивает контрольную сумму, если обе стороны поддерживают общий алгоритм. У каждого хранилища свои частота копирования, политика хранения, ограничение скорости и состояние.

Если удалённая загрузка не удалась, успешно созданная локальная копия всё равно имеет статус Готово, но рядом появляется предупреждение об удалённом копировании. Локальный архив остаётся доступен для повторной попытки. Проблемы с хранилищем, повторяющиеся ошибки и предупреждения о загрузках отображаются в панели и могут отправляться по электронной почте.

Требования и электронная почта

Установите или обновите платформу на сервере. Установщик и скрипт обновления устанавливают поддерживаемую версию rclone и необходимые утилиты; общесистемный файл конфигурации rclone создавать не нужно. Разрешите исходящие соединения с выбранным хранилищем.

Предупреждения о резервном копировании и письма с готовыми ссылками для скачивания используют раздел [Mail] файла /opt/bin/utils.ini: SMTP_SERVER, SMTP_USER, SMTP_PASSWORD, SMTP_FROM и адрес получателя SMTP_TO. Задание подключается к SMTP с авторизацией и STARTTLS на порту 587. Если письма не приходят, проверьте эти настройки сервера; результаты в панели доступны и без почты.

Серверные настройки

На вкладке Бэкап найдите Серверные настройки. После изменения параметров нажмите Сохранить.

Настройка Назначение
Настройки бэкапа для новых радиостанций Расписание автоматического копирования, время/день недели и быстрый режим для новых аккаунтов. Существующие аккаунты сохраняют свои настройки.
Включить удалённые бэкапы для новых аккаунтов Включает удалённое копирование для новых аккаунтов. Также отметьте нужные хранилища По умолчанию для новых аккаунтов. По умолчанию выключено.
Сохранять локальную копию после успешной загрузки Оставляет локальный архив после проверки всех загрузок, предусмотренных для него. По умолчанию выключено.
Общий лимит загрузки (Мбит/с) Делится поровну между хранилищами, в которые параллельно загружается архив одного аккаунта, с учётом ограничения каждого хранилища. Пустое значение или 0 — без ограничения.
Минимум свободного места Запас, который должен остаться после создания архива с учётом его оценочного размера или подготовки скачивания. По умолчанию 1000 МБ. Можно выбрать МБ или процент от размера файловой системы; допустимый процент — 0–90.
Пауза между аккаунтами (секунды) Задержка между резервным копированием аккаунтов. По умолчанию 0.
Авто-отключение хранилища после неудачных циклов Останавливает новые загрузки после нескольких неудачных циклов подряд. По умолчанию 5; 0 отключает эту защиту.
Добавление хранилища и выбор политики
  1. В разделе Хранилища нажмите Добавить хранилище. Откроется большое диалоговое окно.
  2. Выберите Тип, укажите уникальное Название и Базовый путь, затем заполните поля провайдера по инструкции ниже. Базовый путь — каталог внутри хранилища, обычно sc_backups, без начального слеша и компонентов ...
  3. Выберите Режим хранения:
    • Дни: поле Хранить (дней); 0 сохраняет копии навсегда.
    • Количества: поля Хранить по дням, Хранить по неделям и Хранить по месяцам. Сервер оставляет новейшую копию за каждый из последних N дней, недель ISO и месяцев, в которых есть копии. Сохраняется объединение этих выборок; хотя бы одно значение должно быть положительным.
  4. Выберите параметр Частота: Каждый бэкап, Ежедневно или Еженедельно. При ежедневном и еженедельном копировании срок определяется по последней проверенной копии с допуском в один час. Эта настройка ограничивает удалённые копии, но не запускает создание локальных копий независимо от расписания аккаунта.
  5. При необходимости задайте Ограничение в Мбит/с и отметьте По умолчанию для новых аккаунтов.
  6. Нажмите Проверить подключение, убедитесь в результате и нажмите Сохранить.

Очистка по политике хранения выполняется после успешной загрузки в каталоге аккаунта на хранилище. Новейшая проверенная копия и только что загруженная копия всегда сохраняются. При удалении из Drive корзина не используется, а в B2 применяется окончательное удаление; блокировка объектов и версионирование у провайдера всё же могут сохранять данные.

Нажмите Изменить, чтобы обновить учётные данные или рабочие параметры. Сохранённые секретные значения не показываются: оставьте их пустыми, чтобы сохранить, или нажмите Заменить, чтобы ввести новые. Тип, базовый путь и поля физического расположения после создания заблокированы. Для другого бакета, сервера/логина или папки Drive создайте новое хранилище.

Выбор хранилищ для аккаунта

Добавление хранилища не включает загрузки автоматически для всех существующих аккаунтов.

  1. Откройте настройки Бэкап нужного аккаунта в разделе Радио аккаунты.
  2. В разделе Удалённый бэкап включите Копировать бэкапы этого аккаунта на удалённые хранилища.
  3. Отметьте нужные Хранилища.
  4. В разделе Переопределение хранения оставьте Наследовать или задайте полную политику по дням/количествам для этого аккаунта.
  5. Нажмите Сохранить удалённые настройки. Убедитесь, что у аккаунта также настроено локальное расписание, или нажмите Сделать сейчас.
Каталоги и имена удалённых файлов

Новые архивы используют следующую структуру с временем создания в UTC:

<base path>/<server hostname>/<user>/<user>-YYYY-MM-DD_HH-MM-SS[-quick].tar.gz

Имя хоста — основное доменное имя сервера из его настроек, а не отображаемое название хранилища. Например, быстрая копия может называться sc_backups/radio.example.com/station/station-2026-10-17_02-00-00-quick.tar.gz. Распознаются и имена с компактной датой, например station-20261017T020000Z.tar.gz. Сохраняйте структуру каталогов и имена файлов, чтобы сканирование и восстановление могли их найти.

Настройка удалённых хранилищ

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

S3-совместимое
  1. Создайте бакет в консоли провайдера и учётные данные S3 с доступом к нему.

  2. Выберите S3-совместимое. Заполните поля:

    Поле Значение
    Провайдер Amazon Web Services (AWS) S3, Ceph Object Storage, Minio Object Storage, Wasabi Object Storage, DigitalOcean Spaces, Cloudflare R2 или Прочее S3-совместимое. Если провайдера нет в списке, выберите последний вариант.
    Endpoint S3-адрес провайдера, начинающийся с https://, например https://s3.example.com. Нужен адрес API, а не адрес сайта бакета.
    Регион Предзаполнен значением default, которое принимают многие S3-совместимые сервисы. Если провайдер требует регион, укажите его точное значение, например us-east-1.
    Бакет Имя существующего бакета.
    ACL Оставьте пустым, чтобы копии оставались закрытыми, если провайдер не требует определённого ACL.
    Класс хранения Оставьте пустым для стандартного класса или укажите поддерживаемый провайдером класс.
    Access Key ID, Secret Access Key Пара ключей со страницы учётных данных S3 у провайдера.
  3. Проверьте подключение и сохраните хранилище.

Backblaze B2
  1. В консоли Backblaze создайте бакет B2 и ключ приложения с доступом к нему, включая просмотр списка, чтение, запись и удаление.
  2. Выберите Backblaze B2 и укажите Бакет.
  3. Если используется ключ приложения, в поле ID аккаунта введите его applicationKeyId, а в Application Key — секретное значение ключа. Основной ID аккаунта используется с главным ключом, а не с ограниченным ключом приложения. См. инструкцию rclone по учётным данным B2 .
  4. Проверьте подключение и сохраните хранилище. Сохраните ключ в безопасном месте, когда Backblaze впервые его покажет.
SFTP
  1. Подготовьте SFTP-аккаунт с доступом к каталогу резервных копий.

  2. Выберите SFTP, укажите Хост, Порт (22, если пусто) и Пользователь. Введите Пароль или вставьте целиком Приватный ключ (PEM); нужен хотя бы один способ входа.

  3. Получите ключи хоста с доверенного компьютера:

    ssh-keyscan sftp.example.com
    # For a custom SSH port:
    ssh-keyscan -p 2222 sftp.example.com
  4. Сверьте отпечатки ключей с администратором SFTP-сервера по доверенному каналу. Вставьте все подходящие строки вывода в Ключ хоста (known_hosts). Подойдут и хешированные записи из доверенного файла known_hosts. Вставляйте текст, а не имя файла.

  5. Проверьте подключение и сохраните хранилище. При ошибке проверки ключа сначала убедитесь в подлинности сервера, затем обновите строки ключей; не отключайте проверку.

FTP и FTPS
  1. Выберите FTP и введите Хост, Пользователь и Пароль, полученные у FTP-провайдера.
  2. Выберите Шифрование:
    • Автоматически (рекомендуется) проверяет явный FTPS, неявный FTPS и обычный FTP, сохраняя первый режим с успешным входом и его порт.
    • Явный FTPS использует AUTH TLS, обычно на порту 21.
    • Неявный FTPS устанавливает TLS сразу, обычно на порту 990.
    • Обычный FTP передаёт пароль и архивы без шифрования. Используйте его только в доверенной сети; в списке он помечен Без шифрования.
  3. Укажите Порт или оставьте поле пустым для стандартного порта выбранного режима. Автоматический режим проверяет явный TLS на указанном/стандартном порту, неявный TLS на указанном порту или 990, затем обычный FTP на 21. Если необходимо шифрование, выберите один из режимов TLS явно.
  4. Проверьте подключение и сохраните хранилище. При ошибке сертификата нужен действительный сертификат, соответствующий имени хоста; не обходите ошибку выбором обычного FTP в недоверенной сети.
Google Drive

Выберите Google Drive. Для интерактивной авторизации установите Способ входа → OAuth-токен. Поле ID корневой папки необязательно: откройте нужную папку в Google Drive и скопируйте ID после /folders/ в её URL или оставьте поле пустым для корневой папки. Базовый путь создаётся внутри этого расположения.

Подключение через собственное приложение Google

  1. В Google Cloud Console создайте или выберите проект. В разделе APIs & Services → Library включите Google Drive API.

  2. Заполните название приложения и контактные данные в Google Auth platform → Branding. В Audience выберите Internal для пользователей своей организации Workspace или External для остальных аккаунтов Google. Для External опубликуйте приложение со статусом In production: в режиме Testing токены обновления для Drive истекают через семь дней. См. настройку экрана согласия Google и правила публикации .

  3. В Data Access добавьте https://www.googleapis.com/auth/drive для чтения и записи резервных копий.

  4. В Clients → Create client выберите Web application. В Authorized redirect URIs добавьте точное значение URI перенаправления из формы хранилища, включая порт и завершающий слеш. Формат адреса:

    https://<panel hostname>:<admin panel port>/api/v1/backup_oauth/callback/
  5. Скопируйте ID и секрет нового клиента в OAuth Client ID и OAuth Client Secret в панели. См. инструкцию Google для клиента Web application .

  6. Нажмите Подключить Google Drive и предоставьте доступ. Если Google предупреждает, что ваше приложение не проверено, убедитесь, что это ваше приложение и проект, затем выберите Advanced → Go to …, если такая возможность доступна. Политика организации может потребовать разрешения администратора Workspace.

  7. Дождитесь Подключено ✓, затем нажмите Проверить подключение и Сохранить.

После авторизации всплывающее окно может закрыться автоматически. Его можно закрыть и вручную: форма также периодически проверяет результат. Если окно заблокировано, нажмите Открыть страницу авторизации. Завершите подключение и сохраните настройки в течение десяти минут. При редактировании можно оставить сохранённый токен или выбрать Подключить заново. После изменения учётных данных приложения или scope нужно подключиться повторно.

Поле Scope находится в разделе Дополнительно. Оставьте его пустым для полного доступа к Drive. Меняйте его только при намеренной авторизации с соответствующими правами; права только на чтение не позволяют загружать копии. Для ручной авторизации см. Вставка токена rclone .

Сервисный аккаунт и общий диск

У сервисных аккаунтов нет собственной квоты хранения, поэтому для этого режима нужен общий диск Google Workspace — Shared Drive.

  1. В Google Cloud Console включите Drive API для проекта. В разделе IAM & Admin → Service Accounts создайте сервисный аккаунт.
  2. Откройте вкладку Keys сервисного аккаунта и выберите Add key → Create new key → JSON. Скачайте файл. См. инструкцию Google по ключам .
  3. Откройте общий диск в Google Drive. Его ID — последняя часть URL. Добавьте адрес электронной почты сервисного аккаунта из JSON (client_email) с ролью Content manager.
  4. В панели выберите Способ входа → Сервисный аккаунт (общий диск). Вставьте весь скачанный файл в Ключ сервисного аккаунта (JSON), укажите ID общего диска и при необходимости ID корневой папки внутри этого диска.
  5. Проверьте подключение и сохраните хранилище. Вставляйте текст JSON, а не путь к файлу ключа. Ключ можно заменить позже, но ID общего диска и ID корневой папки заблокированы.

По умолчанию ключи сервисного аккаунта не истекают, в отличие от OAuth-доступа в режиме Testing; организация может задать политику срока действия ключей. Храните ключ в секрете, а при ротации заменяйте его и отзывайте прежний. Хранилище использует либо OAuth-токен, либо ключ сервисного аккаунта.

Dropbox

Выберите Dropbox. Для каждого хранилища Dropbox указывайте отдельный базовый путь, в том числе для хранилищ разных аккаунтов Dropbox.

Подключение через собственное приложение Dropbox

  1. Откройте Dropbox App Console и создайте приложение. Выберите Scoped access, затем App folder или Full Dropbox и название приложения. App folder ограничивает копии папкой приложения; Full Dropbox даёт доступ к папкам аккаунта. См. руководство Dropbox по доступу .
  2. Перед подключением откройте Permissions, включите files.metadata.read, files.content.read и files.content.write, затем примените изменения.
  3. В Settings → OAuth 2 → Redirect URIs добавьте точное значение URI перенаправления из формы панели, включая порт и завершающий слеш. Используйте тот же формат адреса обратного вызова панели, что показан выше для Google.
  4. Скопируйте App key в OAuth Client ID, а App secret — в OAuth Client Secret.
  5. Нажмите Подключить Dropbox, войдите и предоставьте доступ. Панель запрашивает офлайн-доступ, чтобы загрузки могли обновлять учётные данные без повторного входа.
  6. После Подключено ✓ нажмите Проверить подключение и Сохранить. Окно с завершённой авторизацией можно закрыть вручную; если окно заблокировано, используйте Открыть страницу авторизации. Для замены сохранённого токена нажмите Подключить заново.

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

Вставка токена rclone: Google Drive или Dropbox

Для обоих провайдеров это альтернатива кнопкам подключения.

  1. Установите rclone на компьютер с браузером. Используйте ту же основную версию, что и на сервере; желательно совпадение всего номера версии (его показывает rclone version).

  2. Выполните на этом компьютере команду для нужного сервиса:

    rclone authorize "drive"
    # Or, for Dropbox:
    rclone authorize "dropbox"
  3. Если хотите использовать собственное OAuth-приложение, укажите его ID и секрет:

    rclone authorize "drive" "<client_id>" "<client_secret>"
    # Or, for Dropbox:
    rclone authorize "dropbox" "<client_id>" "<client_secret>"

    Для собственного клиента Google, используемого этой командой, создайте в том же проекте клиент типа Desktop app; кнопка подключения в панели использует клиент Web application. Примените описанные выше настройки согласия и публикации. Собственный клиент Google позволяет не зависеть от общего приложения rclone, которое выводится из эксплуатации. Для собственного приложения Dropbox дополнительно зарегистрируйте локальный URI перенаправления, запрошенный rclone, обычно http://localhost:53682/. См. инструкцию rclone для Drive и инструкцию для Dropbox .

  4. Пройдите авторизацию в браузере. Локальный порт 53682 на компьютере с rclone должен быть свободен. Если браузер не открылся, перейдите по локальной ссылке, выведенной rclone, на том же компьютере.

  5. Скопируйте только полный JSON-токен, выведенный после авторизации, включая { и }. В панели откройте Дополнительно и вставьте его в Токен. Для Drive оставьте Способ входа → OAuth-токен.

  6. Если использовали собственное приложение, введите ту же пару ID/секрета в OAuth Client ID и OAuth Client Secret. Иначе оставьте оба поля пустыми. Проверьте подключение и сохраните хранилище.

Серверу без графического интерфейса браузер не нужен: выполните rclone authorize на другом компьютере и перенесите токен в форму. Эта команда использует локальный адрес возврата из браузера, отличный от адреса обратного вызова панели. См. rclone authorize и настройку без браузера на сервере .

Проверка подключения, состояние и ошибки загрузки

Кнопка Проверить подключение при добавлении или редактировании проверяет текущие несохранённые поля; пустые секретные поля при редактировании используют сохранённые значения. Проверка записывает, читает и удаляет небольшой тестовый файл. Кнопка Проверить в списке хранилищ проверяет сохранённую конфигурацию и обновляет индикатор состояния.

  • Не проверялось — результат проверки ещё не записан.
  • Работает — записан успешный результат соответствующей проверки.
  • При ошибке показываются её категория, подробности и время последней проверки. Успешное чтение не снимает ошибку записи/удаления; после исправления доступа выполните полную проверку кнопкой Проверить. Сервер также периодически проверяет чтение — примерно раз в час во время запусков задания.
Причина ошибки Что проверить
Авторизация Замените неверный пароль/ключ, подключите OAuth заново, проверьте статус публикации Google или доступ сервисного аккаунта.
Доступ запрещён Предоставьте права на просмотр списка, чтение, запись и удаление в бакете/папке, а также нужные права приложения Dropbox или роль на общем диске.
Подключение Проверьте хост, порт, DNS, межсетевой экран и доступность сети с сервера.
TLS или сертификат Проверьте имя, срок действия и цепочку доверия сертификата, а также выбранный режим шифрования FTP.
Ключ хоста Сверьте отпечаток SFTP-сервера и вставьте полные подходящие строки known_hosts.
Не найдено Проверьте существование бакета, папки Drive по её ID и базового пути.
Квота Освободите место или увеличьте квоту у провайдера.

Подробности смотрите на вкладке Журнал и в предупреждении аккаунта. Отсутствие или несоответствие отдельной резервной копии может отображаться как предупреждение операции без изменения индикатора состояния хранилища. Если загрузка не удалась, а локальный архив сохранился, нажмите Повторить удалённую копию у аккаунта или в результате для хранилища с ошибкой. При следующем запуске задание загрузит сохранённый архив под прежним именем; новая копия создаваться не будет.

Хранилище автоматически отключается после настроенного числа циклов подряд, в которых были попытки, но не было успешной загрузки или повтора. Проверки подключения и циклы без попыток не учитываются. На странице появляется блок Хранилища отключены автоматически. Исправьте доступ, нажмите Проверить, затем Включить снова; это сбросит счётчик ошибок. Одна успешная проверка хранилище не включает.

Восстановление и скачивание

Удалённое восстановление создаёт только аккаунты, которых ещё нет на этом сервере. Существующие аккаунты не перезаписываются. Перед переносом проверьте порты станций, диджеев, Icecast и Shoutcast: на новом сервере они могут быть заняты другим аккаунтом.

При восстановлении содержимое архива считается доверенным. Используйте копии из хранилищ, которые контролируете, и оставьте достаточно локального места для скачивания и распаковки.

Восстановление одного аккаунта из удалённого хранилища
  1. Добавьте хранилище с резервными файлами и проверьте подключение.
  2. Если копий ещё нет в списке, нажмите Сканировать на вкладке Бэкап. Сверка каталога выполнится при следующем запуске задания; она распознаёт копии в папках исходных серверов.
  3. Откройте Восстановление → Резервные копии отсутствующих аккаунтов, выберите нужную копию и проверьте сведения в блоке Мастер восстановления.
  4. Нажмите Начать восстановление и следите за полями Прогресс и История запросов восстановления: В очереди, Скачивание, Восстановление и Готово; при ошибке прочитайте сообщение.

Восстановить можно копии со статусом Проверено и Найдено. Мастер сохраняет прежнего владельца, только если имя исходного сервера совпадает с текущим и этот администратор/реселлер существует здесь; иначе владелец не назначается. После восстановления проверьте владельца и настройте выбор хранилищ для удалённого копирования.

Массовое восстановление
  1. На вкладке Восстановление откройте Массовое восстановление.
  2. Выберите Хранилище и Хост. Список серверов читается прямо из хранилища; сканирование не требуется.
  3. Нажмите Предпросмотр. Для каждого аккаунта выбирается новейшая подходящая копия; при совпадении времени полная имеет приоритет перед быстрой. Существующие/занятые аккаунты и неподходящие копии пропускаются с указанием причины.
  4. Проверьте выбор и нажмите Подтвердить. Изменившиеся или исчезнувшие файлы будут пропущены без подмены другой копией. Запросы выполняются по одному; результаты видны в блоке Ход пакетного восстановления.
Скачивание удалённой копии

На вкладке Бэкап → Резервные копии найдите копию со статусом «Проверено» или «Найдено» и нажмите Подготовить скачивание. Когда очередной запуск задания подготовит файл, нажмите Скачать файл. Сервер также отправит готовую ссылку на адрес получателя писем о резервном копировании. Ссылка действует 48 часов после подготовки и остаётся доступной после перезагрузки страницы.

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

Восстановление локального архива

Скопируйте архив в /var/users/backup_restore/<username>.tar.gz, например /var/users/backup_restore/radio.tar.gz. При следующем запуске задания он будет восстановлен, если аккаунт отсутствует. Если используете скачанный удалённый архив с датой в имени, переименуйте его в файл только с именем аккаунта для этого способа восстановления.

Чтобы сразу обработать один локальный файл, выполните от root:

/opt/venv/sc/bin/python /opt/bin/sc_backup restore radio

Замените radio на имя аккаунта. Команда пропускает создание копий по расписанию и выбирает указанный локальный файл; при этом могут также выполняться удалённые запросы на восстановление и скачивание из очереди. Запуск без аргументов обрабатывает все подходящие локальные архивы в рамках обычной работы. При ошибке проверьте вывод консоли, статус и сообщение аккаунта.

Удаление и отключение хранилища

Нажмите Удалить в разделе Хранилища. Сначала окно подтверждения покажет имена связанных аккаунтов, их общее число и количество резервных копий. При удалении:

  • Хранилище отключается от связанных аккаунтов.
  • Его резервные копии исчезают из списка восстановления вместе с историей завершённых запросов на их восстановление и скачивание.
  • Журнал операций сохраняется с названием хранилища.
  • Все файлы на удалённом хранилище сохраняются. Если нужно освободить место, удалите их вручную у провайдера.

Удаление блокируется, пока из хранилища выполняется или ожидает выполнения восстановление/скачивание, включая запросы массового восстановления. Подготовленное скачивание тоже блокирует удаление до истечения 48-часовой ссылки. Окно покажет причину; повторите попытку после завершения работы. Уже начавшаяся загрузка может оставить файл на удалённом хранилище.

Если нужно только остановить новые загрузки, сохранив настройки хранилища и записи о копиях, нажмите Отключить. Когда понадобится, включите его снова. У отключённого хранилища могут оставаться неполученные копии, поэтому соответствующие локальные архивы могут оставаться на диске.

Перенос на новый сервер

Если нужны и медиафайлы, и настройки, создавайте полные копии. Спланируйте переключение так, чтобы не потерять изменения на старом сервере после последнего копирования.

На старом сервере:

  1. Обновите платформу .

  2. Если будете переносить локальные файлы, сначала включите Сохранять локальную копию после успешной загрузки, чтобы успешная удалённая загрузка не удалила их.

  3. Создайте итоговые полные копии:

    /opt/venv/sc/bin/python /opt/bin/sc_backup all
  4. Убедитесь, что нужные локальные файлы или проверенные удалённые копии существуют. Безопасно передайте локальные архивы на новый сервер или сохраните учётные данные хранилища для удалённого восстановления.

На новом сервере:

  1. Установите платформу . Сначала можно использовать новое имя/IP сервера, а итоговое имя и TLS настроить при переключении.

  2. Для удалённого переноса подключите то же хранилище и выполните Массовое восстановление, выбрав Хост старого сервера. Для массового восстановления через панель менять cron не нужно: мастер блокирует имя аккаунта на время его создания и исключает одновременную индексацию контента. При этом способе пропустите следующие шаги с локальными файлами.

  3. Для массового локального восстановления до копирования архивов временно закомментируйте строки sc_backup, sc_accounts, sc_stats и awstats в /etc/crontab. Для текущих путей установки закомментированные записи выглядят так:

    # */15 * * * * root /opt/venv/sc/bin/python /opt/bin/sc_backup 1>/dev/null 2>/dev/null
    # */1  * * * * root /opt/venv/sc/bin/python /opt/bin/sc_accounts 1>/dev/null 2>/dev/null
    # */1 * * * * root /opt/venv/sc/bin/python /opt/bin/sc_stats 1>/dev/null 2>/dev/null
    # 0    * * * * root /opt/venv/sc/bin/python /opt/bin/awstats 1>/dev/null 2>/dev/null

    Перед копированием архивов дождитесь завершения уже запущенных заданий резервного копирования, управления аккаунтами и статистики. Оставьте content_indexer включённым: он учитывает блокировку восстановления и пропускает работу на время изменения файлов. Задание обновления сертификатов (letsencrypt renew) также можно оставить включённым.

  4. Скопируйте файлы <username>.tar.gz в /var/users/backup_restore/, затем вручную запустите задание резервного копирования от root:

    /opt/venv/sc/bin/python /opt/bin/sc_backup
  5. Проверьте восстановленные аккаунты, владельцев, медиафайлы и порты.

  6. Если переносится домен, обновите его записи DNS на новый сервер. Настройте имя хоста и TLS с помощью серверных утилит :

    cd /opt/bin
    ./change_host
    ./ssl_enable
  7. Запустите скрипт обновления , затем раскомментируйте все четыре задания cron, остановленные для локального восстановления: sc_backup, sc_accounts, sc_stats и awstats. Убедитесь, что в них используется /opt/venv/sc/bin/python. Настройте удалённое копирование на новом сервере и проверьте создание новой копии, прежде чем выводить старый сервер из эксплуатации.

Перенос шаблонов аккаунтов (необязательно)

Архивы аккаунтов не включают шаблоны радиостанций и реселлеров из панели. Для переноса отдельно выгрузите соответствующие таблицы на старом сервере и импортируйте на новом. При этом импортируются определения шаблонов, поэтому сначала сохраните копию шаблонов, уже существующих на новом сервере.

В примере используется стандартная база биллинга sc_billing и администратор MySQL root. Проверьте [Billing] BILLING_DB_NAME и [MySQL] SU_NAME в /opt/bin/utils.ini и подставьте свои значения. Параметр -p запросит пароль администратора MySQL этого сервера ([MySQL] SU_PASSWD); не указывайте пароль в самой команде.

На старом сервере:

mysqldump -u root -p sc_billing templates_broadcaster > templates_broadcaster.sql
mysqldump -u root -p sc_billing templates_reseller > templates_reseller.sql

Безопасно передайте SQL-файлы, затем импортируйте их на новом сервере:

mysql -u root -p sc_billing < templates_broadcaster.sql
mysql -u root -p sc_billing < templates_reseller.sql

После переноса проверьте настройки шаблонов и владельцев аккаунтов, особенно если аккаунты администраторов/реселлеров на серверах различаются.