WordPressをBackWPupプラグインを使ってAWS S3に定期バックアップするには


WordPressもAWS S3にバックアップしておこう思ってシェルを書こうと、ぐぐってみたら、バックアップ関連のプラグインがたくさん見つかりました。
そこで、最も使われていそうな BackWPup をインストールして、S3へバックアップを保存するようにセットアップしてみました。

プラグインのインストールは、メニューの [プラグイン]/[新規追加] から キーワード BackWPup で検索して、インストールします。

インストール後、BackWPupメニューが追加されます。
バックアップの設定は Job という単位で管理できるので、まず Job 作成して設定していきます。

メニューの[BackWPup]/[Add New Job]を選択します。

BackWPup-setting

[General]タブの [Job Destination]の[Where should your backup file be stored?]で[Backup to an S3 Service]にチェックを入れると、[To: S3 Service]タブが表示されます。

[To: S3 Service]タブを開いて、AWSのアクセスキーやS3 Backetを設定します。

BackWPup-setting-s3

今回設定した項目を説明します。

S3 Service

Select a S3 service: 指定するBacketを含むリージョンを選択します。

S3 Access Keys

Access Key: AWSのアクセスキーを指定します。
Secret Key: AWSのシークレットキーを指定します。

S3 Bucket

Bucket selection: バックアップを保存するBucketを選択します。アクセスキーを入力すると、選択しているリージョン内に存在するBucketが自動で読み込まれます。

ひとまず、後はデフォルトで [Save changes] をクリック。

バックアップの実行は、メニュー[Jobs]を選択して作成したJobの[Run now]をクリックします。

BackWPup-runnow

S3にバックアップが保存されました。

BackWPup-runnow-s3

最後に定期実行を設定します。

[Start job]で、[with WordPress Cron]を選択して[Save changes]します。
今回は他はデフォルトの日時で実行時間AM3時を選択しました。
BackWPup-schedule

バックアップの確認

手動実行したファイルとは別に 自動実行されたバックアップファイルが追加されています。
BackWPup-wpcron-s3

リストア手順

最後にバックアップの復元手順も確認しておきます。
バックアップの復元は、wordpressが置かれているディレクトリに解凍します。
データベースは、解凍ディレクトリ直下にある <データベース名>.sql を復元対象のデータベースに対して実行します。
sqlは復元後不要なので消しておきます。
[bash]
$ sudo tar xvfz backwpup_9bfb6f_2014-01-11_03-26-46.tar.gz -C /var/www/wordpress
$ cd /var/www/wordpress
$ mysql -uroot wordpress < wordpress.sql
$ rm wordpress.sql
[/bash]

サーバー移行先で権限変更が必要な場合は、展開したファイルに再度権限を付与します。
[bash]
$ sudo chown -R www-data.www-data wordpress/
[/bash]


トラブルシューティング

1. [Job Destination] で、以下のメッセージが表示されている

 Backup to an S3 Service
Missing function "curl_exec".

php-curlを入れてapacheを再起動します。
[bash]
$ sudo apt-get install php-curl
$ sudo service apache2 restart
[/bash]

2. [run now] をクリック後に以下のエラーが発生
BackWPUp-Error
php-xml が必要です。(参照:php: XMLWriter.php がない)
php-xmlをインストールして、Apacheを再起動。
[bash]
# yum install php-xml
# service httpd restart
[/bash]