ぼっちサーファーのブログ

一人海外サーフトリップの記録と雑記

WordPress最強バックアッププラグイン UpdraftPlus で自動/無料/外部バックアップ環境を構築

2018/6/6〜25までバリ島一人サーフトリップの記録

リアルタイム更新の記事はこちら

さくらのVPSに構築したKUSANAGI環境WordPressのバックアップの体制を整えた記録。


ちなみにKUSANAGI環境じゃなくてもVPSなら何処でもできるはず。
f:id:Apps:20181121191604p:plain




外部バックアップの重要性

ConoHa VPSのように自動バックアップが用意されていたとしてもサーバごとふっ飛ぶ可能性もあるので外部へのバックアップは必須です。

自動バックアップ|VPSならConoHa



本番環境+バックアップの全データを飛ばしたファーストサーバ。事故は簡単に起こる。
ascii.jp


信頼性が高いとされるさくらでもデータ消失事例がある。
voices.ku-neko.com


MixHostもやらかしたらしい。全部消えなかっただけマシな事例。
unatia.net



なお、どこのサーバ会社も保証はしてくれないですよ。

それがたとえ月100万円を生み出すサイトだったとしても。

「ごめんね♪」で終了です。


WordPressの定番バックアップ方法は4種類

定番は「Mondo Rescue」「All-in-One WP Migration」「BackWPup」「UpdraftPlus」4種類。

「Mondo Rescue」はサーバのイメージバックアップでその他はWordPressプラグインでファイルバックアップ。

それぞれの特徴は下記のようになる。



UpdraftPlus BackWPup All-in-One WP Migration Mondo Rescue
形式 WordPressプラグイン Linuxソフトウエア
バックアップ 簡単 難しい
リストア 簡単 少し難しい 簡単 難しい
スケジュール 詳細設定は有料 無料 有料 無料
外部バックアップ 一部有料 一部有料 有料 無料


完全無欠のバックアップ方法はなく得手不得手がある。

一番高機能な「Mondo Rescue」

f:id:Apps:20181112112637p:plain
サーバまるごとのイメージバックアップをとるので、サーバが飛んでも他のサーバでリカバリするだけで全環境が復元される。

ただリカバリでよくコケる。

実際に時間を掛けてアレコレとテストしたがリカバリできない。

「KUSNAGI for さくらのVPSでWordPress構築」→「Mondo Rescueでイメージバックアップ」→「全く同じVPSにリストア」という、リカバリ条件としては最もハードルの低いリカバリでコケた。

簡単にバックアップが取れることも大切だがバックアップで最も重要なのはリカバリ。

いくら簡単にバックアップが取れてもリカバリ出来ないのならバックアップの意味はない。

リカバリに少し手間はかかってもよいので別の方法でバックアップを取るようにする。

All-in-One WP Migration

下記記事でもWordPressの移行に使ったプラグイン。
www.lonely-surfer.com

非常に使い勝手は良いがスケジュールと外部バックアップが有料版となる。
リストア容量も512MBに制限される(容量制限はごにょごにょすれば回避できるけど)

無料で構築したいので今回はパス。


BackWPup

バックアップは簡単に取れるがリストアが面倒。
FTPを使ったりDBのインポートが手動となる。

WordPressプラグインなのでリストアもWordPress管理画面から行いたい。



UpdraftPlus

バックアップ・リカバリ ともにWordPressの管理画面から行えるので楽。

一部機能が有料となっている。

  • 詳細なバックアップ時刻設定
  • 外部バックアップ(WebDAV)

ざっくりしたバックアップ時刻設定やFTPを使った外部バックアップは無料でできる。


この制限をwp-cronとcronコマンドを使って回避する。


UpdraftPlus +cron+WebDAV+TeraCLOUD で外部自動バックアップ

  • UpdraftPlus:WordPressバックアップ用プラグイン
  • cron:Linuxのコマンド定時実行スケジュール管理のためのコマンド 。Windowsでいうタスクスケジューラ。
  • WebDAV:HTTPを使ったファイルのコピーや削除のためのプロトコル。自作DropBoxが作れる感じ。
  • TeraCLOUD:WebDAVが使えるクラウドストレージ。無料で10GBが使用できるうえ最大14世代までスナップショットを取ってくれる。


なおTeraCLOUDは下記のキャンペーンコードを利用すると無料枠が10GBから15GBに増加する。

キャンペーンコード:H4THR

teracloud.jp

キャンペーンコードは新規登録後にマイページから入力すると反映される。



UpdraftPlusのインストールと設定

WordPress管理画面からUpdraftPlusをインストール→有効化。

WordPress管理画面→設定→UpdraftPlus Backups→設定タブ

今回の例では週1バックアップ。履歴は2つまでとして設定を行う。

f:id:Apps:20181111102113j:plain

変更を保存。

手動バックアップ

設定タブに移動し手動でバックアップを作成してみる。
f:id:Apps:20181111102604j:plain

次回のバックアップが先程設定タブで指定したスケジューで設定されている。

時間は手動バックアップを実行した時間となっていることがわかる。
(詳細の時間設定は有料オプション$70)


バックアップはサーバの負荷が小さい深夜に行いたいが、1回だけとはいえ深夜に手動バックアップするのは大変。

DB内に保存された設定データを直接修正する。




WP Crontrolで日時設定

UpdraftPlusのバックアップスケジュールはWordPressの疑似cronであるwp-cronで制御されている。

wp-cronの設定を「WP Crontrol」プラグインを使って書き換える。
ja.wordpress.org


WP Crontrolをインストール→有効化

ツール→cronイベント
f:id:Apps:20181112111723p:plain



「updraft_backup」と「updraft_backup_database」を希望の日時に修正する。
f:id:Apps:20181112112204p:plain

ここでは1時間早めてみる。
f:id:Apps:20181112112219p:plain

3:04から2:04に変更できている。
f:id:Apps:20181112112322p:plain
f:id:Apps:20181112112307p:plain



WebDAVでレプリケーション

UpdraftPlusで取ったバックアップは/wp-content/updraft/backup*に保存されている。

同サーバ内では障害が起こった時にバックアップも消失する危険があるので外部にコピーする。

さくらのVPSとTeraCLOUDを接続する

さくらのVPSに新たに作成したディレクトリとTeraCLOUDをWebDAVで接続する。
この2つは自動は同期される。

【参考】
さくらのVPSに無料の外部自動バックアップ機能を追加する方法 - Qiita


TeraCLOUDのWebDAV接続URLを確認する

TeraCLOUDアカウントがないのであれば新規作成。
f:id:Apps:20181112114248j:plain

ログインしマイページに移動。
teracloud.jp


なおマイページでキャンペーンコードを入力すると無料枠が恒久的に5GB追加される。

キャンペーンコード:H4THR

「WebDAV接続URL」を控えておく。
f:id:Apps:20181112114626j:plain


さくらのVPSにdavfs2インストールする

「davfs2」はWebDAVサーバーをディスクドライブとしてマウントできるようにするLinuxファイルシステムドライバー。

yum -y install davfs2

同期設定

同期用ディレクトリ作成。今回はドライブ直下に作成する。

mkdir /backup

WebDAVサーバーをマウントする

mount -t davfs [WebDAV接続URL]/backup

認証が必要なのでTeraCLOUDのユーザー名とパスワードで入力する。
Username:[TeraCLOUDユーザ名]
Password:[TeraCLOUDパスワード]


これで/backupに保存したファイルはTeraCLOUDに同期される。

またTeraCLOUDでは最大14世代までスナップショットを保存してくれる。


cronで同期用フォルダに定期的に移動する

定期的に/wp-content/updraft/backupから/backupにファイルを移動する。

また/backupの古いファイルを削除する。

cron設定ファイルの作成

/etc/cron.daily/webdav_backup.sh

#!/bin/bash
#バックアップイメージを移動
mv -n [WordPressへのパス]/wp-content/updraft/backup* /backup

#古いバックアップイメージを削除(今回は15日前以前のファイルを削除)
find /backup -type f -mtime +15 -exec rm -f {} \;

cronの設定

crontab -e

f:id:Apps:20181112121459p:plain

毎朝5時3分にwebdav_backup.shを実行する。


まとめ

  • 週1回 深夜2時ごろにupdraftでバックアップ。
  • 毎朝5時3分に/backupに移動。
  • /backupからTeraCLOUDに自動同期

このようなバックアップが自動で実行されるようになった。

週1回のバックアップとしているが、実際は7サイト可動しているのでUpdraftPlusで日替わりにバックアップを取っている。
f:id:Apps:20181112122043j:plain

1サイトしか無いのならUpdraftPlusで毎日バックアップすればいいと思う。



【関連記事】
www.lonely-surfer.com
www.lonely-surfer.com