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が壊れても「保管箱から取り出して復元」できます。
家で例えると「大事な書類のコピーを銀行の貸金庫に預けておく」イメージです。
全体の流れ
- S3バケット(保管箱)を作る
- EC2にS3へアクセスする権限を付ける(IAMロール)
- バックアップスクリプトを作る
- 毎日自動実行する設定をする(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
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にバックアップが保存されます。
バックアップの読み方
| 項目 | 説明 |
|---|---|
wordpress-日付.tar.gz | WordPressのファイル一式。テーマ・プラグイン・画像などが含まれる |
database-日付.sql | データベース。記事・設定・ユーザー情報などが含まれる |
この2つがあれば、EC2が壊れても別のサーバーにWordPressを復元できます。
これでS3自動バックアップの設定は完了です!
次はCloudFrontでサイトを高速化する方法を紹介します。

