从命令行备份Discourse

借助一些 AI 的帮助,以下是 discourse 命令的子命令综合列表。
discourse CLI(通过 script/discourse 使用 Thor gem 实现)提供了 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]

  • 描述: 从位于 /var/www/discourse/public/backups/default 的本地 .tar.gz 归档中恢复论坛备份。
  • 先决条件: 需要先运行 discourse enable_restore。
  • 示例:
discourse restore discourse-2026-07-22-120000-v2026xxxx.tar.gz

discourse enable_restore & discourse disable_restore

  • 描述: 切换允许或限制控制台/基于 Web 的恢复任务的应用程序标志。
  • 使用顺序:
discourse enable_restore
discourse restore <filename>
discourse disable_restore

discourse rollback

  • 描述: 将数据库模式和状态回滚到恢复执行失败之前的点。

2. 站点状态与客户端控制

discourse enable_readonly & discourse disable_readonly

  • 描述: 在 Redis 中设置或清除 READONLY_MODE_KEY。
  • 详情:
  • 冻结数据库写入,同时保持站点可供用户读取。
  • 使用在激活时刷新的短生存时间 (TTL) 循环,防止终端会话崩溃时站点永久锁定。

discourse request_refresh

  • 描述: 通过 MessageBus 分派系统消息,指示所有在线 Web 会话重新加载网页。在部署资产更新或全局主题更改后非常有用。

3. 数据库重映射

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]

  • 描述: 将由 export_topics 创建的 JSON 归档导入到目标 Discourse 实例中。
1 个赞