【Xserver VPN】UpdraftPlus + WP Crontrol + rclone + cronでWordPressの自動バックアップ

Xserver VPS

バックアップの重要性

何をするにしても大事なバックアップ。まず最初にするのがバックアップの設定。

分かってはいるものの、初期設定を色々としていると、とりあえず動くことが確認出来た後も実際に使いながらちょこちょこと修正していくので、「ある程度設定が固まったところでバックアップ設定しよう」と思って、ついつい後回しになりがちなもの。その間にぶっ壊れたら運が悪いと思うしかないと言い聞かせて。。。まだ始めたばっかりだから復旧するのもそんな大変じゃないし、なんて思いながら。

ダメ。ゼッタイ。

分かっちゃいるんですが、やっちゃいました。。。

3つくらい記事書いたところで突然ぶっこわれました。アクセスしてもWordPressインストールページが表示されるだけ。以下の記事などを参考に色々試しましたが上手く行かず。

色々と検証していく中で、データベースに接続して中身を見ようとするとテーブルがほとんどぶっ壊れていました。これでは投稿内容の復元は不可能であろうと復旧を断念。再インストールして記事を書き直しました。次回こそは初期セットアップが終わったら記事を書く前にバックアップしようと固く心に誓いました。

バックアップの方針

以下の3段階でバックアップを実行することとします。

  1. ファイルとデータベースのバックアップする設定を行う。
    UpdraftPlusプラグインを用いてWordPressのバックアップを行います。但し、無料版ではバックアップ定期実行の時間指定ができないので、2.以降で補います。
  2. 次に、1.を定期実行する設定を行う。
    WP Crontrolプラグインで定期実行させます。
  3. バックアップファイルを定期的に別の場所にコピーする。
    バックアップファイルをWordPressが稼働しているサーバに置いていると、サーバそのものがぶっ壊れてしまった場合にバックアップファイルも失ってしまうので、別の場所に保管します。
    具体的には、個人的に契約しているOneDriveにrcloneで同期させる作業をcronで定期実行します。

UpdraftPlusプラグインの導入

UpdraftPlusはバックアップ・復元を簡単に実行させるためのプラグイン。

UpdraftPlus Home
UpdraftPlus is the World's leading WordPress backup, restore & migration plugin. Used on millions of WP sites, you can b...

一部機能は有料ですが、今回は無料の機能を使って定期バックアップを実現していきます。

WordPressの管理画面から、【プラグイン】→【新規追加】でUpdraftPlusをインストール。

その後、【設定】→【UpdraftPlus】に行き、【設定】タブを開く。

ファイルシステム、データベースのそれぞれについてバックアップの頻度と、保存するバックアップの個数を選択します。以下では毎日バックアップ、14日分を保存としました。【保存先を選択】以下はそのままでOKです。

UpdraftPlus - Setting Page

初回バックアップを行ってみます。

【バックアップ/復元】タブに移動して以下の作業を行います。

  1. 今すぐバックアップ
    クリックしてバックアップを実行します。
  2. 次回に予定されたバックアップ
    次回のバックアップが先ほど設定した頻度になっているか確認します。Dailyを選択していれば翌日の同時間に次回バックアップが予定されているはずです。
Updraft Plus - Backup Page

WP Crontrolの導入

UpdraftPlusでは有料版を導入しないとバックアップ実行の時間指定ができません。ですので、WP Crontrolを導入して実現します。

WP Crontrol
WP Crontrol enables you to take control of the cron events on your WordPress website.

WordPressの管理画面から、【プラグイン】→【新規追加】でWP Crontrolをインストール。

【ツール】→【Cronイベント】を選択して、以下のように表示される【updraft_backup】と【updraft_backup_database】を編集し実行時間を設定する。

WP Crontrol - Cron Event

【Cronイベントの編集】で次の実行を指定します。ここでは夜中の2:05に毎日実行するように設定します。日付と時間を指定すると次回そのタイミングで実行し、dailyを選択しているので、以降毎日同じ時間に実行されます。

WP Crontrol - Edit Crone Event

rcloneのインストール

rcloneは様々なクラウドストレージなどとファイル共有できるソフトウェアです。今回はMicrosoft OneDriveに接続します。サーバ側ではブラウザをインストールしていない事が多いでしょうから、サーバ側でブラウザでの認証ができない前提でローカルマシンも使って作業を進めていきます。ローカルマシンはLinux/Windowsどちらでも可能です(Macは持っていないので試していません)。

Rclone
Rclone syncs your files to cloud storage: Google Drive, S3, Swift, Dropbox, Google Cloud Storage, Azure, Box and many mo...

rcloneのインストール(サーバ)

私のサーバ環境はCentOSですので、yumを使ってインストールします。

以下のコマンドを実行します。

- Server -
# yum install rclone

rcloneのインストール(ローカル)

私のローカルマシンはChromebook上のDebianですので、aptを使ってインストールします。

以下のコマンドを実行します。

- Local -
$ sudo apt update
$ sudo apt install rclone

OneDriveアクセストークンの取得(ローカル)

サーバからWebブラウザ認証を使用せずにrcloneをセットアップする為に、ローカルマシンでrcloneを実行してアクセストークンを取得します。

以下のコマンドを実行します。

- Local -
$ rclone authorize "onedrive"

自動的にブラウザが起動し、以下のようにMicrosoft Sign inが表示されますので、サイン情報を入力します。

Microsoft Sign in
Microsoft Enter Password

サインインに成功すると以下のような表示がされますので、中カッコで囲まれた{…}の部分(トークン)をコピーしてどこかに保存しておきます。

rclone - OneDrive Get Token

rcloneの設定(サーバ)

サーバでrcloneをMicrosoft OneDriveに接続する設定を行います。

以下のコマンドを入力します。

- Server -
$ rclone config

以下の通り入力していきます。

新規接続を作成するので【n
No remotes found – make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n

接続の名前をつける
name> onedrive

Microsoft OneDriveなので【27】
Option Storage.
Type of storage to configure.
Enter a string value. Press Enter for the default (“”).
Choose a number from below, or type in your own value.
1 / 1Fichier
\ “fichier”
2 / Alias for an existing remote
\ “alias”

27 / Microsoft OneDrive
\ “onedrive”

45 / seafile
\ “seafile”
Storage> 27

空欄のままでOK
Option client_id.
OAuth Client Id.
Leave blank normally.
Enter a string value. Press Enter for the default (“”).
client_id>

空欄のままでOK
Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a string value. Press Enter for the default (“”).
client_secret>

地域を選択(おそらくこのページを見ている人の大半は1でしょう)
Option region.
Choose national cloud region for OneDrive.
Enter a string value. Press Enter for the default (“global”).
Choose a number from below, or type in your own value.
1 / Microsoft Cloud Global
\ “global”
2 / Microsoft Cloud for US Government
\ “us”
3 / Microsoft Cloud Germany
\ “de”
4 / Azure and Office 365 operated by 21Vianet in China
\ “cn”
region> 1

advanced configを編集しないので【n】
Edit advanced config?
y) Yes
n) No (default)
y/n> n

ブラウザが使えないので【n】
Use auto config?

  • Say Y if not sure
  • Say N if you are working on a remote or headless machine

y) Yes (default)
n) No
y/n> n

Option config_token.
For this to work, you will need rclone available on a machine that has
a web browser available.
For more help and alternate methods see: https://rclone.org/remote_setup/
Execute the following on the machine with the web browser (same rclone
version recommended):
rclone authorize “onedrive”
Then paste the result.
Enter a string value. Press Enter for the default (“”).
先ほど保存したトークンを貼り付ける
config_token> {“access_token” ….}
Option config_type.

OneDriveを使いたいだけなので【1】
Type of connection
Enter a string value. Press Enter for the default (“onedrive”).
Choose a number from below, or type in an existing value.
1 / OneDrive Personal or Business
\ “onedrive”

6 / Type in SiteID (advanced)
\ “siteid”
/ Sharepoint server-relative path (advanced)
7 | E.g. /teams/hr
\ “path”
config_type> 1
Drive OK?

【y】でOK
Found drive “root” of type “personal”
URL: https://onedrive.live.com/?cid=xxxxxxxxxxxxxxxxxxx

y) Yes (default)
n) No
y/n> y

設定した内容が表示されるので、問題なければ【y】
[onedrive]
type = onedrive
token = {“access_token”: ….}
drive_id = xxxxxxxxxxxxxxxxx
dtype_type = personal
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:

設定中の全ての接続が表示される
Name Type
==== ====
onedrive onedrive

【q】で終了
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

以上で接続設定は完了です。

Microsoft OneDriveへ接続(サーバ)

以下のコマンドを実行してOneDrive上のファイルが表示されればOKです。

- Server -
$ rclone ls onedrive:/

rcloneのコマンドは以下を参照ください。

Commands

サーバのバックアップをMicrosoft OneDriveに定期的に同期

UpdraftPlusで毎日2:05にバックアップを作成する事にしましたので、その後の時間(ここでは2:30)にバックアップファイルをMicrosoft OneDriveに同期することとします。定期実行にはcronを使用します。

以下のコマンドを実行します。

- Server -
$ su kusanagi
$ crontab -e

デフォルトのエディタ(おそらくvi)が開かれますので、以下を追記し、上書き保存します。

30 02 * * * rclone sync /・・・/DocumentRoot/wp-content/updraft/ onedrive:/保存先フォルダパス/

以下のコマンドでcronに登録されているかを確認します。

- Server -
$ crontab -l
30 02 * * * rclone sync /・・・/DocumentRoot/wp-content/updraft/ onedrive:/保存先フォルダパス/

以上でバックアップの設定は完了です。

コメント

タイトルとURLをコピーしました