OpenClaw 极简迁移:从 1.7G 压缩到 42M 的实战记录#
OpenClaw 极简迁移:从 1.7G 压缩到 42M 的实战记录 今天把 OpenClaw 从一台服务器迁出去。摸了一下部署情况,发现原始数据 1.7G,但其实真正要备份的只有 42M。把整个过程记一下,以后再迁可以直接套用。
一、为什么是 1.7G,不是几十兆?#
跑 du -sh /root/.openclaw/ 看到 1.7G,但拆开看大头都是可重建的:
agents/main/sessions/:1018M,纯历史会话日志,新服务器不需要 workspace-canmou/fundquant/venv:313M,Python 虚拟环境,pip install 就能重建 agents/{其他}/sessions/:约 150M,同上 真正需要带的:配置 + 工作区 + 记忆 = 42M
教训:迁移之前先看 du -ah | sort -rh | head -20,别傻乎乎 tar czf 整个目录,那叫全量备份不叫迁移。
二、核心原则:能重建的全不背#
| 类别 | 处理
| OpenClaw 主程序 + node_modules | 新服务器 npm install -g openclaw
| Python venv | 新服务器 python -m venv + pip install
| sessions 日志 | 直接扔,记忆在 sqlite 里
| 配置 / 工作区 / 记忆 | ✅ 这才是真要带的
三、真正要备份的 4 样东西#
1. openclaw.json(12K)#
飞书/GitHub/七牛等所有 key + 9 个 agent 路由配置。这是命根子。
2. memory/ 目录(696K)#
最初我以为记忆是 memory/YYYY-MM-DD.md 这种 md 文件,实际看了下 OpenClaw 源码才发现是 9 个 sqlite 数据库(每个 agent 一个)。
sqlite3 memory/main.sqlite "SELECT * FROM files LIMIT 5" -- MEMORY.md, memory/2026-03-06.md, ...
里面有 chunks(442 个记忆块)、chunks_fts(全文索引)、embedding_cache(向量缓存)。整库带走,新服务器解包就能用,搜索/记忆功能立即恢复。
3. workspace/ 主工作区(29M)#
49 个 skills + 21 个 projects + 46 个 scripts + 8 个核心 md(MEMORY/SOUL/AGENTS/TOOLS/USER/IDENTITY/HEARTBEAT/PROGRESS)。
排除规则要写对,否则会把 node_modules、.git、venv、pycache 这些 GB 级垃圾也带进来:
tar czf workspace.tar.gz \\ --exclude='node_modules' \\ --exclude='.git' \\ --exclude='__pycache__' \\ --exclude='venv' \\ --exclude='media' \\ --exclude='.next' \\ workspace/
4. 9 个子工作区(共 ~12M)#
workspace-{canmou,ceo,creator,jiaoyi,jinhua,kylin,shequ,yunving,yunying},每个 agent 一个。
四、端到端操作步骤#
假设:老服务器 A(big.imoons.cn)→ 新服务器 B,A 和 B 之间网络不一定通。
老服务器 A(4 步)#
`
1. 备份#
bash /root/.openclaw/workspace/scripts/migrate-openclaw.sh
输出:/tmp/openclaw-migrate-20260605-XXXXXX/,含 13 个文件,总 42M#
2. 打包#
tar czf /tmp/openclaw-migrate.tar.gz -C /tmp openclaw-migrate-20260605-XXXXXX/
3. 上传七牛(永久 token)#
python3 -c ” from qiniu import Auth, put_file_v2 q = Auth(‘AK’, ‘SK’) token = q.upload_token(‘taojinai’, ‘openclaw-migrate-20260605.tar.gz’, 360024365*10) put_file_v2(token, ‘openclaw-migrate-20260605.tar.gz’, ‘/tmp/openclaw-migrate.tar.gz’) “
4. 验证 CDN#
curl -I https://cdn.imoons.cn/openclaw-migrate-20260605.tar.gz `
新服务器 B(3 步)#
`
1. 下载 + 校验(42M,1-2 分钟)#
wget -O /tmp/openclaw-migrate.tar.gz https://cdn.imoons.cn/openclaw-migrate-20260605.tar.gz echo “2c4ad6cd709fd12f8676803c8fd5d9e15578c3ba1f4d99e156981abffc7274a7 /tmp/openclaw-migrate.tar.gz” | sha256sum -c
2. 准备 init 脚本(任选一种)#
scp root@老IP:/root/.openclaw/workspace/scripts/init-new-server.sh /tmp/ chmod +x /tmp/init-new-server.sh
3. 一键初始化#
bash /tmp/init-new-server.sh
自动跑完 7 步:下载→校验→装Node→装OpenClaw→解压→还原→启动#
` 总耗时:老服务器 5 分钟 + 上传 3 分钟 + 新服务器 5 分钟 = 约 15 分钟全跑完。
五、写成 3 个脚本#
备份脚本 migrate-openclaw.sh#
8 步流水化:
[1/4] 备份 openclaw.json [2/4] 备份 workspace/ [3/4] 备份 9 个子工作区 [4/4] 备份 memory/ 目录
最终产出 13 个文件,总 42M。
还原脚本 migrate-openclaw-restore.sh#
[1/7] 还原 openclaw.json [2/7] 还原 workspace/ [3/7] 还原 9 个子工作区 [4/7] 还原 memory/ [5/7] 还原自定义 skills [6/7] 还原 agents 配置 [7/7] 还原 cron
新服务器一键脚本 init-new-server.sh#
这个最香。新服务器一行命令搞定全流程:
bash init-new-server.sh
脚本会自动:
-
从七牛 CDN 下载备份包
-
SHA256 校验
-
装 Node 22 + Python3
-
npm install -g openclaw
-
解压 + 还原数据
-
启动 gateway + 输出验证报告
六、传七牛:先 7 天后改永久#
第一次上传 token 写的是 3600247(7 天有效期),传完才反应过来不对——这玩意要长期给新服务器用。改 360024365*10(10 年)重新传了一次。
教训:上传之前想清楚”这文件生命周期多长”。临时调试用的 token 7 天没问题,生产包要传永久。
最终链接:
https://cdn.imoons.cn/openclaw-migrate-20260605.tar.gz
| 项 | 值
| 大小 | 42M
| SHA256 | 2c4ad6cd709fd12f8676803c8fd5d9e15578c3ba1f4d99e156981abffc7274a7
| 有效期 | 永久(10 年 token)
| 适用 | 新服务器一键还原 OpenClaw 全量部署
七、踩坑记录#
-
第一次 sha256 输出空 hash:tar 之后再 sha256 时管道被卡了,导致 hash 是空文件的 hash。重新打一次再 sha256 才对。
-
memory 备份看起来”全空”:tar 列出来一堆 *.sqlite-shm / *.sqlite-wal 临时文件,md 文件数 = 0。别慌,实际记忆在 sqlite 里,不是 md。
-
第一次脚本里写了 media/ 文件夹 63M:后来改成默认不备,需要时 ENABLE_MEDIA=1 启用。少带 60M 没关系,多带 60M 没必要。
-
scp 不知道能不能用(新老服务器之间网络不一定通),所以上传到七牛中转最稳。永远假设服务器之间网络是坏的,用 CDN 中转。
八、最终数据#
` 原始大小:1.7G 备份大小:42M(压缩率 97.5%) 传输时间:~3 分钟(七牛上传) 还原时间: 省 97.5% 体积,省 100% 重建时间。
经验#
迁移前先 du -ah | sort -rh 摸底:8 成是大文件可重建,1 成是真要带的 能重建的全不背:node_modules / venv / sessions / 缓存 配置文件 + 工作区 + 记忆 = 黄金三件套:所有 OpenClaw 迁移都是这个套路 新服务器脚本是核心交付物:写好 init 脚本,整个迁移就完成 90% CDN 中转优于直连:scp 不一定通,CDN 永远通 SHA256 一定要验:传错版本调一天



