WordPressを更新する前にバックアップが必要な理由
WordPress をバージョンアップする前は、必ずバックアップを取っておくことが大切です。
アップデート後にプラグインやテーマとの相性で不具合が起きたり、最悪の場合はサイトが正常に表示されなくなったりすることもあります。
そのようなトラブルが起きた場合でも、事前に WordPress のファイル一式 と データベース をバックアップしておけば、元の状態に戻しやすくなります。
この記事では、ドキュメントルートが /var/www/wordpress の環境を前提に、WordPress を更新する前に実施しておきたいバックアップ手順をわかりやすく解説します。
あわせて、tar や mysqldump など、使用するコマンドのオプションの意味についても説明します。
全体的な作業の流れ
アップデート後に起こりやすいトラブル
WordPress のアップデート後は、テーマやプラグインとの相性によって不具合が起こることがあります。
例えば、サイトが真っ白になる、レイアウトが崩れる、管理画面にログインできなくなるといったトラブルが代表的です。
また、プラグインの一部機能が動かなくなったり、エラーメッセージが表示されたりする場合もあります。
こうした問題は突然発生することがあるため、更新前にバックアップを取っておくことが大切です。
ファイルだけでなくデータベースのバックアップも必要な理由
WordPress の記事本文や固定ページ、各種設定、ユーザー情報などの多くは、ファイルではなくデータベースに保存されています。
そのため、ファイルだけをバックアップしても、投稿内容やサイト設定までは元に戻せません。
万が一アップデート後に不具合が起きた場合、更新前の状態へ正しく戻すには、ファイルとデータベースの両方が必要です。
安全に復旧できるようにするためにも、バックアップはセットで取得しておくことが大切です。
更新前にバックアップを取っておくメリット
更新前にバックアップを取っておけば、万が一アップデート後に不具合が起きても、元の状態へ戻しやすくなります。
サイトが表示されなくなった場合でも、事前にファイルとデータベースを保存していれば、落ち着いて復旧作業を進められます。
また、更新作業に対する不安を減らせるため、セキュリティ更新や機能改善も実施しやすくなります。
WordPress を安全に運用していくためにも、更新前のバックアップは大きな安心材料になります。
WordPress 更新前にバックアップしておくべきもの
WordPress を更新する前に、最低限バックアップしておきたいものは次の 2 つです。
1.WordPress のファイル一式
これには以下が含まれます。
- WordPress 本体ファイル
- テーマ
- プラグイン
- アップロード済み画像
- wp-config.php などの設定ファイル
2.データベース
WordPress の投稿記事、固定ページ、設定情報、ユーザー情報などは、データベースに保存されています。
そのため、ファイルだけ保存しても完全なバックアップにはなりません。
必ずデータベースのバックアップも取得しましょう。
wp-config.phpを個別に控えておく理由
wp-config.php には、データベース接続情報や各種設定が記載されているため、WordPress を動かすうえでとても重要なファイルです。
通常はファイル一式のバックアップにも含まれますが、個別に保存しておくと、必要な設定をすぐ確認しやすくなります。
復旧時に接続先のデータベース名やユーザー名を確認したい場合にも、単独で控えておくと便利です。
万が一に備えて、重要な設定ファイルとして別途バックアップしておくと安心です。
キャッシュ系のファイルを除外したい場合
キャッシュ系のファイルは一時的に生成されるものが多く、通常は削除されても再作成できる場合がほとんどです。
そのため、バックアップ時に含めると容量が大きくなりやすく、保存や復元の効率も下がってしまいます。
特に更新用の一時ディレクトリや既存バックアップ保存先は、復旧に必須でないことが多いため、除外することでバックアップを軽くしやすくなります。
ただし、何でも除外してよいわけではないため、内容を確認しながら一時ファイルや明らかに不要な領域だけを対象にすることが大切です。
バックアップ保存用ディレクトリを作成する
さて、ここからは実際の作業に移って行きたいと思います。
まずは、バックアップ保存用のディレクトリを作成します。日付付きにしておくと、後で管理しやすくなります。
# ディレクトリの作成および権限変更
$ BACKUP_DIR=/root/backup/wordpress_$(date +%Y%m%d)
$ sudo mkdir -p "$BACKUP_DIR"
$ sudo chmod 700 /root/backup
$ sudo chmod 700 "$BACKUP_DIR"上記コマンドによって、バックアップファイルを保存する専用ディレクトリが作成されます。
- /root/backup はバックアップ保存用の親ディレクトリです。
- 700 にしておくことで、root だけがアクセスできる状態になります。
次のようにして、ディレクトリの権限を確認することができます。
バックアップには機密情報が含まれるので、所有者だけがアクセスできる状態にします。
# 権限の確認
$ sudo ls -ld /root/backup
drwx------ 3 root root 4096 Mar 14 21:02 /root/backup
$
$ sudo ls -ld "$BACKUP_DIR"
drwx------ 2 root root 4096 Mar 14 21:02 /root/backup/wordpress_20260314
$両ディレクトリとも700になっていますね。安心です。
このディレクトリに今回の作業で取得するバックアップファイル類を保存していきましょう。
日付付きディレクトリを作成する理由
日付付きディレクトリを作成しておくと、どの時点で取得したバックアップなのかを後から見分けやすくなります。
複数回バックアップを取る場合でも、保存先が整理しやすくなり、更新前の状態を管理しやすくなります。
また、復旧時に「どのバックアップへ戻すか」を判断しやすくなる点もメリットです。
バックアップファイルを混在させないためにも、日付ごとにディレクトリを分けて保存しておくと便利です。
wp-config.phpからデータベース接続情報を取得する
次に、WordPress の設定ファイル wp-config.php からデータベース接続情報を取得します。
# コマンド例
grep -E "DB_NAME|DB_USER|DB_PASSWORD|DB_HOST" /var/www/wordpress/wp-config.phpここで確認しておくのは次の 4 項目です。
- DB_NAME: データベース名
- DB_USER: データベース接続ユーザ
- DB_PASSWORD: データベース接続パスワード
- DB_HOST: データベースサーバ
この情報は後で mysqldump を使ってデータベースをバックアップするときに必要です。
実際に実行した結果がこちらです。
$ sudo grep -E "DB_NAME|DB_USER|DB_PASSWORD|DB_HOST" /var/www/wordpress/wp-config.php
[sudo] password for xxxxx:
define('DB_NAME', 'wordpress');
define('DB_USER', 'xxxxx');
define('DB_PASSWORD', 'xxxxx');
define('DB_HOST', '127.0.0.1');
$WordPress ファイル一式をバックアップする方法
次に、WordPress のファイルを tar でまとめて圧縮保存します。その前に、念のため現状のwordpressファイルの容量を確認しましょう。
現状のwordpressファイルの容量を確認
バックアップを取得する前に実際のwordpressの容量を確認したい場合は、次のコマンドで確認できます。
# 例)容量確認
$ sudo du -sh /var/www/wordpress/
x.3G /var/www/wordpress問題なければ、以下の通り作業を進めましょう。
コマンドの詳細
du -sh /var/www/wordpress/ の -sh は、du コマンドのオプションです。
まず du は、ディレクトリやファイルがどれくらい容量を使っているかを確認するコマンドです。
例えば -s を付けないと、配下のサブディレクトリごとの容量もずらっと表示されることがあります。
でも -s を付けると、指定したディレクトリ全体の合計だけを見ることができます。
オプションなしで実行すると、以下のようにずらっと表示され且つ、容量も一目ではわかりにくいです。
$ sudo du /var/www/wordpress
~中略~
56 /var/www/wordpress/wp-content/updraft/plugins-old/gutenberg/build/block-library/blocks
472 /var/www/wordpress/wp-content/updraft/plugins-old/gutenberg/build/block-library-s のみ付けた場合。指定したディレクトリ全体の合計だけを見ることができます。
$ sudo du -s /var/www/wordpress
5535364 /var/www/wordpress-h のみ付けた場合。人が読みやすいキロ、メガ、ギガの単位を表示してくれます。
$ sudo du -h /var/www/wordpress
~中略~
72K /var/www/wordpress/wp-content/updraft/plugins-old/smart-slider-3/library/media/plugins/widgetshadow/shadow/shadow
76K /var/www/wordpress/wp-content/updraft/plugins-old/smart-slider-3/library/media/plugins/widgetshadow/shadow
80K /var/www/wordpress/wp-content/updraft/plugins-old/smart-slider-3/library/media/plugins/widgetshadow
4.0K /var/www/wordpress/wp-content/updraft/plugins-old/smart-slider-3/library/media/plugins/generator-sh オプションを付けて実行すると、以下のようにわかりやく表示されます。
$ sudo du -sh /var/www/wordpress
x.3G /var/www/wordpress通常のバックアップ(キャッシュファイル類含む)
通常のバックアップコマンドは次の通りです。tarコマンドで/var/www/wordpressを圧縮保存します。
単純にwordpressディレクトリを丸々取得するので、容量は膨らみます。
# コマンド例
sudo tar czvf "$BACKUP_DIR/wordpress_files.tar.gz" /var/www/wordpress
sudo chmod 600 "$BACKUP_DIR/wordpress_files.tar.gz"コマンドの意味は、以下になります。
- tar : ファイルをまとめてアーカイブする
- c : 新しくアーカイブを作成する
- z : gzip 形式で圧縮する
- v : 処理中のファイル名を表示する
- f : 出力ファイル名を指定する
このコマンドで /var/www/wordpress 配下が 1 つの tar.gz ファイルとして保存されます。
バックアップには機密情報が含まれるので、権限を600に変更します。
キャッシュファイルなど不要なものを除外してバックアップする方法
バックアップ容量を抑えたい場合は、キャッシュ系ファイル等を除外して保存することもできます。
例えば次のようにして実行します。
# コマンド例
$ sudo tar czvf "$BACKUP_DIR/wordpress_files.tar.gz" \
--exclude='/var/www/wordpress/wp-content/upgrade' \
--exclude='/var/www/wordpress/wp-content/upgrade-temp-backup' \
--exclude='/var/www/wordpress/wp-content/updraft' \
/var/www/wordpress
$ sudo chmod 600 "$BACKUP_DIR/wordpress_files.tar.gz"今回このコマンドで除外しているものは、以下になります。
- /var/www/wordpress/wp-content/upgrade: 更新時の一時展開領域
- /var/www/wordpress/wp-content/upgrade-temp-backup: 更新時の一時バックアップ領域
- /var/www/wordpress/wp-content/updraft: UpdraftPlus の既存バックアップ保存先。ここを含めると、既存バックアップをさらにバックアップして容量が膨らみやすいです。
除外対象は、使っているプラグインによって異なります。
そのため、除外する前に一度 wp-content 配下を確認しておくのがおすすめです。
例えば、次のコマンドでwp-content配下を確認することができます。
$ sudo ls -l /var/www/wordpress/wp-content/
~中略~
drwxr-xr-x 4 apache apache 4096 Mar 7 20:08 themes
drwxr-xr-x 2 apache apache 4096 Jan 9 2020 themes-old
drwxr-xr-x 6 apache apache 49152 Mar 7 18:36 updraft
drwxr-xr-x 2 apache apache 4096 Mar 11 19:42 upgrade
rwxr-xr-x 3 apache apache 4096 Mar 11 00:53 upgrade-temp-backup
データベースをバックアップする方法
次に、WordPress のデータベースをバックアップします。
mysqldumpでデータベースを保存する手順
データベース名やユーザー名は、先ほど wp-config.php で確認したものを使います。
例として、以下のように実行します。
# コマンド例
mysqldump -h localhost -u データベースユーザ名 -p データベース名 | gzip > /tmp/wordpress_db.sql.gz例えば、データベースユーザが wpuser、データベース名が wordpress なら次のようになります。
$ mysqldump -h localhost -u wpuser -p wordpress | gzip > /tmp/wordpress_db.sql.gz
Enter password:実行するとDBパスワード入力が求められますので、入力しましょう。
その後、バックアップディレクトリへ移動して権限を設定します。
$ sudo mv /tmp/wordpress_db.sql.gz "$BACKUP_DIR/"
$ sudo chmod 600 "$BACKUP_DIR/wordpress_db.sql.gz"なぜ /tmp に出してから移動するのか
/root/backup/… に直接 > で書こうとすると、sudo とリダイレクトの関係で権限エラーになりやすいからです。
一旦、 /tmp に出力してから sudo mv する方が確実です。
また、今回の手順ではディレクトリを700、ファイルを600に権限設定しています。バックアップにはDBや設定情報が含まれるので、このくらいに絞っておく方が安全です。
wp-config.php を個別にコピーする
念のため、wp-config.phpを個別にバックアップします。
WordPress ファイル一式の中にも含まれていますが、設定ファイルは単独でも控えておくと安心です。
$ sudo cp /var/www/wordpress/wp-config.php "$BACKUP_DIR"
$ sudo chmod 600 "$BACKUP_DIR/wp-config.php"バックアップファイルが正しく取得できたことを確認する方法
最後に、バックアップファイルがきちんと作成されているかを確認します。
# コマンド例
ls -lh "$BACKUP_DIR"$ sudo ls -lh "$BACKUP_DIR"
total 1.5G
-rw------- 1 xxxxx xxxxx 9.3M Mar 15 07:54 wordpress_db.sql.gz
-rw------- 1 root root 1.5G Mar 15 07:35 wordpress_files.tar.gz
-rw------- 1 root root 4.7K Mar 15 08:03 wp-config.php
$次の3ファイルがあることを確認します。
- wordpress_db.sql.gz
- wordpress_files.tar.gz
- wp-config.php
バックアップ後に確認しておきたいこと
バックアップファイルが作成できたら、次の点も確認しておくと安心です。
ファイルサイズが極端に小さくないか
バックアップファイルが作成されていても、サイズが極端に小さい場合は正常に取得できていない可能性があります。
例えば、データベースのバックアップファイルが数KB程度しかない場合は、出力に失敗していたり、空に近い状態で保存されていたりすることがあります。
ファイルの有無だけで安心せず、容量もあわせて確認しておくことが大切です。
バックアップ後にサイズを確認する習慣をつけておくと、取得ミスに早く気づきやすくなります。
別の場所にも退避する
サーバ障害に備えるなら、ローカルPCや別ストレージにもコピーしておくとより安全です。
WordPress更新前のバックアップ手順まとめ
今までの流れをまとめたものがこちらになります。DB情報をご自分の環境に置き換えて使う形です。
また、除外するプラグインも適宜、ご自分の環境に合わせてください。
BACKUP_DIR=/root/backup/wordpress_$(date +%Y%m%d)
sudo mkdir -p "$BACKUP_DIR"
sudo chmod 700 /root/backup
sudo chmod 700 "$BACKUP_DIR"
grep -E "DB_NAME|DB_USER|DB_PASSWORD|DB_HOST" /var/www/wordpress/wp-config.php
sudo tar czvf "$BACKUP_DIR/wordpress_files.tar.gz" \
--exclude='/var/www/wordpress/wp-content/upgrade' \
--exclude='/var/www/wordpress/wp-content/upgrade-temp-backup' \
--exclude='/var/www/wordpress/wp-content/updraft' \
/var/www/wordpress
sudo chmod 600 "$BACKUP_DIR/wordpress_files.tar.gz"
mysqldump -h DB_HOST -u DB_USER -p DB_NAME | gzip > /tmp/wordpress_db.sql.gz
sudo mv /tmp/wordpress_db.sql.gz "$BACKUP_DIR/"
sudo chmod 600 "$BACKUP_DIR/wordpress_db.sql.gz"
sudo cp /var/www/wordpress/wp-config.php "$BACKUP_DIR/"
sudo chmod 600 "$BACKUP_DIR/wp-config.php"
sudo ls -lh "$BACKUP_DIR"
sudo du -sh "$BACKUP_DIR"※wpuser と wordpressは、ご自身の環境に合わせて読み替えてください。
置き換え例
もし wp-config.php の内容が、DB_HOST=localhost、DB_USER=wpuser、DB_NAME=wordpress の場合、mysqldumpの箇所はこのように書きます。
mysqldump -h localhost -u wpuser -p wordpress | gzip > /tmp/wordpress_db.sql.gzWordPress管理画面にてバージョンアップを実施
正常にバックアップが取得できたら、あとはWordPressを更新する時間帯などを考慮し、更新しましょう。
Google Analyticsで訪問者の状況を確認しながら行うと良いと思います。
更新は本体・テーマ・プラグインを一気にやりすぎない
WordPress 本体・テーマ・プラグインを一度にまとめて更新すると、どこが原因で不具合が起きたのか切り分けにくくなります。
もし更新後にエラーや表示崩れが発生しても、複数を同時に変更していると原因特定に時間がかかりやすくなります。
そのため、まずは本体を更新して動作確認し、その後にテーマやプラグインを順番に更新していく方が安全です。
更新作業を段階的に進めることで、トラブル時にも落ち着いて対応しやすくなります。
まとめ
WordPress を安全にアップデートするためには、更新前のバックアップが欠かせません。
特に重要なのは、WordPress のファイル一式 と データベース の両方を保存しておくことです。
定期的に発生するバージョンアップ作業ですので、プラグインを使うのも良いかもしれませんが、全体的な流れを把握することも大事かと思います。
今回の手順では、/var/www/wordpress 配下のファイルを tar で圧縮保存し、データベースを mysqldump で書き出す方法を紹介しました。
この2つを事前に取得しておけば、アップデート後に不具合が起きた場合でも、落ち着いて復旧作業を進めやすくなります。
WordPress の更新は便利ですが、トラブルが起きる可能性もあります。
そのため、アップデート前には毎回バックアップを取る習慣をつけておくと安心です。
ご参考になれば幸いです。