2026年11月11日
2026年11月11日
AWS S3をバックアップ先にする方法(s3cmd)
はじめに
この記事では、WordPressサイトのバックアップをAWS Simple Storage Service (S3)バケットに保存するために、s3cmdを使用する方法を紹介します。s3cmdは無料で利用でき、簡単に設定して使用できるため、中規模までのサーバー運用に適しています。
症状・背景
- WordPressサイトの定期的なバックアップが必要です。
- バックアップデータをクラウドストレージに保存することで、物理的障害やサーバーダウンなどのリスクから重要データを保護します。
- 便宜上、ローカルファイルシステムからS3バケットへの自動同期が必要です。
手順・設定方法
ステップ1: s3cmdのインストールと初期設定
# Ubuntu/Debian系
$ sudo apt-get install -y s3cmd
# CentOS/RHEL系
$ sudo yum install -y epel-release
$ sudo yum install -y s3cmd
# 初期設定ファイルを作成する
$ mkdir ~/.s3cfg
ステップ2: S3バケットへのアクセスキーとシークレットキーの設定
# .s3cfg ファイルにアクセスキーとシークレットキーを設定します。
[default]
access_key = YOUR_AWS_ACCESS_KEY_ID
secret_key = YOUR_AWS_SECRET_ACCESS_KEY
ステップ3: S3バケットの作成と初期化
# S3バケットを作成します(例:my-backup-bucket)
$ s3cmd mb s3://my-backup-bucket
# バケットにアクセスするためのパーミッションを設定します。
ステップ4: ファイル同期と定期的なバックアップ
# WordPressサイトのファイルをS3バケットに同期します(例:/var/www/html/myblog)
$ s3cmd sync /var/www/html/myblog s3://my-backup-bucket/
# または、特定のディレクトリのみを同期する場合
$ s3cmd sync /var/www/html/myblog/uploads s3://my-backup-bucket/uploads
# 一時的なエラーログを表示します。
--log-file=/tmp/s3cmd_log.txt --progress
ステップ5: シェルスクリプトで定期バックアップの自動化
#!/bin/bash
# WordPressサイトのバックアップディレクトリ
SOURCE_DIR="/var/www/html/myblog"
# S3バケットとバックアップファイル名
DEST_BUCKET="s3://my-backup-bucket/"
BACKUP_FILE=$(date +%Y%m%d%H%M%S)-backup.tar.gz
# バックアップディレクトリをtarで圧縮し、S3に同期します。
tar czf /tmp/$BACKUP_FILE $SOURCE_DIR
s3cmd put --guess-mime-type --progress /tmp/$BACKUP_FILE $DEST_BUCKET
# tarファイルの削除
rm -f /tmp/$BACKUP_FILE
# バックアップ完了通知メールを送信する(例)
echo "WordPress Backup Completed at $(date)" | mail -s "Backup Notification" admin@example.com
注意事項
- AWSアクセスキーとシークレットキーは慎重に管理し、不正なアクセスを防ぐためのセキュリティポリシーを確立してください。
- s3cmdを使用する際は常に最新バージョンを使用して脆弱性を回避します。
- バックアップデータの保存期間を考え、適切なライフサイクル管理を実施することをおすすめします。
まとめ
1. s3cmdインストール: AWS S3バックアップに必要なツールをインストールします。
2. 初期設定: アクセスキーとシークレットキーでS3との接続を確立します。
3. S3バケット作成: バックアップデータを保存するS3バケットを作成します。
4. ファイル同期: WordPressサイトの重要データを定期的にS3にバックアップします。
5. 自動化: シェルスクリプトでバックアッププロセスを自動化し、管理効率を向上させます。
関連記事: