Cloudfalre D1データベースを自動で定時バックアップする方法
Cloudfalre D1データベースの本番データベースを、Bashスクリプトで自動かつ定時バックアップする方法をご紹介。
編集ノート:SERVERSUSでは、パートナーリンクからコミッションを得ています。コミッションが記事の意見や、サービスの評価に影響を与えることはありません。
Cloudfalre D1データベースはwranglerコマンドでダウンロードが可能
Cloudfalre D1で展開中のデータベースは、wranglerコマンドでダウンロードやアップロードができます1。
都度ダウンロードするのも良いですが、バックアップを取るなら定時で自動で行うのがベストです。
Cloudfalre D1データベースを提示バックアップする
今回は、シェルスクリプトで実行させます。
#!/bin/bash
# npxのフルパス (anyenvを使っている場合)
NPX_PATH="$HOME/.anyenv/envs/nodenv/shims/npx"
# Cloudflare D1 のデータベース一覧を JSON 形式で取得
echo "Fetching database list..."
DB_LIST=$($NPX_PATH wrangler d1 list --json | jq -r '.[].name')
# バックアップディレクトリ(ユーザーホームのデスクトップ)
BACKUP_DIR="$HOME/Desktop"
# データベース一覧が空でないか確認
if [ -z "$DB_LIST" ]; then
echo "No databases found. Exiting."
exit 1
fi
# 各データベースをバックアップ
for DB_NAME in $DB_LIST; do
OUTPUT_FILE="$BACKUP_DIR/$DB_NAME.sql"
echo "Backing up database: $DB_NAME → $OUTPUT_FILE"
# エクスポートコマンドの実行
$NPX_PATH wrangler d1 export "$DB_NAME" --remote --output="$OUTPUT_FILE"
# 成功・失敗のチェック
if [ $? -eq 0 ]; then
echo "✅ Backup completed: $OUTPUT_FILE"
else
echo "❌ Backup failed for: $DB_NAME"
fi
done
echo "🎉 All backups completed."
やってることは簡単で、
- wranglerでデーターベース一覧を取得
- データベースごとにexportを実行
だけです。
今回は、デスクトップに保存する形ですが、BACKUP_DIRの場所を任意の場所にすれば、好きな場所に保存ができます。DropboxやGoogle Driveのフォルダに指定しておけば、クラウドへも自動バックアップができます。
あとは、このスクリプトをcronなどで定時実行すれば、自動でバックアップを取ることができます。
Footnotes
価格は記載がある場合を除き、すべて税込みです。
関連キーワード
サーバレスの新着記事
サーバレスCloudflare R2の料金体系・無料枠まとめ 2024.8.21
サーバレスCloudflare R2をCyberduckで使う方法 2024.7.31
サーバレスAIの学習ボット・クローラーからサイトを守るメリットとブロックする方法 2024.7.19
サーバレスCloudFlare Pagesのビルド環境の違い 2024.5.9
サーバレスCloudflare D1の料金体系・無料枠まとめ 2024.3.25
サーバレスCloudflare PagesでNuxt3のビルド時に「ENOENT: no such file or directory」エラーの対象方法 2024.3.21
サーバレスGitlab CLIでpush時に「glab auth not found」となった際の対処方法 2024.3.19
サーバレスCloudFlare Workers AIの料金体系・無料枠まとめ 2024.2.2