はじめに
OpenClaw の運用中には、設定ファイル、API キー、会話履歴、スキル設定など、さまざまな重要データが生成されます。サーバー障害や誤操作によりデータが失われた場合、復旧コストは非常に高くなります。本記事では、確実なバックアップ戦略の策定方法と、災害発生時のサービス迅速復旧について詳しく解説します。
一、バックアップが必要なデータ
1.1 データ一覧
| データタイプ | デフォルトパス | 重要度 | 変更頻度 |
|---|---|---|---|
| メイン設定ファイル | ~/.config/openclaw/openclaw.json5 |
最高 | 低 |
| 環境変数設定 | ~/.config/openclaw/.env |
最高 | 低 |
| チャンネル認証情報 | ~/.openclaw/credentials/ |
最高 | 低 |
| セッションデータ | ~/.openclaw/sessions/ |
高 | 高 |
| スキル設定 | ~/.openclaw/skills/ |
中 | 中 |
| ナレッジベースデータ | ~/.openclaw/knowledge/ |
高 | 中 |
| SSL 証明書 | ~/.openclaw/ssl/ |
高 | 低 |
| ログファイル | ~/.local/share/openclaw/logs/ |
低 | 高 |
1.2 データ使用量の確認
# 各データディレクトリのディスク使用量を確認
du -sh ~/.config/openclaw/
du -sh ~/.openclaw/sessions/
du -sh ~/.openclaw/skills/
du -sh ~/.openclaw/knowledge/
du -sh ~/.local/share/openclaw/logs/
二、手動バックアップ
2.1 完全バックアップ
# バックアップディレクトリの作成
BACKUP_DIR="/backup/openclaw/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
# 設定ファイルのバックアップ
cp -r ~/.config/openclaw/ "$BACKUP_DIR/config/"
# 運用データのバックアップ
cp -r ~/.openclaw/ "$BACKUP_DIR/data/"
# バックアップの圧縮
cd /backup/openclaw/
tar -czf "openclaw-backup-$(date +%Y%m%d_%H%M%S).tar.gz" "$(date +%Y%m%d_%H%M%S)/"
echo "バックアップ完了: $BACKUP_DIR"
2.2 コア設定のみのバックアップ
最も重要な設定のみをバックアップする場合(新サーバーへの移行時に最も一般的):
# 設定のエクスポート
openclaw config export > ~/openclaw-config-backup.json
# または手動でコアファイルをパッケージ化
tar -czf openclaw-core-backup.tar.gz \
~/.config/openclaw/openclaw.json5 \
~/.config/openclaw/.env \
~/.openclaw/credentials/
2.3 openclaw backup コマンドの使用
OpenClaw には組み込みのバックアップコマンドがあり、ワンクリックで完了できます。
# 完全バックアップ(設定+データ)
openclaw backup create
# 設定のみバックアップ
openclaw backup create --config-only
# 出力先パスの指定
openclaw backup create --output /backup/openclaw-20260314.tar.gz
# バックアップ内容の確認
openclaw backup list
三、自動定期バックアップ
3.1 Cron を使用した定時バックアップ
自動バックアップスクリプトを作成します。
#!/bin/bash
# /usr/local/bin/openclaw-backup.sh
BACKUP_ROOT="/backup/openclaw"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_ROOT/openclaw-$DATE.tar.gz"
KEEP_DAYS=30
# バックアップディレクトリの作成
mkdir -p "$BACKUP_ROOT"
# バックアップの実行
openclaw backup create --output "$BACKUP_FILE"
if [ $? -eq 0 ]; then
echo "[$(date)] バックアップ成功: $BACKUP_FILE" >> /var/log/openclaw-backup.log
else
echo "[$(date)] バックアップ失敗!" >> /var/log/openclaw-backup.log
# アラート通知の送信
curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" \
-d chat_id="$CHAT_ID" \
-d text="OpenClaw バックアップ失敗。確認してください!"
exit 1
fi
# 古いバックアップのクリーンアップ
find "$BACKUP_ROOT" -name "openclaw-*.tar.gz" -mtime +$KEEP_DAYS -delete
echo "[$(date)] ${KEEP_DAYS}日前の古いバックアップを削除済み" >> /var/log/openclaw-backup.log
chmod +x /usr/local/bin/openclaw-backup.sh
# 定時タスクの設定:毎日午前2時に実行
crontab -e
# 追加:0 2 * * * /usr/local/bin/openclaw-backup.sh
3.2 リモートストレージへのバックアップ
ローカルバックアップだけではディスク障害に対応できないため、リモートストレージへの同期を推奨します。
# リモートサーバーへの同期(rsync 経由)
rsync -avz /backup/openclaw/ user@backup-server:/remote-backup/openclaw/
# S3 互換ストレージへの同期
aws s3 sync /backup/openclaw/ s3://my-bucket/openclaw-backup/ --storage-class STANDARD_IA
# Backblaze B2 への同期
b2 sync /backup/openclaw/ b2://my-bucket/openclaw-backup/
バックアップスクリプトの末尾にリモート同期ステップを追加します。
# openclaw-backup.sh の末尾に追加
rsync -avz --delete "$BACKUP_ROOT/" user@backup-server:/remote-backup/openclaw/
echo "[$(date)] リモート同期完了" >> /var/log/openclaw-backup.log
3.3 バックアップの暗号化
バックアップに機密情報(API キーなど)が含まれる場合は、暗号化を推奨します。
# GPG でバックアップを暗号化
gpg --symmetric --cipher-algo AES256 "$BACKUP_FILE"
rm "$BACKUP_FILE" # 暗号化されていないバックアップを削除
# 復号時
gpg --decrypt "$BACKUP_FILE.gpg" > "$BACKUP_FILE"
四、災害復旧
4.1 復旧手順
バックアップから復旧する必要がある場合は、以下の手順に従います。
# 1. OpenClaw のインストール(新サーバーの場合)
npm install -g openclaw
# 2. 現在のサービスの停止(実行中の場合)
openclaw stop
# 3. openclaw backup restore コマンドの使用
openclaw backup restore /backup/openclaw-20260314.tar.gz
# または手動で復旧
tar -xzf /backup/openclaw-20260314.tar.gz -C /tmp/openclaw-restore/
cp -r /tmp/openclaw-restore/config/* ~/.config/openclaw/
cp -r /tmp/openclaw-restore/data/* ~/.openclaw/
# 4. 設定の検証
openclaw config validate
# 5. サービスの起動
openclaw up -d
# 6. ヘルスチェック
openclaw doctor
curl -s http://localhost:18789/health | jq .
4.2 部分復旧
特定のデータのみを復旧する必要がある場合もあります。
# 設定ファイルのみ復旧
openclaw backup restore /backup/openclaw-20260314.tar.gz --config-only
# セッションデータのみ復旧
openclaw backup restore /backup/openclaw-20260314.tar.gz --sessions-only
# ナレッジベースのみ復旧
openclaw backup restore /backup/openclaw-20260314.tar.gz --knowledge-only
4.3 サーバー間の移行
OpenClaw をあるサーバーから別のサーバーに移行する場合:
# 旧サーバーで
openclaw backup create --output /tmp/openclaw-migration.tar.gz
scp /tmp/openclaw-migration.tar.gz user@new-server:/tmp/
# 新サーバーで
npm install -g openclaw
openclaw backup restore /tmp/openclaw-migration.tar.gz
openclaw up -d
# すべてのチャンネルが正常に接続されているか確認
openclaw status
五、バックアップ戦略の推奨事項
5.1 階層型バックアップ戦略
| 階層 | 頻度 | 保持期間 | 内容 | 保存先 |
|---|---|---|---|---|
| 日次バックアップ | 毎日 | 30日 | 完全バックアップ | ローカル + リモート |
| 週次バックアップ | 毎週日曜 | 90日 | 完全バックアップ | リモートストレージ |
| 設定変更バックアップ | 変更ごと | 永久 | 設定のみ | Git リポジトリ |
5.2 設定ファイルのバージョン管理
Git での設定ファイル変更管理を強く推奨します。
# Git リポジトリの初期化
cd ~/.config/openclaw
git init
echo ".env" >> .gitignore # 機密環境変数を除外
git add .
git commit -m "Initial OpenClaw config"
# 設定変更のたびに
git add -A
git commit -m "モデル設定を claude-3.5-sonnet に更新"
# プライベートリポジトリにプッシュ
git remote add origin [email protected]:yourname/openclaw-config.git
git push -u origin main
5.3 定期的なバックアップの検証
バックアップを検証しないのはバックアップがないのと同じです。月に1回の復旧テストを推奨します。
# テスト環境で復旧を試行
docker run -it --rm -v /backup/openclaw/latest.tar.gz:/backup.tar.gz node:20 bash
npm install -g openclaw
openclaw backup restore /backup.tar.gz
openclaw config validate
信頼性の高いバックアップ戦略を策定し実行することは、OpenClaw サービスの長期的な安定運用を支える基盤です。データが失われてからバックアップの重要性に気づくことのないようにしましょう。