把 OpenClaw 部署到 WSL 里之后,我一度以为“备份恢复”这件事可以往后放。可有一次 Windows 更新后 WSL 直接起不来,看着终端里一堆报错,我才发现自己对那套 .openclaw 目录到底该怎么保护、Windows 和 WSL 之间怎么安全交换文件,其实一无所知。
后来我把备份恢复和文件交互完整走了一遍,该踩的坑基本都踩了一圈。这篇是 OpenClaw 优化系列第三篇,专门说 WSL 环境下的备份玩法,适合已经跑起来 OpenClaw、并且打算长期维护它的人。我会把“哪些数据值得备份、怎么打包才不出权限问题、恢复后第一次启动要注意什么、Windows 和 WSL 互传文件有哪些稳妥姿势”这几块一次讲透。
1. 先回答一个实际问题:OpenClaw 在 WSL 里,到底有什么好备份的
很多人会下意识觉得,OpenClaw 不过是个软件,软件坏了就重新装一遍,配置文件没了就重新配一下。这种思路放在普通 Windows 软件上勉强成立,放在 OpenClaw + WSL 的组合上就麻烦了。
WSL2 不是普通文件夹,它本质上是跑在虚拟化层里的一个 Linux 发行版,发行版的完整文件系统存在一个 ext4 格式的虚拟磁盘文件里。你在 Windows 资源管理器里看 \\wsl$\Ubuntu\root\.openclaw,会觉得它和普通网络路径差不多,其实这层路径只是 WSL 对外开放的一个翻译窗口。Windows 侧的复制操作拿不到 Linux 侧的完整权限、属主、符号链接信息,直接复制 .openclaw 目录,表面看文件都在,恢复到新环境时可能出现 OpenClaw 没权限读配置、或者某个密钥文件权限位全乱的情况。
OpenClaw 本身的数据也分三六九等,不是所有文件都值得你半夜爬起来抢救。举个例子,active-memory 里存的是它跨对话保留的长期记忆,相当于你和它配合这么多轮攒下来的上下文;exec-approvals.json 里记的是哪些命令你批准过,如果整份丢了,下次自动化任务跑起来又要重新确认一遍,这对已经在生产环境里用 OpenClaw 的人是非常难受的;workspace 里可能是 Agent 帮你处理的文档、脚本、项目素材,丢了这个等于丢劳动成果。
还有一点容易被忽略:OpenClaw 的本体可以随时重装,但记忆、配置、审批记录、工作区文件这些是“重装救不回来的部分”。所以备份恢复的核心价值,不是让你免于重装系统,而是让你在 WSL 出问题之后,依然能精准找回这些不可再生的东西。
我可以把读者分成两类。一类是个人玩家,OpenClaw 装在自己电脑的 WSL 里,主要用来写东西、整理文档、跑点自动化脚本,这类人最需要的是“快速把数据目录抢救出来”;另一类是把 OpenClaw 当个人助理或团队工具用的人,机器可能不止一台,甚至会从 WSL 迁到云服务器,这类人除了数据目录,还要考虑整个运行环境的复刻。
这篇会把两条路都讲一遍:针对前者的 tar 数据级备份,以及针对后者的 wsl --export / wsl --import 发行版级迁移。两条路不冲突,正确姿势是日常用数据级备份,整机迁移时再用发行版级导出。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 动手之前先摸清家底:/root/.openclaw 的数据结构与备份优先级
备份最忌两眼一抹黑直接 tar -czf。OpenClaw 的目录结构在不同版本里略有差异,但不影响核心文件的定位方法。你先跑一遍下面的命令,确认数据到底放在哪、体积多大。
bash复制echo $HOME
ls -la ~/.openclaw
du -sh ~/.openclaw/*
如果你是 root 用户装的环境,目录一般在 /root/.openclaw;如果你在 WSL 里建了普通用户,那就是 /home/你的用户名/.openclaw。用一键脚本部署时,脚本也可能把本体装进 /opt/openclaw,但用户数据目录基本都留在 $HOME/.openclaw,这个规律到现在仍然适用。
我以最常见的布局为例拆一下优先级:
| 路径 | 作用 | 备份优先级 |
|---|---|---|
active-memory/ |
长期记忆文件,跨会话状态 | P0,丢了很难重建 |
workspace/ |
Agent 产生或处理的文件 | P0,属于实际产出物 |
config/ 或 openclaw.json |
模型配置、Agent 参数、技能开关 | P0,重配费时间 |
exec-approvals.json |
命令审批记录 | P0,避免重复授权 |
.env 或 credentials/ |
API Key、各类工具凭据 | P1,注意备份文件本身的保密 |
skills/ |
自定义技能 | P1,如果你改过,建议单独 git 管理 |
logs/ |
运行日志 | P2,可丢 |
cache/ 或 tmp/ |
缓存临时文件 | P2,可丢 |
这个优先级排序不是我拍脑袋定的,而是从“恢复成本”角度倒推的。配置丢了,你还能打开文件重新填一遍模型参数,最多花半小时;记忆丢了,你不可能靠重新打字把过去几个月的上下文找回来;审批记录丢了,后续自动化任务会频繁停下来问你“要不要执行某条命令”。
还有一类容易被漏掉的文件是 shell 配置文件里手动写入的环境变量。很多人用 OpenClaw 时习惯把 API Key 放进 ~/.bashrc 或 ~/.profile 里,用 export OPENCLAW_API_KEY=xxx 这种方式注入。备份数据目录时,.bashrc 不在 .openclaw 下,如果漏掉,恢复后启动 OpenClaw 会出现“模型配置存在但 Key 是空的”这种诡异问题。
所以我在备份前会额外确认一件事:除了 .openclaw 目录,我的环境变量配置在哪个文件里。是 WSL 里的 `~/.ba
