還沒安裝 OpenClaw 嗎?
curl -fsSL https://openclaw.ai/install.sh | bashiwr -useb https://openclaw.ai/install.ps1 | iexcurl -fsSL https://openclaw.ai/install.cmd -o install.cmd && install.cmd && del install.cmd怕影響自己的電腦?ClawTank 60 秒雲端部署,免除誤刪檔案風險。
你的 OpenClaw 實例裡儲存了對話記錄、記憶、個人化設定、Skills 和各種認證資訊。一次意外的磁碟損壞或不小心的 rm -rf,就能讓數月的互動成果歸零。
備份不是可選的,是必要的。本文完整介紹備份策略——從手動 tar 到自動化雲端同步,再到跨伺服器搬遷。
理解資料結構
~/.openclaw/ 目錄
~/.openclaw/
openclaw.json # 核心設定檔(含 API 金鑰)
gateway.db # Gateway 資料庫(對話、狀態)
memory/ # 長期記憶系統
embeddings.db # 記憶向量資料庫
documents/ # 記憶文件
skills/ # 已安裝的 Skills
sessions/ # 頻道 Session(Telegram/WhatsApp/Discord)
logs/ # 日誌檔案
plugins/ # 已安裝的外掛
| 目錄/檔案 | 重要性 | 丟失後果 |
|---|---|---|
openclaw.json |
關鍵 | 所有設定需重新配置 |
gateway.db |
關鍵 | 對話歷史全部遺失 |
memory/ |
關鍵 | 長期記憶不可恢復 |
skills/ |
重要 | 可重裝但自訂設定丟失 |
sessions/ |
重要 | 需重新配對所有頻道 |
logs/ |
一般 | 無重大影響 |
核心原則: openclaw.json、gateway.db 和 memory/ 絕對不能丟。
手動備份
基本 tar 備份
# 停止 OpenClaw(確保資料一致性)
openclaw stop
# 建立帶時間戳的備份
BACKUP_NAME="openclaw-backup-$(date +%Y%m%d-%H%M%S).tar.gz"
tar -czf ~/$BACKUP_NAME -C ~ .openclaw/
# 重新啟動
openclaw start
echo "Backup created: ~/$BACKUP_NAME"
不停機備份
gateway.db 是 SQLite 資料庫,寫入中備份可能損壞[1]。用 SQLite 備份 API 可以安全地不停機備份:
sqlite3 ~/.openclaw/gateway.db ".backup '/tmp/gateway-backup.db'"
sqlite3 ~/.openclaw/memory/embeddings.db ".backup '/tmp/embeddings-backup.db'"
tar -czf ~/openclaw-backup-$(date +%Y%m%d).tar.gz \
--exclude='.openclaw/gateway.db' \
--exclude='.openclaw/memory/embeddings.db' \
--exclude='.openclaw/logs' \
-C ~ .openclaw/
# 手動加入安全備份的資料庫
cp /tmp/gateway-backup.db /tmp/embeddings-backup.db ~/
rm /tmp/gateway-backup.db /tmp/embeddings-backup.db
自動化 Cron 備份
sudo tee /usr/local/bin/openclaw-backup.sh << 'SCRIPT'
#!/bin/bash
set -euo pipefail
BACKUP_DIR="/var/backups/openclaw"
OPENCLAW_DIR="$HOME/.openclaw"
RETENTION_DAYS=30
mkdir -p "$BACKUP_DIR"
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
BACKUP_FILE="$BACKUP_DIR/openclaw-$TIMESTAMP.tar.gz"
# SQLite 安全備份
TEMP_DIR=$(mktemp -d)
sqlite3 "$OPENCLAW_DIR/gateway.db" ".backup '$TEMP_DIR/gateway.db'" 2>/dev/null || true
sqlite3 "$OPENCLAW_DIR/memory/embeddings.db" ".backup '$TEMP_DIR/embeddings.db'" 2>/dev/null || true
tar -czf "$BACKUP_FILE" \
--exclude='logs' --exclude='*.log' \
--exclude='gateway.db' --exclude='embeddings.db' \
-C "$(dirname $OPENCLAW_DIR)" "$(basename $OPENCLAW_DIR)/" \
-C "$TEMP_DIR" gateway.db embeddings.db 2>/dev/null
rm -rf "$TEMP_DIR"
find "$BACKUP_DIR" -name "openclaw-*.tar.gz" -mtime +$RETENTION_DAYS -delete
BACKUP_SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
echo "$(date): Backup completed: $BACKUP_FILE ($BACKUP_SIZE)" >> "$BACKUP_DIR/backup.log"
SCRIPT
chmod +x /usr/local/bin/openclaw-backup.sh
# 每天凌晨 3 點備份
(crontab -l 2>/dev/null; echo "0 3 * * * /usr/local/bin/openclaw-backup.sh") | crontab -
備份驗證
沒有驗證的備份等於沒有備份:
# 驗證 tar 完整性
tar -tzf /var/backups/openclaw/openclaw-latest.tar.gz > /dev/null && echo "OK" || echo "CORRUPTED"
# 計算校驗碼
sha256sum backup.tar.gz > backup.tar.gz.sha256
sha256sum -c backup.tar.gz.sha256
雲端備份
本地備份無法防禦硬碟損壞或整台伺服器的災難。3-2-1 備份策略要求至少一份異地副本[2]。
AWS S3
aws s3 sync /var/backups/openclaw/ s3://your-bucket/openclaw-backups/ \
--storage-class STANDARD_IA --exclude "*.log"
Backblaze B2(更便宜)
B2 的儲存成本約為 S3 的四分之一[3]:
pip install b2
b2 authorize-account YOUR_KEY_ID YOUR_APPLICATION_KEY
b2 sync /var/backups/openclaw/ b2://openclaw-backups/
rclone(萬用方案)
rclone sync /var/backups/openclaw/ remote:openclaw-backups/
# 加密同步(推薦,因為備份含 API 金鑰)
rclone sync /var/backups/openclaw/ remote-crypt:openclaw-backups/
備份加密
上傳雲端前務必加密:
