(2023.06)レンタルサーバ変更に伴い、ドメイン変更致しました(旧URL:https://i-topics.net)。

【ラズパイ4】1日1回、WordPressを自動でバックアップ

この記事は約11分で読めます。

特別新鮮な情報でもないですが、私自身の不安が解消されたため備忘録の記事です。

バックアップに辿り着いた経緯

Raspberry Pi 4(ラズパイ4)へWordPressを設置するもなかなかしっくりできない日々が続いていました。3日でmicroSDを初期化して、新規OSインストールの繰り返し。

WordPresssデータを/var/wwwディレクトリ配下に置くと、システムに不具合が生じたときにWordPressデータも一緒に消去しなければなりません。

そこで、DocumentRootを外付けHDDに変更を試みて、Apache設定ファイルをがちゃがちゃいじると、OSが起動できなくなったり。

Raspberry-Pi-4-with-WesternDigital-HDD

1ヶ月以上試行錯誤の末、考えついたのが自動バックアップ。
検索してみると既に多くの記事があり、
「さすがラズパイ好きな先輩のみなさん、よく知っておられる」
と思った次第です。

初めは自動バックアップ設定が難しそうな印象があり躊躇していましたが、意外にあっさりと設定できました。
これでWordPressデータを消去しなければならない不安も無くなりました。

評価:はじめに結論

抜群の安心感を得られるようになりました。

自動バックアップを導入するまでは、

という不安感が常に付いて回り、WordPressデータをmicroSDに保存することに抵抗感がありました。
しかし、1日1回自動バックアップ出来るようになって、積極的にローカルWordPressを使えるようになれました。

バックアップ頻度をこれ以上高くすると、バックアップ先のmicroSDの寿命が短くなると思い、
1日1回の頻度にしました。

WordPressをインストール(SSL対応)

ラズパイにSSL対応WordPressをインストールする方法は、過去記事をご覧ください。

Raspberry Pi OS Lite(デスクトップ環境の無いOS)なら、16GBのmicroSDでも10GB以上の空き容量があります。

▼ざっくりと黄色マーカーが空き容量(Apache, mariaDB, PHP, WordPress, Sambaをインストール済)

pi@momo:~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        14G  2.1G   12G  16% /
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           778M  2.1M  776M   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
/dev/mmcblk0p1  255M   50M  206M  20% /boot
/dev/sdb1       3.7T  3.3T  412G  89% /media/Elements
tmpfs           389M     0  389M   0% /run/user/1000
pi@momo:~ $ 

「空き容量10GBは少ないのでは?」と不安に思われるかもしれませんが、当サイトはレンタルサーバ上で500MBにすら達していません。

動画を扱わないなら、WordPress領域として10GBは十分だと思います。
更に、小さい容量をバックアップする方が早く完了します。

私の環境では約2分でWordPress含めたラズパイOSバックアップが完了するので、
かなりお手軽で心強いです。

必要なもの

USB-Card-Reader-micro-SD-Card

rpi-clone: ラズパイOSまるごとバックアップ

ダウンロード&概要

「rpi-clone」というシェルスクリプトでラズパイOS&データをまるごと、USB端子に差された別のmicroSDにバックアップします。

インストール

上記ダウンロード先にてインストール方法が説明されています。
Terminalを使って以下のコマンドでインストールします。

$ git clone https://github.com/billw2/rpi-clone.git 
$ cd rpi-clone
$ sudo cp rpi-clone rpi-clone-setup /usr/local/sbin

私のラズパイにはgitがインストールされていなかったので、gitを先にインストールしました[1]出典:Git Guides – install git · GitHub, 2022-10-01閲覧。

sudo apt install git

rpi-cloneの使い方

USB-Card-Reader-attached-on-Raspi

<流れ>

  1. microSDのデバイス名を知る
  2. バックアップコマンドでテストしてみる
  3. 自動化する

microSDのデバイス名を知る

  • 使用するコマンド:lsblk

fstabにマウントポイントを書き込まないでください。rpi-cloneが自動的にマウントし、アンマウントします。fstabにmicroSDのマウントポイントを書き込んで、再起動後にOS起動出来なくなる経験をしました。

以下のコマンドでバックアップ先となるmicroSDのデバイス名を洗い出します。

$ lsblk
pi@momo:~ $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 28.8G 0 disk
├─sda1 8:1 1 256M 0 part
└─sda2 8:2 1 28.6G 0 part
sdb 8:16 0 3.6T 0 disk
└─sdb1 8:17 0 3.6T 0 part /media/Elements
mmcblk0 179:0 0 14.5G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 14.2G 0 part /
pi@momo:~ $

私は32GBのmicroSDをUSB端子に差しているので、上の黄色マーカーが該当します。
ですので、デバイス名sdaであることが分かりました。

※注意点
USB端子に接続されているデバイス構成が変わると、デバイス名が変わる可能性があります。
例:USB端子4個のうち違う端子に差して、sda→sdbに変更になる、など。

▼デバイス名の決まり方について、Debian公式サイトより引用。

最初に見つかったハードディスクは /dev/sda と名付けられる。
2 番目に見つかったハードディスクは /dev/sdb と名付けられ、以下も同様。

C.4. Linux におけるデバイス名 – Debian GNU/Linux インストールガイド 2022-10-01閲覧。

バックアップを自動化している場合、バックアップ先が別デバイスに変更される危険性があります。
4TBの外付けHDDに16GBが上書きされると大惨事になりますので、
ご注意ください。

バックアップコマンドでテストしてみる

次に、実際にバックアップするコマンドです。
※バックアップ先を間違わないように注意してください。

sudo rpi-clone sda

以下が実行結果です。

pi@momo:~ $ sudo rpi-clone sda

Booted disk: mmcblk0 15.5GB                Destination disk: sda 31.0GB
---------------------------------------------------------------------------
Part      Size    FS     Label           Part   Size    FS     Label  
1 /boot   256.0M  fat32  --              1      256.0M  fat32  --     
2 root     14.2G  ext4   rootfs          2       28.6G  ext4   --     
---------------------------------------------------------------------------
== SYNC mmcblk0 file systems to sda ==
/boot                 (49.5M used)   : SYNC to sda1 (256.0M size)
/                     (2.1G used)    : SYNC to sda2 (28.6G size)
---------------------------------------------------------------------------
Run setup script       : no.
Verbose mode           : no.
-----------------------:

Ok to proceed with the clone?  (yes/no): yes

Syncing file systems (can take a long time)
Syncing mounted partitions:
  Mounting /dev/sda2 on /mnt/clone
  => rsync // /mnt/clone with-root-excludes ...
  Mounting /dev/sda1 on /mnt/clone/boot
  => rsync /boot/ /mnt/clone/boot  ...

Editing /mnt/clone/boot/cmdline.txt PARTUUID to use f6521247
Editing /mnt/clone/etc/fstab PARTUUID to use f6521247
===============================
Done with clone to /dev/sda
   Start - 08:18:40    End - 08:19:52    Elapsed Time - 1:12

Cloned partitions are mounted on /mnt/clone for inspection or customizing. 

Hit Enter when ready to unmount the /dev/sda partitions ...
  unmounting /mnt/clone/boot
  unmounting /mnt/clone
===============================

pi@momo:~ $ 

先述のように、私のラズパイはデスクトップ環境の無いLite OSなので、容量の小さな16GBのmicroSDを使っています。
初回のバックアップは約20分掛かりましたが、rpi-cloneは差分をバックアップするため、それ以降は2分くらいの完了を継続しています。

1日1回、バックアップを自動化する

  • 使用するコマンド:crontab

指定時間に電源OFFで使ったcrontabコマンドを使います。

sudo crontab -e

(例)毎日20:00にバックアップする場合(書式:分 時 月内日 月 曜日 コマンド、*はfirst-lastの意[2]出典:crontab(5) — manpages-ja — Debian bullseye — Debian Manpages, 2022-10-01閲覧。

00 20 * * * sudo bash rpi-clone sda -q

行末の「-q」オプションで、yesなどの質問をスキップして、unmountまで自動的に進みます。

バックアップ作動ログを確認

  • 使用するコマンド:cat

以下のコマンドでrpi-clone作動ログを確認します。

cat /var/log/rpi-clone.log
pi@momo: $ cat /var/log/rpi-clone.log
2022-09-26 00:16  momo rpi-clone : clone to sdb (no label)
2022-09-26 01:02  momo rpi-clone : clone to sda (no label)
2022-09-26 01:14  momo rpi-clone : clone to sda (no label)
2022-09-26 07:06  momo rpi-clone : clone to sda (no label)
2022-09-26 20:09  momo rpi-clone : clone to sda (no label)
2022-09-27 20:01  momo rpi-clone : clone to sda (no label)
2022-09-28 20:01  momo rpi-clone : clone to sda (no label)
2022-09-29 20:01  momo rpi-clone : clone to sda (no label)
2022-09-30 20:02  momo rpi-clone : clone to sda (no label)
2022-10-01 08:19  momo rpi-clone : clone to sda (no label)
pi@momo: $ 

ローカルWordPressが自動バックアップ出来るようになると

  • Google Keepより動作が軽い環境で、積極的にメモを残せます。
  • Linux, Windows, iOSなどクロスプラットフォームでWordPressを気軽に使えます。
  • WordPressテーマの試験的な導入を試しやすくなります。
  • 日報としてWordPressを使いやすくなります。

多分、1年後に読み返せば、自身の心の動きが懐かしく思えるのではないでしょうか。

本記事のコンテンツは以上です。
お役に立てれば嬉しく思います。

以下の記事も一緒にどうぞ。

  1. ラズパイOS (bullsey) のインストール・セットアップ
  2. LXTerminal のコマンド一覧(最低限)
  3. nano の操作方法(保存)
  4. ラズパイOSセットアップ直後の設定
  5. ラズパイIPアドレスの固定など
  6. ufw(ファイアウォール)設定
  7. SSH接続でラズパイをリモート操作
  8. Sambaサーバを作ってiCloudを解除
  9. ローカルWordPress専用Webサーバ構築(SSL対応)
  10. Raspberry Pi OS Liteのインストール
  11. Raspberry Pi OS LiteでSambaを設定
  12. ラズパイサーバのWordPressを自動でバックアップ
  13. ラズパイSSDブート&起動しないときの対処方法
  14. MyDNSでドメインを無料取得する
  15. NGINXサーバでWordPressサイト(SSL化済)をWWWへ公開

脚注

コメント