X(旧Twitter)の埋め込みが表示されない場合は、再読み込みすると表示される場合があります

BackWPupと自宅FTPサーバでWordPressをバックアップする方法

AWSを使ってるけどバックアップしようと思います。

よくあるバックアップをとろう!的な記事では、せっかく頑張って作った記事が消失するかもしれないからやっておこうね、と言うのが多いと思います。

記事データ自体が消えることはほぼ無いです。まぁ、某ゲームがやらかしたから不安に思われる方もいると思いますが。

どちらかと言うとWordPress自体に何か新しい事をしようとした場合にバックアップが必要です。

自分でPHPやDBを変更する時はもちろん、本当はプラグイン入れる前も念の為にバックアップしておいた方が良いですよ。

と言うわけで自動でバックアップが取れるようにしましょう。

使用するのはBackWPupとQNAP NAS(FTPサーバ)

今回使用するプラグインは「BackWPup」です。

検索するとなかなか素直に動いてくれないプラグインのようです。

このプラグインが優れている点は、データの保存先が

  • WordPressが入っているサーバ
  • Eメールで任意のアドレス
  • FTPサーバ
  • Dropbox、S3 Service、Azure、Cloud Files、SugarSyncといったクラウドサービス

のように色々選べると言った特徴があります。

まぁ、「UpdraftPlus」だと上記に加えてGoogleドライブに保存できたりするので自分に合ったものをチョイスすると良いでしょう。

私がこれを選んだ理由は特に無いです。強いて言えば検索したら最初に出てきたくらいです。

最初に出てくるだけあって資料は豊富です。

そして保存先には家にあるQNAP NASを使用します。NASをFTPサーバにするわけですね。

FTPサーバにもなる。そう、QNAPならね。(最近は他社のNASも多機能になりましたね・・・)

手順

  1. NASがFTPサーバになるように設定する
  2. BackWPupをインストールして使えるように設定する

1.NASをFTPサーバにする

ちなみに固定IPではない場合、DDNSでドメインを動的IPに紐付ける必要があります。

また、ポートを開放する必要があります。(規定:21)。その方法はこちら。

更に下準備が必要です。

NASにアクセスするアカウントadmin(全ての権限を持っている)をそのまま使うのも怖いので、バックアップ用のアカウントを作成します。

万が一WordPressからID/PWが漏れた場合に被害を最小限にする為です。

まずはバックアップするフォルダのみ読み書きできるアカウントを作ります。

NASにアクセスし、「コントロール・パネル」→「権限設定」→「ユーザグループ」で「作成」をクリックします。

ユーザグループ名を入力し、共有フォルダの権限をバックアップフォルダのみ読み取り/書き込みできるようにします。

スクリーンショット_2016-03-16_23_44_34.png

続いては「コントロール・パネル」→「権限設定」→「ユーザ」の「作成」をクリックします。

ユーザ名とパスワードは後にプラグインの設定で使用します。

ユーザグループはさっき作ったグループにし、共有されたフォルダ権限はバックアップ用フォルダのみ読み書きできるようにします。

MultimediaとPublicは基本的にアクセスできるようになっているので、忘れずにアクセス拒否にしておきましょう。

アプリケーション特権はFTPサービスのみにします。

スクリーンショット_2016-03-16_23_46_01.png
ようやくFTPの設定です。
「コントロール・パネル」→「ネットワークサービス」→「FTP」を開き、「FTPサービスを有効にする」にチェックを入れます。
基本的には初期設定でよいです。詳細設定も特に変更しません。
スクリーンショット_2016-03-16_23_46_18.pngスクリーンショット_2016-03-16_23_46_26.png
これでNASの準備は終わりです。
実際に接続できるかテストします。
テザリング等、NASが繋がっているネットワーク以外から接続してください。
ftp://(DDNSで設定したアドレス)
とブラウザに入力するとIDとPWを聞かれますので今設定したものを入力してください。
バックアップ用のフォルダのみ表示されればOKです。
 

2.BackWPupを設定する

自分のWordPressにログインし、プラグインをインストールします。(割愛)

有効化するとサイドバーに「BackWPup」が表示されますのでまず「Settings」を開きます。

「Folder sizes」のチェックを入れておきます。あとで使います。

スクリーンショット_2016-03-17_00_33_16.png

「Add new job」をクリックします。

「General」タブから設定していきます。

スクリーンショット_2016-03-17_00_31_43.png スクリーンショット_2016-03-17_00_31_48.png
重要なのは「Where should your backup file be stored?」で「Backup to FTP」にチェックを入れます。
続いて「Schedule」タブです。
スクリーンショット_2016-03-17_00_32_02.png
「with WordPress cron」にチェックを入れると下の項目が表示されます。
バックアップしたい間隔を任意で決めます。あまりアクセスがない時間帯が良さそうです。
続いて「DB Backup」タブです。
特に変更しません。
スクリーンショット_2016-03-17_00_32_09.png
続いて「Files」です。
基本的にはそのままでいいですが、あまり大きいサイズになるとうまくバックアップできないようです。
Excludeの下の項目をチェックするとそのフォルダはバックアップしない設定にできます。
「Settings」で設定しておけば容量が表示されるので、あまり大きいサイズのフォルダは除外しておきましょう。
スクリーンショット_2016-03-17_00_33_51.png
スクリーンショット_2016-03-17_00_34_00.pngスクリーンショット_2016-03-17_00_34_08.png
最後に「To:FTP」タブです。
スクリーンショット_2016-03-17_00_34_31.png
FTPサーバ:取得したアドレス
Username:NASで作ったアカウント名
Password:上記のパスワード
Folder to store files in:保存先のフォルダ
File Deletion:保存しておく世代数。10なら10回分残す。次は古いのから消えていく。
Timeout for FTP connection:「おまじない」的に30秒にしておく
FTP Passive Mode:パッシブモードにするかどうか。チェックしておく。
 
以上で設定は完了です。忘れずに設定の保存をしてください。
なおスケジュール外にも手動で実行できるので、「Run now」でテストしてみましょう。
下記の様な画面になれば成功です。
スクリーンショット_2016-03-17_01_20_03.png
NASの中身を見てみると、ちゃんとファイルが存在していました。
スクリーンショット_2016-03-17_01_20_10.png
初めての場合は解凍もしてみましょう。
 

BackWPupの設定で大変だったこと

  • FTP接続されない

これはNAS側の設定でした。ちゃんとブラウザでftp://~って入れてID/PW入れて表示されれば問題ないです。

  • 何%か進むんだけど途中でまた1%からになる
  • タイムアウトする
  • 処理が終わらない

これらはバックアップする容量が多いと発生するっぽい。っぽいというのは厳密には解明されてないからです。

自分の場合は500MBでもうダメでした。

NASとの接続が切れるのかなと思いましたが、Dropboxで試してもダメだったのでどこかの仕様なんでしょう。

その為、画像フォルダ(2015)は直接ダウンロードしてそれをバックアップとし、定期バックアップから外しました。

根本的な解決ではありませんが、とにかく動くことが重要なのでよしとします。

まとめ

これでバックアップファイルが自動で自宅のNASに保存されます。

うっかりサーバいじって壊したり、PHPいじって壊しても大丈夫です。

使われないことが一番なんですがね。

うちのWordPressはAWSに網元を使って環境を作ったのですが、そこにもう一つWordPressを入れたいので、慌ててバックアップ取れるようにしました。

お疲れ様でした。

【2016/3/17追記】

ふとAWSの請求情報のページを見たところ、請求額が跳ね上がってました・・・。

通常3〜4$程度だったのですが今月は30$程度になりそうです。

特にバズったわけでもないので、BackWPupのテストでひたすら通信してたのが原因かと。

ローカルで試して本番環境で少しだけテストする、ということが今回はできなかったので仕方ない。

500MBのデータをNASに送る→ある程度送信されるとなぜか1%からやり直す

のループを数時間やらせてみたのがモロに影響しているのかな。(結局何時間やっても終わらなかった)

AWSをお使いの皆様はお気をつけください。

【2016/8/4追記】

単純にAWS無料期間が終了し、普通に請求されただけでした。

まぁでも500MBのデータ通信はこけると面倒だし小さくするにこしたことはないね。