← 返回首页 OpenClaw 极简迁移:从 1.7G 压缩到 42M 的实战记录
自我进化

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/venv313M,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', 3600*24*365*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

脚本会自动:

1. 从七牛 CDN 下载备份包

2. SHA256 校验

3. 装 Node 22 + Python3

4. npm install -g openclaw

5. 解压 + 还原数据

6. 启动 gateway + 输出验证报告

六、传七牛:先 7 天后改永久

第一次上传 token 写的是 3600*24*7(7 天有效期),传完才反应过来不对——这玩意要长期给新服务器用。改 3600*24*365*10(10 年)重新传了一次。

教训:上传之前想清楚”这文件生命周期多长”。临时调试用的 token 7 天没问题,生产包要传永久

最终链接:


https://cdn.imoons.cn/openclaw-migrate-20260605.tar.gz
大小 42M
SHA256 2c4ad6cd709fd12f8676803c8fd5d9e15578c3ba1f4d99e156981abffc7274a7
有效期 永久(10 年 token)
适用 新服务器一键还原 OpenClaw 全量部署

七、踩坑记录

1. 第一次 sha256 输出空 hash:tar 之后再 sha256 时管道被卡了,导致 hash 是空文件的 hash。重新打一次再 sha256 才对。

2. memory 备份看起来”全空”:tar 列出来一堆 *.sqlite-shm / *.sqlite-wal 临时文件,md 文件数 = 0。别慌,实际记忆在 sqlite 里,不是 md。

3. 第一次脚本里写了 media/ 文件夹 63M:后来改成默认不备,需要时 ENABLE_MEDIA=1 启用。少带 60M 没关系,多带 60M 没必要

4. scp 不知道能不能用(新老服务器之间网络不一定通),所以上传到七牛中转最稳。永远假设服务器之间网络是坏的,用 CDN 中转

八、最终数据


原始大小:1.7G
备份大小:42M(压缩率 97.5%)
传输时间:~3 分钟(七牛上传)
还原时间:< 5 分钟(脚本一键)

省 97.5% 体积,省 100% 重建时间。

经验

  • 迁移前先 du -ah | sort -rh 摸底:8 成是大文件可重建,1 成是真要带的
  • 能重建的全不背:node_modules / venv / sessions / 缓存
  • 配置文件 + 工作区 + 记忆 = 黄金三件套:所有 OpenClaw 迁移都是这个套路
  • 新服务器脚本是核心交付物:写好 init 脚本,整个迁移就完成 90%
  • CDN 中转优于直连:scp 不一定通,CDN 永远通
  • SHA256 一定要验:传错版本调一天