Administrator
发布于 2026-09-10 / 0 阅读
0
0

OpenClaw 备份与灾难恢复实战:一条命令把配置、记忆和会话全打包


为什么要备份

OpenClaw 把一家子的家当都堆在 ~/.openclaw 这一个目录里:

  • openclaw.json —— 网关配置、渠道 token(微信/飞书)、模型 Key
  • credentials/ —— 各平台凭据
  • agents/main/agentworkspace/ —— 你的 MEMORY.md、每日日记、技能包、草稿
  • logs/media/ —— 历史会话与收发过的文件

我在本机实测时,光 openclaw.json 就自动留了十几个 .bak 副本(openclaw.json.bakopenclaw.json.bak-0908-1059 这类),可见 OpenClaw 自己也在小心。但 .bak 只在同盘、同目录,机器重装、误删目录、或磁盘挂了,一样全没。真要把"AI 搭档"迁移或救回来,得靠正经备份。

三种备份方式速览

方式 命令 备份内容 适合场景
一次性归档 openclaw backup create 整个 ~/.openclaw(配置+工作区+会话) 迁移机器、重大改动前快照
SQLite 快照 openclaw backup sqlite 单个数据库的可验证快照 只关心会话/记忆库、要进 Git
定时 Git 备份 openclaw backup enable 数据库 dump 提交进 Git 仓库 长期无人值守、每日自动

下面每条命令都在这台 2026.8.2 的实机上跑过(openclaw --version 实测为 OpenClaw 2026.8.2 (0965053))。

一、手动一次性归档:backup create

先看计划、不落盘,确认要打什么:

openclaw backup create --dry-run --json

实测输出里能看到它准备打包的资产清单,关键信息长这样:

{
  "archiveRoot": "2026-09-10T03-01-08.954+08-00-openclaw-backup",
  "archivePath": "/root/2026-09-10T03-01-08.954+08-00-openclaw-backup.tar.gz",
  "includeWorkspace": true,
  "assets": [
    { "kind": "state", "sourcePath": "/root/.openclaw", "displayPath": "~/.openclaw" }
  ]
}

注意 includeWorkspace: true —— 工作区(你的记忆和草稿)默认就进包了,不用担心漏。workspace/agents/main/agent 在清单里标着 coveredBy: ~/.openclaw,说明被整目录归档覆盖,不是漏掉。

真要落盘并立刻校验完整性(推荐加 --verify):

openclaw backup create --verify --output ~/Backups

几个常用开关:

  • --output <目录>:归档写到指定目录,否则落在当前目录,文件名带时间戳
  • --only-config:只备 openclaw.json(轻量,但会丢记忆和会话,一般不单独用)
  • --no-include-workspace:只备状态/配置,不含工作区文件
  • --verify:写完后校验 manifest 和包内布局,备份完当场确认没坏

二、SQLite 快照:只抓数据库

会话和记忆实际存在 SQLite 里。backup sqlite 能打出"可验证快照",适合想进版本库、又不想塞整包 tar 的场景。先指定仓库看现有快照:

openclaw backup sqlite --repository ~/openclaw-sqlite list

子命令就四个,记这组就够:create 打快照、list 列快照、verify 校验、restore 恢复到新的 db 文件。

三、定时 Git 备份:真正无人值守(推荐)

手动备份靠记性,记性最不可靠。OpenClaw 自带一个能挂成 Gateway 定时任务的 Git 备份:

openclaw backup enable \
  --repository ~/openclaw-git \
  --every 24h \
  --push
  • --repository:一个你自己的 Git 仓库目录(本地或已配好 origin 的)
  • --every 24h:间隔,可改 12h / 6h
  • --push:每次备份后推到 origin(异地容灾的关键一步)

关于密钥有两个开关,按你仓库的公开程度选:

  • 默认 --exclude-secrets:推送的备份里去掉凭据相关表,更安全
  • 若要完整恢复渠道登录态,加 --include-secrets,但这仓库必须私有且你信得过

我自己的取舍:备份仓库设为私有 + 默认排除密钥,真要恢复时密钥让 OpenClaw 重新走一遍 configure,比把密钥明文推进 Git 踏实。

真出事了怎么恢复

整包恢复,解到全新目录(非空目录会被拒,防止覆盖现场):

openclaw backup restore ~/Backups/2026-09-10T03-01-08.954+08-00-openclaw-backup.tar.gz \
  --target ./restored-openclaw

恢复完后做三件事再切过去:

  1. ./restored-openclawopenclaw.json 是不是你期望的版本
  2. openclaw backup verify <archive> 再验一次包没坏
  3. ./restored-openclaw 整体挪回 ~/.openclaw 前,先停下网关(openclaw daemon stop),换完再起

SQLite 那条恢复路线是 openclaw backup sqlite restore,恢复到新的 db 路径,别直接覆盖正在用的库。

我的实践清单

  • 每日:backup enable --every 24h --push 到一个私有 Git 仓库,默认排除密钥
  • 每周:backup create --verify --output ~/Backups,把 tar 再拷一份到另一块盘/对象存储
  • 大改动前(改配置、加渠道、更模型):先手动 backup create 留一个带时间戳的快照
  • 恢复演练:每季度挑一个旧包 restore --target 到临时目录,确认能解开、配置在

避坑

  • 别只备 openclaw.json:--only-config 会丢 MEMORY.md、每日日记和技能包,等于丢了"记忆"。
  • 带密钥的备份别进公开仓库:要么 --exclude-secrets,要么仓库设私有。
  • 备份完要验:养成加 --verify 的习惯,坏了的包比没有包更坑。
  • .bak 不是备份:openclaw.json.bak* 同盘同目录,只防手滑,不防磁盘挂。
  • 恢复前先停网关:直接覆盖正在跑的 ~/.openclaw 容易把状态写花。

一句话收尾:OpenClaw 的"命"都在 ~/.openclaw,backup create 兜底、backup enable 日常、恢复前先停网关再验包——这套跑通,你的 AI 搭档才算真正"摔不死"。


关注我

如果这篇对你有用,欢迎关注我的公众号,第一时间收到 OpenClaw 实操更新:

公众号二维码

扫码或微信搜索公众号名称即可。每天一篇 OpenClaw 中文实操手记。


评论