MENU
オンライン講座開催中

AWS S3でWordPressを毎日自動バックアップする方法|EC2 + cronで設定

AWS S3でWordPressを自動バックアップする方法

EC2で運用しているWordPressのファイルとデータベースを、S3に毎日自動バックアップする手順を紹介します。

目次

S3とは?

S3(Simple Storage Service)はAWSが提供するクラウドストレージです。USBメモリやDropboxのようなものですが、99.999999999%(イレブンナイン)の耐久性を誇る非常に信頼性の高いサービスです。

EC2はサーバーなので突然壊れることがあります。WordPressのファイルとデータベースをS3に定期的にバックアップしておけば、万が一EC2が壊れても復元できます。

小学生でもわかるように簡単に身近なものに例えて説明

S3でバックアップを取るとは?

S3 = クラウドの保管箱

S3はAWSが提供するファイルの保管場所です。USBメモリやDropboxのようなものですが、絶対に壊れないと思ってもらえれば。

EC2はパソコンと同じで、突然壊れることがあります。WordPressのファイルやデータベースをS3に定期的にコピーしておけば、EC2が壊れても「保管箱から取り出して復元」できます。

家で例えると「大事な書類のコピーを銀行の貸金庫に預けておく」イメージです。

全体の流れ

  1. S3バケット(保管箱)を作る
  2. EC2にS3へアクセスする権限を付ける(IAMロール)
  3. バックアップスクリプトを作る
  4. 毎日自動実行する設定をする(cron)

STEP 1|S3バケットを作成する

AWSコンソール → S3 →「バケットを作成」をクリックします。

以下のように設定します。

項目設定値
バケット名好きな名前(例:mysite-backup)
リージョンアジアパシフィック(東京)

それ以外はデフォルトのまま「バケットを作成」をクリックします。


STEP 2|IAMロールを作成する

EC2からS3にアクセスするための権限を設定します。

AWSコンソール → IAM → 左メニュー「ロール」→「ロールを作成」をクリックします。

以下のように設定します。

① 信頼されたエンティティの設定

項目設定値
信頼されたエンティティタイプAWSのサービス
ユースケースEC2

「次へ」をクリックします。

② 権限の設定

検索ボックスに「S3」と入力 →「AmazonS3FullAccess」にチェックを入れて「次へ」をクリックします。

③ ロール名の設定

項目設定値
ロール名EC2-S3-Backup-Role

「ロールを作成」をクリックします。


STEP 3|EC2インスタンスにIAMロールを紐付ける

AWSコンソール → EC2 → インスタンス → 対象のインスタンスにチェックを入れます。

「アクション」→「セキュリティ」→「IAMロールを変更する」をクリックします。

「IAMロール」の欄で「EC2-S3-Backup-Role」を選択 →「IAMロールの更新」をクリックします。


STEP 4|バックアップスクリプトを作成する

SSHでEC2に接続してから以下を実行します。

bash

ssh -i "~/Documents/キーペア名.pem" ec2-user@(IPアドレス)

接続できたら以下をまとめてコピペしてください。

bash

sudo mkdir -p /usr/local/bin
sudo tee /usr/local/bin/wp-backup.sh << 'EOF'
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BUCKET="バケット名"
BACKUP_DIR="/tmp/wp-backup-$DATE"

mkdir -p $BACKUP_DIR

# WordPressファイルのバックアップ
tar -czf $BACKUP_DIR/wordpress-$DATE.tar.gz /var/www/html/wordpress

# データベースのバックアップ
mysqldump -u DBユーザー名 -pDBパスワード wordpress > $BACKUP_DIR/database-$DATE.sql

# S3にアップロード
aws s3 cp $BACKUP_DIR/ s3://$BUCKET/$DATE/ --recursive

# 一時ファイルを削除
rm -rf $BACKUP_DIR

echo "バックアップ完了: $DATE"
EOF
sudo chmod +x /usr/local/bin/wp-backup.sh

バケット名 DBユーザー名 DBパスワード は自分の環境に合わせて書き換えてください。


STEP 5|手動でテスト実行する

bash

sudo /usr/local/bin/wp-backup.sh

以下のように表示されれば成功です。

バックアップ完了: 20260525_110233

AWSコンソール → S3 → バケットの中を確認して以下の2ファイルが保存されていればOKです。

  • wordpress-日付.tar.gz → WordPressファイル一式
  • database-日付.sql → データベース

STEP 6|自動バックアップを設定する

まずcronをインストールします。

bash

sudo dnf install -y cronie
sudo systemctl start crond
sudo systemctl enable crond

次にcrontabを編集します。

bash

sudo crontab -e

vimが開くので i キーを押して入力モードにしてから以下を入力します。

0 2 * * * /usr/local/bin/wp-backup.sh

入力したら Esc:wq → Enterで保存します。

これで毎日夜中の2時に自動でS3にバックアップが保存されます。

S3のバケットを定期的に確認して、バックアップファイルが増えていることを確認しましょう。


バックアップの読み方

項目説明
wordpress-日付.tar.gzWordPressのファイル一式。テーマ・プラグイン・画像などが含まれる
database-日付.sqlデータベース。記事・設定・ユーザー情報などが含まれる

この2つがあれば、EC2が壊れても別のサーバーにWordPressを復元できます。


これでS3自動バックアップの設定は完了です!

次はCloudFrontでサイトを高速化する方法を紹介します。

  • URLをコピーしました!
目次