以下是一份详细的OpenClaw数据备份设置指南,分为 【核心数据识别】、【备份策略】、【实操方法】 和【恢复流程】 四部分。

核心需要备份的数据路径(关键!)
OpenClaw的默认安装目录通常是 /home/ubuntu/OpenClaw 或您指定的路径,您需要重点关注以下子目录和文件:
-
配置与模型数据:
/home/ubuntu/OpenClaw/models/: 这是最核心的目录! 存放了所有下载或训练好的大语言模型文件(如Qwen、Llama等),体积巨大(数十GB),但不可重建。/home/ubuntu/OpenClaw/configs/: 系统配置文件,包含模型参数、API密钥、系统设置等。/home/ubuntu/OpenClaw/docker-compose.yml: 如果您使用Docker部署,这个文件定义了所有服务。/home/ubuntu/OpenClaw/.env: 环境变量文件,包含数据库密码、密钥等重要敏感信息。
-
数据库数据:
- 默认使用Docker容器内的数据库。备份的关键是导出数据库内容。
- 主要数据: 用户对话历史、知识库文档、用户信息等都存储在数据库(通常是PostgreSQL或MySQL)中。
- 备份命令: 您需要从运行的数据库容器中执行导出操作。
# 假设数据库服务名为 `openclaw-db`,数据库名为 `openclaw` docker exec openclaw-db pg_dump -U postgres openclaw > /path/to/backup/openclaw_db_backup_$(date +%Y%m%d).sql # 或对于MySQL docker exec openclaw-db mysqldump -u root -p密码 openclaw > /path/to/backup/openclaw_db_backup_$(date +%Y%m%d).sql
-
知识库文件:
- 如果您使用了“知识库”或“文件上传”功能,上传的原始文件(PDF、Word等)可能存放在某个特定目录,
data/uploads/或通过配置指定,请在configs/中查找相关路径配置。
- 如果您使用了“知识库”或“文件上传”功能,上传的原始文件(PDF、Word等)可能存放在某个特定目录,
-
日志文件(可选,用于调试):
/home/ubuntu/OpenClaw/logs/
推荐的备份策略
- 全量备份 + 增量备份:
- 每周进行一次全量备份(包括所有模型文件、配置和数据库导出),由于模型文件巨大,可考虑第一次全量后,后续只备份新增/更改的模型。
- 每天进行一次增量备份(仅备份数据库导出、新增配置和知识库文件)。
- 3-2-1 原则:
- 至少保存 3 份备份。
- 使用 2 种不同的存储介质(本地硬盘 + 云存储)。
- 1 份存放在异地(阿里云OSS、腾讯云COS、Backblaze B2、另一台服务器)。
具体备份方法
手动备份脚本(推荐)
创建一个备份脚本 backup_openclaw.sh,并赋予执行权限 (chmod +x backup_openclaw.sh)。
# ===== 配置区 =====
OPENCLAW_HOME="/home/ubuntu/OpenClaw"
BACKUP_ROOT="/home/ubuntu/OpenClaw_Backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="$BACKUP_ROOT/$DATE"
# 数据库容器名和服务名
DB_CONTAINER="openclaw-db"
DB_NAME="openclaw"
DB_USER="postgres"
# ===== 执行区 =====
echo "开始备份 OpenClaw, 时间: $DATE"
mkdir -p $BACKUP_DIR
# 1. 备份配置和关键文件
echo "备份配置和关键文件..."
cp -r $OPENCLAW_HOME/configs $BACKUP_DIR/
cp $OPENCLAW_HOME/docker-compose.yml $BACKUP_DIR/
cp $OPENCLAW_HOME/.env $BACKUP_DIR/ 2>/dev/null || echo ".env 文件不存在,跳过。"
# 2. 备份数据库 (PostgreSQL 示例)
echo "备份数据库..."
docker exec $DB_CONTAINER pg_dump -U $DB_USER $DB_NAME > $BACKUP_DIR/openclaw_db.sql
if [ $? -eq 0 ]; then
echo "数据库备份成功。"
else
echo "数据库备份失败!请检查容器名和数据库配置。"
exit 1
fi
# 3. 选择性备份模型(首次建议全量,后续可注释掉以节省空间)
echo "备份模型文件(这是一个耗时且占用空间的操作)..."
# 使用 rsync 可以后续进行增量备份
rsync -av --progress $OPENCLAW_HOME/models/ $BACKUP_DIR/models/ 2>&1 | tee $BACKUP_DIR/rsync_model.log
# 4. 备份知识库上传文件(如果存在且路径明确)
UPLOAD_DIR="$OPENCLAW_HOME/data/uploads"
if [ -d "$UPLOAD_DIR" ]; then
echo "备份知识库上传文件..."
rsync -av $UPLOAD_DIR/ $BACKUP_DIR/uploads/
fi
# 5. 打包备份文件夹(可选,方便传输)
echo "打包备份文件夹..."
cd $BACKUP_ROOT
tar -czf $DATE.tar.gz $DATE/
if [ $? -eq 0 ]; then
echo "打包成功,文件:$BACKUP_ROOT/$DATE.tar.gz"
# 可以选择删除原文件夹以节省空间
# rm -rf $BACKUP_DIR
else
echo "打包失败。"
fi
echo "===== 备份完成! ====="
echo "备份存放在:$BACKUP_DIR 或 $BACKUP_ROOT/$DATE.tar.gz"
运行方式:
cd ~ ./backup_openclaw.sh
使用定时任务自动备份
使用Linux的 crontab 设置自动任务。
-
编辑当前用户的crontab:
crontab -e
-
添加以下行,实现每天凌晨2点进行增量备份(主要备份数据库和配置),每周日凌晨3点进行全量备份(包含模型):
# 每天凌晨2点,运行备份脚本(假设脚本已配置为增量模式,或自行修改脚本逻辑) 0 2 * * * /home/ubuntu/backup_openclaw_daily.sh >> /home/ubuntu/backup_daily.log 2>&1 # 每周日凌晨3点,运行完整备份脚本 0 3 * * 0 /home/ubuntu/backup_openclaw_full.sh >> /home/ubuntu/backup_full.log 2>&1
你需要创建两个脚本:
backup_openclaw_daily.sh(主要备份DB和configs) 和backup_openclaw_full.sh(额外备份models)。
同步到云存储(增强安全性)
在本地备份的基础上,将打包后的 *.tar.gz 文件同步到云存储。
- 使用
rclone: 一个强大的命令行云同步工具。- 安装并配置rclone连接到你的云盘(如Google Drive, OneDrive, 阿里云OSS等)。
- 在备份脚本最后添加:
echo "同步到云存储..." rclone copy $BACKUP_ROOT/$DATE.tar.gz mycloud:OpenClawBackups/
- 使用云厂商的CLI工具: 如
aws s3 cp,ossutil等。
数据恢复流程
当需要恢复时,遵循以下步骤:
- 准备新环境: 在新机器上安装好相同版本的Docker、Docker Compose等依赖。
- 恢复文件:
- 将备份的
configs/、docker-compose.yml、.env复制到新的OpenClaw目录。 - 将
models/目录复制到相应位置(耗时最长)。
- 将备份的
- 恢复数据库:
- 使用
docker-compose up -d启动数据库服务(但先不启动应用)。 - 将备份的SQL文件复制到数据库容器内并导入:
docker cp /path/to/backup/openclaw_db.sql openclaw-db:/tmp/ docker exec openclaw-db psql -U postgres -d openclaw -f /tmp/openclaw_db.sql
- 使用
- 启动服务:
- 修改
.env中的配置(如IP地址等)以适应新环境。 - 运行
docker-compose up -d启动所有服务。
- 修改
- 验证: 登录Web界面,检查用户、对话历史和知识库是否完整。
总结与建议
- 立即行动: 安装完成后,第一时间进行首次全量备份。
- 自动化: 务必设置
crontab自动备份,避免遗忘。 - 异地备份: 至少将每周的全量备份包上传到另一个物理位置或云端。
- 定期测试恢复: 每季度或每半年,在测试环境演练一次恢复流程,确保备份有效。
- 文档化: 将您的备份策略、脚本位置、恢复步骤记录下来。
通过以上设置,您的OpenClaw数据和模型资产将得到有效保护。
标签: bash shebang