血泪教训:上个月误操作把 data 目录删了,所有配置、Skill、聊天记录全没了。从此以后,备份是第一要务。
需要备份什么
OpenClaw 的数据都在 /data 目录下:
config.yaml:配置文件db/:SQLite 数据库(聊天记录、用户数据)skills/:自定义 Skillknowledge/:知识库数据
自动备份脚本
#!/bin/bash
BACKUP_DIR="/backups/openclaw"
DATE=$(date +%Y%m%d_%H%M%S)
# 停止服务避免数据不一致
docker-compose stop openclaw
# 压缩备份
tar czf "$BACKUP_DIR/openclaw_$DATE.tar.gz" /opt/openclaw/data/
# 重新启动
docker-compose start openclaw
# 上传到 S3
aws s3 cp "$BACKUP_DIR/openclaw_$DATE.tar.gz" s3://my-backups/openclaw/
# 保留最近 30 天
find $BACKUP_DIR -mtime +30 -name "*.tar.gz" -delete
配合 cron 每天凌晨跑一次。
恢复流程
- 下载备份:
aws s3 cp s3://my-backups/openclaw/openclaw_20260310.tar.gz . - 解压到 data 目录
- 重启服务
注意事项
- 备份前最好停服务,不然 SQLite 可能数据不一致
- 如果不想停服务,可以用
sqlite3 /data/db/main.db ".backup /tmp/backup.db"做热备 - 配置文件里可能有 API Key 等敏感信息,备份文件要加密
数据无价,备份有价(其实也不贵)。