2026年5月20日

2026年5月20日

WordPressの定期バックアップをGoogle Driveに保存する方法

はじめに

Google Driveへの自動バックアップを設定することで、サーバー障害・マルウェア感染・誤操作があっても安全にデータを復元できます。UpdraftPlusを使えばGUI設定で簡単に実現でき、rcloneを使えばより柔軟な自動化が可能です。

症状・原因

  • バックアップをサーバー内にしか保存しておらずサーバー障害時に復元できない
  • 手動バックアップを忘れてしまう
  • Google Driveに大容量の空き容量があるので活用したい
  • バックアッププラグインのクラウド連携設定がわからない

解決手順

ステップ1:UpdraftPlus をインストールして設定する

# UpdraftPlus をインストール・有効化
wp plugin install updraftplus --activate

# プラグインの状態確認
wp plugin status updraftplus
UpdraftPlus 設定手順(ダッシュボードから):
1. 設定 → UpdraftPlus バックアップ
2. 「設定」タブをクリック
3. バックアップスケジュール:
   - ファイルバックアップ: 毎日
   - データベースバックアップ: 毎日
   - 保持する数: 7(7日分)
4. リモートストレージ: 「Google Drive」を選択
5. 「Google Drive で認証」ボタンをクリック
   → Googleアカウントで認証
   → アクセスを許可
6. 「設定を保存」をクリック
7. 「今すぐバックアップ」で動作確認

ステップ2:Google Drive API を手動設定する(上級者向け)

# Google Cloud Console での設定:
# 1. console.cloud.google.com でプロジェクト作成
# 2. APIとサービス → ライブラリ → Google Drive API を有効化
# 3. 認証情報 → OAuth 2.0 クライアントIDを作成
#    アプリケーションの種類: ウェブアプリケーション
#    承認済みリダイレクト URI: https://example.com/wp-admin/
# 4. クライアントID・シークレットをメモ
// wp-config.php: UpdraftPlus に Google Drive 認証情報を設定
define('UPDRAFTPLUS_GOOGLEDRIVE_CLIENTID', 'your-client-id.apps.googleusercontent.com');
define('UPDRAFTPLUS_GOOGLEDRIVE_CLIENTSECRET', 'your-client-secret');

ステップ3:rclone で Google Drive に自動同期する

# rclone をインストール
curl https://rclone.org/install.sh | sudo bash

# Google Drive の設定(インタラクティブ設定)
rclone config
# → n (new remote)
# → 名前: gdrive
# → Storage: 18 (Google Drive)
# → client_id: (空白でEnter)
# → client_secret: (空白でEnter)
# → scope: 1 (full access)
# → ブラウザでOAuth認証

# 接続テスト
rclone lsd gdrive:

# WordPress バックアップフォルダを Google Drive に同期
rclone sync /var/backups/wordpress/ gdrive:WordPress-Backups/ \
    --include "*.enc" \
    --min-age 1h \
    --log-file /var/log/rclone-backup.log
#!/bin/bash
# /usr/local/bin/wp-backup-gdrive.sh
# WordPress をバックアップして Google Drive に送信

WP_PATH="/var/www/html"
LOCAL_BACKUP="/var/backups/wordpress"
GDRIVE_FOLDER="gdrive:WordPress-Backups/$(hostname)"
DATE=$(date +%Y%m%d_%H%M%S)
KEEP_DAYS=7

mkdir -p $LOCAL_BACKUP

# データベースバックアップ
wp --path=$WP_PATH db export "${LOCAL_BACKUP}/db-${DATE}.sql"

# ファイルバックアップ(wp-content のみ)
tar -czf "${LOCAL_BACKUP}/files-${DATE}.tar.gz" \
    -C $WP_PATH wp-content \
    --exclude="wp-content/cache" \
    --exclude="wp-content/uploads/backup*"

# Google Drive に同期
rclone copy "${LOCAL_BACKUP}/db-${DATE}.sql" \
    "${GDRIVE_FOLDER}/db/" --log-level INFO
rclone copy "${LOCAL_BACKUP}/files-${DATE}.tar.gz" \
    "${GDRIVE_FOLDER}/files/" --log-level INFO

# ローカルの古いバックアップを削除
find $LOCAL_BACKUP -name "*.sql" -mtime +${KEEP_DAYS} -delete
find $LOCAL_BACKUP -name "*.tar.gz" -mtime +${KEEP_DAYS} -delete

# Google Drive の古いバックアップを削除(30日以上前)
rclone delete "${GDRIVE_FOLDER}/db/" --min-age 30d
rclone delete "${GDRIVE_FOLDER}/files/" --min-age 30d

echo "バックアップ完了: ${DATE}" >> /var/log/wp-backup.log

ステップ4:cron でバックアップを自動実行する

# crontab に登録
crontab -e

# 毎日午前2時にバックアップ
0 2 * * * /usr/local/bin/wp-backup-gdrive.sh >> /var/log/wp-backup.log 2>&1

# 毎週日曜日に完全バックアップ(ファイル含む)
0 3 * * 0 /usr/local/bin/wp-full-backup-gdrive.sh >> /var/log/wp-backup.log 2>&1
// functions.php: バックアップ完了をWordPressから通知

add_action('updraftplus_backup_complete', function(array $backup_array): void {
    $admin_email = get_option('admin_email');
    $date = current_time('Y-m-d H:i:s');
    $files = implode(', ', array_keys($backup_array));

    wp_mail(
        $admin_email,
        '[WordPress] バックアップ完了 - Google Drive',
        "バックアップが正常に完了しました。\n\n"
        . "日時: {$date}\n"
        . "保存先: Google Drive\n"
        . "ファイル: {$files}\n\n"
        . "バックアップ管理: " . admin_url('admin.php?page=updraftplus')
    );
});

ステップ5:バックアップの世代管理を設定する

# Google Drive 上のバックアップ一覧を確認
rclone ls gdrive:WordPress-Backups/

# バックアップのサイズを確認
rclone size gdrive:WordPress-Backups/

# 特定ファイルを Google Drive からダウンロード(復元時)
rclone copy "gdrive:WordPress-Backups/db/db-20240101_020000.sql" \
    /tmp/restore/

# Google Drive のバックアップを世代管理(最新10世代を保持)
GDRIVE_FILES=$(rclone lsf "gdrive:WordPress-Backups/db/" | sort | head -n -10)
for file in $GDRIVE_FILES; do
    rclone delete "gdrive:WordPress-Backups/db/${file}"
done

注意事項

  • Google Driveの無料プランは15GBの容量制限があります。バックアップが肥大化しないよう、古い世代の自動削除設定を必ず行ってください
  • rcloneの設定ファイル(~/.config/rclone/rclone.conf)にはOAuthトークンが含まれます。このファイルのパーミッションをchmod 600に設定してください
  • UpdraftPlusの無料版はGoogle Driveへの直接バックアップをサポートしています。スケジュール設定の詳細はPremium版(有料)が必要です

まとめ

Google Driveへのバックアップは①wp plugin install updraftplusでプラグイン設定・Google認証、②Google Drive APIのOAuth認証設定、③rclone configでGoogleDriveを設定後シェルスクリプトでDBとファイルを毎日バックアップ・30日以上前の古いファイルを自動削除、④crontabで毎日午前2時に自動実行、⑤updraftplus_backup_completeフックでバックアップ完了メール通知します。

お気軽にご相談ください

お見積りへ お問い合わせへ