同一份二进制的子命令运行方式,复用与 HTTP 服务完全相同的业务逻辑代码,不是另外重写一套调用链。
# 批量发布 / 备份 / 建站,一条命令
rssites content batch-publish --ids=1,2,3
rssites backup-now
rssites site create --name "新子站" --alias newsite
# 兜底桥接:还没有专门命令的长尾操作,直接打后台同一套路由
rssites api --method POST --path "/admin/site/categories" --as-user 2 --body '{...}'
- 专用 CLI 身份体系:不能拿真人管理员账号用,专门建 CLI 账号,权限走正常 RBAC 校验,可控可审计
- --dry-run 预检:先看操作序列和可能的风险,不实际执行
- 批量建站/导入/下发:批量创建站点、批量导入内容、批量下发配置,适合规模化处理场景
- 对接 AI 和自动化脚本:命令行本身就是给 AI 用的运维接口,不需要额外开发一层对接
- 命令行侧重批量处理和自动化脚本场景
- Web 后台侧重日常可视化管理
- 两者共用同一套业务逻辑,数据完全一致
- 数据库全量备份:pg_dump 输出压缩落盘,定时或
rssites backup-now 手动触发,走同一段核心逻辑
- 附件增量快照:只覆盖各站点上传目录,硬链接去重,没变的文件不重复占空间,磁盘占用只随实际变化量增长
- 还原命令:
rssites restore-db / rssites restore-files,还原逻辑跟 CLI 备份共用同一段代码,不是分开维护两套
- 定时开关、每天几点执行、保留天数、"立即备份"按钮
- 备份记录列表:时间/类型/状态/大小/存放位置
- 恢复是高风险操作,需要二次确认+额外校验信息
- 部署用符号链接切目录:回滚就是把
current 指回上一个版本目录再重启,不用重新编译
- 数据库迁移显式触发:
rssites migrate 独立执行,不依赖"服务启动时顺带自动迁移"这种隐式行为,迁移失败和服务起不来是两类不同的故障
- 模板三态管理同样支持回滚:草稿/正式/归档三态,历史发布版本永久保留,后台一键回滚到任意历史版本
- 这和"数据备份"是两回事:备份防数据丢失,回滚防发布出错,不能互相替代
- 直接以任意账号身份进入后台:平台管理员可以切换为任意用户身份,排查权限是否生效、数据流是否正确,问题定位无需打扰用户本人
- 只能模拟权限更低的账号:管理员之间不能互相模拟,也不能连环模拟
- 有效期 2 小时:远短于正常登录会话,到期自动失效,后台顶部有醒目横幅提示正在模拟
- 操作日志双记:模拟期间产生的每条操作日志同时记录"目标账号"和"真正操作人"两个字段,审计时两条线都能查全
- 运维手册:部署/备份/域名绑定/故障排查,面向运维部署这套系统的人
- 模板开发手册:slot 命名规则、每个页面能用哪些变量、常踩的坑,模板管理页面按钮同一份内容两个入口
- CLI 使用手册:不是另外手写的文档,直接取自命令行工具自己的
--help 输出,命令的注释改了这里自动跟着变,不会跟代码脱节
命令行、备份、回滚、排障,一人可维护
不需要额外的运维团队,CLI 就是最高信任级别的运维入口