Backup discourse from the command line

С помощью искусственного интеллекта мы подготовили исчерпывающий список подкоманд для команды discourse.

Командная строка discourse (реализована через script/discourse с использованием гема Thor) предоставляет 13 основных подкоманд, сгруппированных по категориям: Резервное копирование и восстановление, Управление сайтом и режимы, Утилиты базы данных и Миграция данных (Импорт/Экспорт).


Краткая справка по командам

Категория Подкоманда Основное назначение
Резервное копирование и восстановление backup Создает полный архив резервной копии или только базы данных.
restore Восстанавливает данные из архива .tar.gz в экземпляр форума.
enable_restore Разрешает выполнение команд восстановления.
disable_restore Запрещает выполнение команд восстановления.
rollback Откатывает состояние базы данных после неудачного восстановления.
Режимы сайта enable_readonly Включает временный режим «только для чтения» на всем сайте.
disable_readonly Отключает режим «только для чтения», возвращая возможность записи.
request_refresh Отправляет запрос на обновление страницы всем подключенным клиентам.
Операции с БД remap Выполняет глобальный поиск и замену текста в таблицах базы данных.
Миграция данных export_category Экспортирует одну категорию, её темы и связанных пользователей.
import_category Импортирует архив категории в текущий форум.
export_topics Экспортирует определенные темы по ID и аккаунты их авторов/ответивших.
import_topics Импортирует архив тем в текущий форум.

Подробная документация по подкомандам

1. Команды резервного копирования и восстановления

discourse backup [FILENAME]

  • Описание: Создает полную резервную копию базы данных форума и файлов.

  • Флаги:

  • --sql-only: (Булево, по умолчанию: false) Выгружает только базу данных PostgreSQL, пропуская локальные загруженные файлы.

  • --s3-uploads: (Булево, по умолчанию: false) Принудительно включает файлы, хранящиеся в S3, в архив резервной копии (игнорируется, если установлен флаг --sql-only).

  • Пример:

discourse backup
discourse backup --sql-only

discourse restore [FILENAME]

  • Описание: Восстанавливает резервную копию форума из локального архива .tar.gz, расположенного в /var/www/discourse/public/backups/default.
  • Предварительное условие: Требуется сначала выполнить discourse enable_restore.
  • Пример:
discourse restore discourse-2026-07-22-120000-v2026xxxx.tar.gz

discourse enable_restore и discourse disable_restore

  • Описание: Включает или отключает флаг приложения, разрешающий или запрещающий выполнение задач восстановления через консоль или веб-интерфейс.
  • Последовательность использования:
discourse enable_restore
discourse restore <filename>
discourse disable_restore

discourse rollback

  • Описание: Откатывает схему и состояние базы данных к моменту перед неудачным выполнением восстановления.

2. Состояние сайта и управление клиентами

discourse enable_readonly и discourse disable_readonly

  • Описание: Устанавливает или сбрасывает ключ READONLY_MODE_KEY в Redis.
  • Детали:
  • Запрещает запись в базу данных, сохраняя возможность чтения сайта пользователями.
  • Использует цикл с коротким временем жизни (TTL), который обновляется во время действия режима, предотвращая постоянную блокировку сайта в случае сбоя терминальной сессии.

discourse request_refresh

  • Описание: Отправляет системное сообщение через MessageBus, указывая всем активным веб-сессиям перезагрузить страницу. Полезно после развертывания обновлений файлов или глобальных изменений темы.

3. Переотображение базы данных (Remapping)

discourse remap [OPTIONS] FROM TO

  • Описание: Выполняет прямой поиск и замену строк в текстовых столбцах базы данных. Критически важно при изменении доменных имен, путей к CDN или префиксов загрузок изображений.

  • Флаги:

  • --global: (Булево) Сканирует и переотображает данные во всех таблицах, а не только в стандартных таблицах контента.

  • --regex: (Булево) Интерпретирует параметр FROM как регулярное выражение, а не как буквальную строку.

  • Пример:

discourse remap "old-domain.com" "new-domain.com"
discourse remap --global "/uploads/default/" "/cdn-uploads/"

4. Селективный импорт и экспорт данных

discourse export_category [CATEGORY_ID]

  • Описание: Сериализует одну категорию, включая все вложенные темы, сообщения и профили участников, в файл архива JSON.

discourse import_category [FILE_PATH]

  • Описание: Читает архив, созданный командой export_category, и объединяет данные категории с целевым экземпляром.

discourse export_topics [TOPIC_IDS...]

  • Описание: Принимает один или несколько разделенных пробелами ID тем и экспортирует эти темы, сообщения и соответствующие аккаунты пользователей.
  • Пример:
discourse export_topics 102 105 210

discourse import_topics [FILE_PATH]

  • Описание: Импортирует архив JSON, созданный командой export_topics, в целевой экземпляр Discourse.
1 лайк