はじめに
データバックアップは運用において最も重要でありながら、最も見落とされがちな作業です。OpenClaw では、設定ファイル、スキルプラグイン、会話履歴などのデータが失われた場合、復旧コストは非常に高くなります。本チュートリアルでは、バックアップすべきデータ、自動バックアップの実現方法、災害復旧とサーバー移行の完全な手順を詳しくご紹介します。
バックアップが必要なデータ
データ一覧
| データ種類 | 保存場所 | 重要度 | サイズ目安 |
|---|---|---|---|
| メイン設定ファイル | ~/.config/openclaw/openclaw.json5 |
極めて高い | < 10 KB |
| スキルファイル | ~/.openclaw/skills/*.md |
高い | 各 1-50 KB |
| 会話履歴 | ~/.openclaw/data/conversations/ |
中 | 使用量による |
| MCP 設定 | ~/.openclaw/mcp/ |
高い | < 100 KB |
| ユーザーデータ | ~/.openclaw/data/users/ |
中 | ユーザー数による |
| ログファイル | ~/.openclaw/logs/ |
低い | 大きくなる可能性あり |
| SSL 証明書 | /etc/letsencrypt/ またはカスタムパス |
高い | < 100 KB |
| 環境変数 | ~/.bashrc または ~/.env |
極めて高い | < 5 KB |
最小バックアップセット
ストレージ容量が限られている場合、最低限以下をバックアップしてください:
~/.config/openclaw/openclaw.json5 # メイン設定
~/.openclaw/skills/ # すべてのスキル
~/.openclaw/mcp/ # MCP 設定
この3つがあれば、他のデータが失われてもコア機能を素早く復元できます。
ステップ1:手動バックアップ
1.1 ワンクリックバックアップスクリプト
簡単なバックアップスクリプトを作成します:
nano ~/openclaw-backup.sh
以下の内容を記述します:
#!/bin/bash
# OpenClaw バックアップスクリプト
# 設定
BACKUP_DIR="$HOME/openclaw-backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="openclaw-backup-${DATE}.tar.gz"
# バックアップディレクトリの作成
mkdir -p "$BACKUP_DIR"
# バックアップ対象のパス
PATHS=(
"$HOME/.config/openclaw"
"$HOME/.openclaw/skills"
"$HOME/.openclaw/mcp"
"$HOME/.openclaw/data"
)
# 任意:環境変数のバックアップ(OPENCLAW 関連のみ)
ENV_FILE="/tmp/openclaw-env-${DATE}.txt"
env | grep -E '^(OPENCLAW_|OPENAI_|ANTHROPIC_|GOOGLE_AI_|DEEPSEEK_|OPENROUTER_)' > "$ENV_FILE"
# 圧縮バックアップの作成
echo "バックアップを開始します..."
tar -czf "${BACKUP_DIR}/${BACKUP_FILE}" \
"${PATHS[@]}" \
"$ENV_FILE" \
2>/dev/null
# 一時ファイルの削除
rm -f "$ENV_FILE"
# バックアップサイズの計算
SIZE=$(du -h "${BACKUP_DIR}/${BACKUP_FILE}" | cut -f1)
echo "バックアップ完了:"
echo " ファイル:${BACKUP_DIR}/${BACKUP_FILE}"
echo " サイズ:${SIZE}"
# 最新30個のバックアップを保持し、古いものを削除
cd "$BACKUP_DIR"
ls -t openclaw-backup-*.tar.gz | tail -n +31 | xargs -r rm
echo "古いバックアップを削除しました"
パーミッションを設定して実行します:
chmod +x ~/openclaw-backup.sh
~/openclaw-backup.sh
1.2 バックアップの検証
# バックアップの内容を確認
tar -tzf ~/openclaw-backups/openclaw-backup-*.tar.gz | head -20
# ファイルの整合性チェック
tar -tzf ~/openclaw-backups/openclaw-backup-*.tar.gz > /dev/null && echo "バックアップファイルは正常です" || echo "バックアップファイルが破損しています"
ステップ2:自動バックアップ
2.1 Cron による定期バックアップ
crontab -e
以下のエントリを追加します:
# 毎日午前2時に OpenClaw を自動バックアップ
0 2 * * * /home/your-user/openclaw-backup.sh >> /var/log/openclaw-backup.log 2>&1
# 毎週日曜午前3時にフルバックアップを作成(ログを含む)
0 3 * * 0 /home/your-user/openclaw-backup-full.sh >> /var/log/openclaw-backup.log 2>&1
2.2 フルバックアップスクリプト(ログと会話履歴を含む)
nano ~/openclaw-backup-full.sh
#!/bin/bash
# OpenClaw フルバックアップスクリプト(週次)
BACKUP_DIR="$HOME/openclaw-backups/weekly"
DATE=$(date +%Y%m%d)
BACKUP_FILE="openclaw-full-${DATE}.tar.gz"
mkdir -p "$BACKUP_DIR"
# データの一貫性を確保するため OpenClaw を一時停止
echo "OpenClaw サービスを一時停止します..."
openclaw restart
# サービスの完全停止を待機
sleep 5
# フルバックアップ
echo "フルバックアップを開始します..."
tar -czf "${BACKUP_DIR}/${BACKUP_FILE}" \
"$HOME/.config/openclaw" \
"$HOME/.openclaw" \
2>/dev/null
# OpenClaw サービスの復旧
echo "OpenClaw サービスを復旧します..."
openclaw up -d
SIZE=$(du -h "${BACKUP_DIR}/${BACKUP_FILE}" | cut -f1)
echo "フルバックアップ完了:${SIZE}"
# 最新12週分のバックアップを保持
cd "$BACKUP_DIR"
ls -t openclaw-full-*.tar.gz | tail -n +13 | xargs -r rm
chmod +x ~/openclaw-backup-full.sh
2.3 リモートストレージへのバックアップ
ローカルバックアップだけでは十分ではありません。リモートへの同期を推奨します:
方法1:rsync で別のサーバーに同期
# バックアップスクリプトの末尾に追加
rsync -avz --delete \
"$BACKUP_DIR/" \
backup-user@backup-server:/backups/openclaw/
方法2:S3 互換ストレージへのアップロード
# AWS CLI または互換ツールをインストール
# apt install awscli
# バックアップスクリプトの末尾に追加
aws s3 cp "${BACKUP_DIR}/${BACKUP_FILE}" \
s3://your-backup-bucket/openclaw/ \
--storage-class STANDARD_IA
方法3:Google Drive / OneDrive へのアップロード
# rclone を使用
# apt install rclone
# rclone config(初回は設定が必要)
rclone copy "${BACKUP_DIR}/${BACKUP_FILE}" \
gdrive:Backups/openclaw/
2.4 バックアップ通知
バックアップスクリプトに通知機能を追加します:
# OpenClaw 自体を使って通知を送信(Telegram が設定済みの場合)
notify_backup() {
local status=$1
local message=$2
curl -s -X POST "http://localhost:18789/api/notify" \
-H "Content-Type: application/json" \
-d "{\"channel\": \"telegram\", \"user\": \"${ADMIN_TELEGRAM_ID}\", \"message\": \"${message}\"}"
}
# バックアップ成功時に呼び出し
notify_backup "success" "OpenClaw 每日备份完成,大小:${SIZE}"
# バックアップ失敗時に呼び出し
if [ $? -ne 0 ]; then
notify_backup "error" "OpenClaw 备份失败,请检查日志"
fi
ステップ3:データ復元
3.1 復元手順
バックアップから復元する必要がある場合、以下の手順で進めます:
# ステップ1:OpenClaw を停止
openclaw restart
# ステップ2:現在のデータをバックアップ(念のため)
mv ~/.config/openclaw ~/.config/openclaw.broken
mv ~/.openclaw ~/.openclaw.broken
# ステップ3:バックアップファイルを展開
cd /
tar -xzf ~/openclaw-backups/openclaw-backup-20260404_020000.tar.gz
# ステップ4:環境変数を復元(バックアップに含まれている場合)
cat /tmp/openclaw-env-*.txt
# 必要な環境変数を手動で ~/.bashrc に追加
# ステップ5:環境変数を再読み込み
source ~/.bashrc
# ステップ6:OpenClaw を起動
openclaw up -d
# ステップ7:検証
openclaw doctor
3.2 部分復元
特定のデータのみ復元する場合:
# 設定ファイルのみ復元
tar -xzf backup.tar.gz --include='*openclaw.json5' -C /
# スキルファイルのみ復元
tar -xzf backup.tar.gz --include='*skills/*' -C /
# MCP 設定のみ復元
tar -xzf backup.tar.gz --include='*mcp/*' -C /
3.3 バックアップ内のファイルを確認
復元前にバックアップの内容を確認します:
# バックアップ内のすべてのファイルを一覧表示
tar -tzf backup.tar.gz
# 特定ファイルの内容を確認(展開せずに)
tar -xzf backup.tar.gz -O home/user/.config/openclaw/openclaw.json5
ステップ4:サーバー移行
4.1 移行前の準備
旧サーバーで:
# フルバックアップを作成
~/openclaw-backup-full.sh
# 現在のバージョンを記録
openclaw --version > ~/openclaw-version.txt
# Node.js のバージョンを記録
node --version >> ~/openclaw-version.txt
# 環境変数をエクスポート
env | grep -E '^(OPENCLAW_|OPENAI_|ANTHROPIC_|GOOGLE_AI_|DEEPSEEK_|OPENROUTER_|TELEGRAM_|DISCORD_)' > ~/openclaw-env-export.txt
4.2 新サーバーでの復元
# ステップ1:Node.js 22+ をインストール
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
sudo apt install -y nodejs
# ステップ2:OpenClaw をインストール
npm install -g openclaw@latest
# ステップ3:バックアップを新サーバーに転送
scp old-server:~/openclaw-backups/openclaw-full-latest.tar.gz ~/
# ステップ4:データを復元
cd /
tar -xzf ~/openclaw-full-latest.tar.gz
# ステップ5:環境変数を復元
scp old-server:~/openclaw-env-export.txt ~/
cat ~/openclaw-env-export.txt >> ~/.bashrc
source ~/.bashrc
# ステップ6:初期化チェックを実行
openclaw doctor
# ステップ7:サービスを起動
openclaw up -d
# ステップ8:すべてのチャンネルの正常動作を確認
openclaw logs
4.3 移行後のチェックリスト
| チェック項目 | コマンド | 期待結果 |
|---|---|---|
| サービスステータス | openclaw doctor |
すべて通過 |
| 設定の読み込み | openclaw logs |
エラーなし |
| モデル接続 | テストメッセージを送信 | 正常に応答 |
| チャンネル接続 | 各チャンネルでメッセージを送信 | 正常に送受信 |
| スキルの読み込み | openclaw skill list |
すべてのスキルを表示 |
| ダッシュボード | ブラウザでアクセス | 正常にログイン |
| HTTPS | curl -I https://your-domain |
200 OK |
4.4 DNS の切り替え
カスタムドメインを使用している場合:
# DNS A レコードを新サーバーの IP に更新
# ドメインプロバイダーの管理画面で操作
# DNS の伝播を待機(通常5-30分、最長48時間)
# 以下のコマンドで確認可能
dig ai.example.com +short
# 新しい IP への切り替えを確認後、新サーバーで SSL を設定
sudo certbot certonly --standalone -d ai.example.com
ステップ5:災害復旧プラン
5.1 3-2-1 バックアップルール
業界標準の 3-2-1 バックアップルールに従います:
- 3 つのデータコピー
- 2 種類の異なる記録メディア
- 1 つのオフサイトバックアップ
実装例:
コピー1:サーバーローカル ~/openclaw-backups/(毎日自動)
コピー2:リモート S3 ストレージ(毎日同期)
コピー3:ローカル NAS または外付けハードディスク(毎週手動または自動)
5.2 復旧時間の見積もり
| 復旧シナリオ | 推定時間 | 操作内容 |
|---|---|---|
| 設定ファイルの破損 | 5-10分 | バックアップから設定を復元 |
| スキルファイルの消失 | 5分 | バックアップからスキルディレクトリを復元 |
| .openclaw ディレクトリ全体の消失 | 15-30分 | フルバックアップの復元 |
| サーバーダウン | 30-60分 | 新サーバー + バックアップ復元 |
| データセンター障害 | 1-2時間 | オフサイト復旧 |
5.3 クイック復旧スクリプト
災害発生時に素早く実行できるワンクリック復旧スクリプトを作成します:
nano ~/openclaw-restore.sh
#!/bin/bash
# OpenClaw ワンクリック復旧スクリプト
set -e
BACKUP_DIR="$HOME/openclaw-backups"
# 最新のバックアップを検索
LATEST_BACKUP=$(ls -t "$BACKUP_DIR"/openclaw-backup-*.tar.gz 2>/dev/null | head -1)
if [ -z "$LATEST_BACKUP" ]; then
echo "エラー:バックアップファイルが見つかりません"
exit 1
fi
echo "以下のバックアップから復元します:"
echo " $LATEST_BACKUP"
echo " 作成日時:$(stat -c %y "$LATEST_BACKUP" 2>/dev/null || stat -f %Sm "$LATEST_BACKUP")"
echo ""
read -p "復元を実行しますか?(y/N) " confirm
if [ "$confirm" != "y" ]; then
echo "キャンセルしました"
exit 0
fi
# サービスを停止
echo "OpenClaw を停止しています..."
openclaw restart 2>/dev/null || true
# 現在の状態をバックアップ
echo "現在の状態をバックアップしています..."
if [ -d "$HOME/.openclaw" ]; then
mv "$HOME/.openclaw" "$HOME/.openclaw.pre-restore.$(date +%s)"
fi
if [ -d "$HOME/.config/openclaw" ]; then
mv "$HOME/.config/openclaw" "$HOME/.config/openclaw.pre-restore.$(date +%s)"
fi
# 復元
echo "バックアップデータを復元しています..."
cd /
tar -xzf "$LATEST_BACKUP"
# サービスを起動
echo "OpenClaw を起動しています..."
source ~/.bashrc
openclaw up -d
# 検証
echo "サービスステータスを確認しています..."
sleep 3
openclaw doctor
echo ""
echo "復元が完了しました!"
chmod +x ~/openclaw-restore.sh
バックアップの監視
バックアップが正常に実行されているかの確認
# 最新バックアップの日時を確認
ls -lt ~/openclaw-backups/ | head -5
# バックアップ cron のログを確認
tail -20 /var/log/openclaw-backup.log
# バックアップファイルのサイズを確認(小さすぎる場合はバックアップが不完全な可能性)
du -sh ~/openclaw-backups/openclaw-backup-*.tar.gz | tail -5
定期的な復元演習
四半期ごとに復元演習を実施し、バックアップが使用可能であることを確認することを推奨します:
# テスト環境で復元
mkdir -p /tmp/openclaw-test-restore
cd /tmp/openclaw-test-restore
tar -xzf ~/openclaw-backups/openclaw-backup-latest.tar.gz
echo "復元テスト通過"
rm -rf /tmp/openclaw-test-restore
よくある質問
バックアップファイルが大きすぎる
会話履歴がバックアップファイルを大きくする場合があります。解決方法:
# コア設定のみバックアップし、会話履歴は含めない
tar -czf backup.tar.gz \
~/.config/openclaw \
~/.openclaw/skills \
~/.openclaw/mcp \
--exclude='*.log' \
--exclude='conversations'
復元後にチャンネルに接続できない
通常、環境変数が正しく復元されていないことが原因です。以下を確認してください:
# 重要な環境変数が存在することを確認
echo $TELEGRAM_BOT_TOKEN
echo $OPENAI_API_KEY
空の場合は、環境変数を再設定する必要があります。
クロスプラットフォーム移行(Linux → 異なる Linux ディストリビューション)
OpenClaw のデータはクロスプラットフォーム互換です。Node.js のバージョンが一致していれば(22+)、バックアップファイルはどの Linux ディストリビューションでも復元可能です。
まとめ
データバックアップは、OpenClaw の安定運用を守る最後の砦です。核心的な推奨事項:自動化スクリプトで毎日バックアップし、少なくとも1つのオフサイトバックアップを保持し、定期的に復元演習を実施してください。設定ファイルとスキルファイルが最も重要なバックアップ対象で、これらの復元にかかる時間はわずか数分です。3-2-1 ルールを守り、どのような予期せぬ事態が起きても AI アシスタントを素早く復旧できるようにしてください。