为什么要备份
OpenClaw 把一家子的家当都堆在 ~/.openclaw 这一个目录里:
openclaw.json—— 网关配置、渠道 token(微信/飞书)、模型 Keycredentials/—— 各平台凭据agents/main/agent、workspace/—— 你的 MEMORY.md、每日日记、技能包、草稿logs/、media/—— 历史会话与收发过的文件
我在本机实测时,光 openclaw.json 就自动留了十几个 .bak 副本(openclaw.json.bak、openclaw.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
恢复完后做三件事再切过去:
- 看
./restored-openclaw里openclaw.json是不是你期望的版本 openclaw backup verify <archive>再验一次包没坏- 把
./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 中文实操手记。