一招保住 OpenClaw 代理的“记忆”和“人设”:4 种备份法全实操(含自动恢复脚本)

🔑 先搞懂:哪些文件丢了就真“失忆”了?

OpenClaw 的“灵魂”就藏在这几个地方,按优先级排好队:

  • data/最高优先级:存着所有聊天记录、长期记忆、向量数据库(语义搜索靠它!)。丢了=代理变新生儿,啥都不记得。
  • config/最高优先级:你的 agent 性格、技能开关、定时任务(cron)、对接 Slack/API 的配置。丢了=能跑,但全是默认设置,要重配一遍。
  • .env最高优先级:所有 API Key、密钥、敏感环境变量。丢了=连不上任何大模型,直接瘫痪。⚠️ 备份时务必加密!
  • skills/高优先级:你自己写的 SKILL.md 技能文件。从市场下载的可以重装,自己写的只此一份。
  • docker-compose.yml高优先级:Docker 启动配置,改过端口或挂载路径的必须备份。
  • logs/低优先级:日志会自动生成,不用备。

✅ 记住一句话:只要保住了 data/ + config/ + .env,你的 OpenClaw 就没死,只是睡了一觉。


🛠 方法 1:手动备份(5 秒上手,适合首次/应急)

一行命令打包所有关键文件,生成带时间戳的压缩包:

# 创建带日期时间的备份文件(例如:openclaw-backup-20260405-142301.tar.gz)
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
tar -czf ~/openclaw-backup-$TIMESTAMP.tar.gz \
 -C ~/openclaw \          # 指定 OpenClaw 根目录为打包起点
 data/ config/ .env skills/ docker-compose.yml 2>/dev/null

echo "✅ 备份完成!文件位置:~/openclaw-backup-$TIMESTAMP.tar.gz"
ls -lh ~/openclaw-backup-$TIMESTAMP.tar.gz  # 查看文件大小(通常 50–200MB)

📌 重要提醒:备份文件不能留在同一块硬盘上!否则硬盘一坏,全完蛋。立刻拷走:

# 拷到另一台服务器(替换 user@backup-server 为你自己的地址)
scp ~/openclaw-backup-$TIMESTAMP.tar.gz user@backup-server:/backups/

# 或拷到 U 盘(macOS 示例,Linux 路径可能是 /media/usb)
cp ~/openclaw-backup-$TIMESTAMP.tar.gz /Volumes/USB-Drive/backups/

🐳 方法 2:Docker 卷备份(用 Docker 部署的必看)

如果你用 docker compose 且数据存在 Docker volume(比如 openclaw_data),不能直接 tar 主机目录——得进容器里取:

# 先看看你的 OpenClaw 用了哪些 volume
docker volume ls | grep openclaw

# 备份 data 卷(读取只读,安全)
docker run --rm \
 -v openclaw_data:/source:ro \   # 把 volume 挂载为只读源
 -v ~/backups:/backup \         # 把主机 ~/backups 目录挂载为目标
 alpine tar -czf /backup/openclaw-data-$(date +%Y%m%d).tar.gz -C /source .

# 备份 config 卷(同理)
docker run --rm \
 -v openclaw_config:/source:ro \
 -v ~/backups:/backup \
 alpine tar -czf /backup/openclaw-config-$(date +%Y%m%d).tar.gz -C /source .

💡 小知识:如果 docker-compose.yml 里写的是 ./data:/app/data(即 bind mount),那直接用「方法 1」就行,不用折腾 volume。


📦 方法 3:Git 版本备份(改配置像写代码一样安心)

用 Git 给 config/skills/ 做版本管理,还能回滚到任意一天的状态。.env 加密后也一起存:

cd ~/openclaw

# 初始化仓库,并告诉 Git 哪些文件别传(尤其 .env!)
cat > .gitignore << 'EOF'
.env               # 绝对不上传明文密钥!
logs/
data/*.db-wal      # SQLite 临时文件,不用备
data/*.db-shm
EOF

git init
git add -A
git commit -m "📦 初始备份:配置与技能"

# 创建私有远程仓库(GitHub/GitLab/Gitea 都行),然后关联:
# git remote add origin git@github.com:你的用户名/openclaw-backup.git
# git push -u origin main

🔐 安全备份 .env(用密码加密,加密后文件可放心提交):

# 安装 gpg(macOS:brew install gnupg;Ubuntu:sudo apt install gnupg)
gpg --symmetric --cipher-algo AES256 -o .env.gpg .env
git add .env.gpg
git commit -m "🔒 已加密备份 .env"
git push

⏱ 自动每天提交(加到 crontab):

# 每天凌晨 2 点自动 commit + push
0 2 * * * cd ~/openclaw && git add -A && git commit -m "📅 日常备份 $(date +\%Y\%m\%d)" 2>/dev/null && git push origin main 2>/dev/null

☁ 方法 4:云同步备份(异地容灾,躺平必备)

rclone 把备份文件自动同步到 Google Drive / AWS S3 / Dropbox —— 10 分钟 setup,之后完全不用管:

# 安装 rclone(macOS)
brew install rclone
# Ubuntu/Debian
sudo apt install rclone
# 配置云存储(交互式向导,按提示登录 Google 或填 AWS 密钥)
rclone config
# ➤ 新建 remote,起名比如 "gdrive",选 Google Drive 类型
# 同步整个备份目录(跳过 .env 和 logs)
rclone sync ~/backups/openclaw gdrive:openclaw-backups/ \
 --exclude ".env" \
 --exclude "logs/**" \
 --exclude "node_modules/**"

✅ 推荐组合:本地 tar 备份 + Git 管理配置 + rclone 同步到云 = 3-2-1 备份黄金法则(3份、2种介质、1份异地)。


⚙ 自动化终极方案:每日备份脚本(推荐!)

把上面所有操作打包成一个脚本,加进系统定时任务,从此告别“忘了备份”:

# 创建自动备份脚本
cat > ~/openclaw-backup.sh << 'SCRIPT'
#!/bin/bash
set -e

BACKUP_DIR=~/backups/openclaw
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
ARCHIVE=$BACKUP_DIR/openclaw-$TIMESTAMP.tar.gz

mkdir -p $BACKUP_DIR

# 打包核心文件(不含 logs)
tar -czf $ARCHIVE \
 -C ~/openclaw \
 data/ config/ .env skills/ docker-compose.yml 2>/dev/null

# 自动清理 30 天前的旧备份
find $BACKUP_DIR -name "openclaw-*.tar.gz" -mtime +30 -delete

# ✅ 取消下面这行的注释,即可开启自动云同步(需先配置好 rclone)
# rclone copy $ARCHIVE gdrive:openclaw-backups/

echo "$(date): ✅ 备份完成 → $ARCHIVE" >> ~/backups/openclaw-backup.log
SCRIPT

chmod +x ~/openclaw-backup.sh
# 设为每天凌晨 3 点执行
crontab -e
# ➤ 添加这一行:
0 3 * * * ~/openclaw-backup.sh

🔄 怎么恢复?3 步找回“活过来”的代理

无论你用哪种备份方式,恢复都极简单:

# 1. 先停服务
docker compose down   # 或:sudo systemctl stop openclaw

# 2. 清空旧数据(或先重命名留底)
mv ~/openclaw/data ~/openclaw/data.bak
mv ~/openclaw/config ~/openclaw/config.bak

# 3. 解压备份(替换成你实际的备份文件名)
tar -xzf ~/backups/openclaw/openclaw-20260405-030000.tar.gz -C ~/openclaw

# 如果用了加密 .env,解密还原:
# gpg --decrypt ~/openclaw/.env.gpg > ~/openclaw/.env

# 4. 启动,收工 ✅
docker compose up -d
docker compose logs -f --tail=20 openclaw  # 查看启动是否正常

🧭 迁移到新服务器?其实就是「备份 + 拷贝 + 恢复」三连

在旧服务器:

tar -czf /tmp/openclaw-migrate.tar.gz -C ~/openclaw data/ config/ .env skills/ docker-compose.yml
scp /tmp/openclaw-migrate.tar.gz user@新服务器IP:/tmp/

在新服务器:

mkdir -p ~/openclaw && cd ~/openclaw
tar -xzf /tmp/openclaw-migrate.tar.gz
# ✅ 检查并更新 .env 中的域名/IP/端口(比如把 localhost 改成新服务器公网 IP)
docker compose up -d

✅ 最后送你 5 条血泪经验(提米哥亲测有效)

  • 不测试的备份 = 假备份:每季度用一台干净机器试一次恢复,5 分钟的事,能救大命。
  • .env 不加密 ≠ 把 API Key 贴朋友圈:用 gpgage 加密,永远别裸奔。
  • 别等出事才备份:设好 cron + rclone,让它自己跑,你只管喝咖啡。
  • 备份文件命名带时间戳openclaw-20260405.tar.gzbackup.zip 强一万倍。
  • 日志是你的哨兵~/backups/openclaw-backup.log 定期瞄一眼,断了马上告警。

直达网址:https://remoteopenclaw.com/blog/openclaw-backup-and-restore/

作加

类似文章