WordPress のバックアッププラグイン「BackWPup」で自動バックアップをしていますが、自分で戻せるのか試してみました。BackWPup Pro では無いので手動です。
サービス側も自動バックアップしている
このブログは CohoHa WING を利用しているので、サーバー側で過去14日分の自動バックアップが取られています。
操作の間違いや失敗があって戻したい場合はそれを利用する方が簡単・確実です。
復元先に Docker を使用
お試しサーバーは Docker で立ち上げるのがお手軽です。
なので、公式のサンプル等を参考に以下の docker-compose.yml を用意しました。
また、docker-compose.yml を置いたディレクトリに「mysql」「html」ディレクトリは手動で作成しておきます。
version: '3'
services:
db:
image: mysql@sha256:bbeff35b63bf28aeb024de309aab2d501f8aa30e94664d3840d55b36c8db53c8
volumes:
- ./mysql:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- ./html:/var/www/html
ports:
- "80:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
mysql のイメージが latest で無いのは Apple silicon に対応してない為で、回避策として latest(お試し時の最新) のダイジェストを指定しています。
起動してしばらく待つと、http://localhost/ で WordPress の初期設定ページ(言語選択)が開けました。
初期状態が確認できたので、一旦Dockerコンテナーは停止してバックアップから復元してみます。
バックアップのダウンロード
バックアップ対象の WordPress のメニューから、BackWPup → バックアップ を選択して、バックアップしたファイルをダウンロードします。
自分は .tar.gz にしているのでダウンロード後に解凍します。できたファイルとディレクトリは以下でした。(一部のファイル名は伏せ字)
backwpup_readme.txt
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pluginlist.2021-05-03.txt
error
index.php
license.txt
manifest.json
xxxxxxxxxxxxxx.sql
readme.html
wp-activate.php
wp-admin
wp-blog-header.php
wp-comments-post.php
wp-config-sample.php
wp-config.php
wp-content
wp-cron.php
wp-includes
wp-links-opml.php
wp-load.php
wp-login.php
wp-mail.php
wp-settings.php
wp-signup.php
wp-trackback.php
xmlrpc.php
バックアップから復元
解凍してできた、
・ xxxxxxxxxxxxxx.sql は mysql ディレクトリにコピー
・その他のファイルは html ディレクトリに上書きコピー
但し、コピー先の wp-config.php は予め退避しておきます。後で内容のコピーに使います。
wp-config.php の修正
バックアップから戻した wp-config.php ファイルに、退避した wp-config.php の先頭から DB_COLLATE の定義がある範囲を上書きします。
<?php
/**
* The base configuration for WordPress
*
* The wp-config.php creation script uses this file during the
* installation. You don't have to use the web site, you can
* copy this file to "wp-config.php" and fill in the values.
*
* This file contains the following configurations:
*
* * MySQL settings
* * Secret keys
* * Database table prefix
* * ABSPATH
*
* @link https://codex.wordpress.org/Editing_wp-config.php
*
* @package WordPress
*/
// a helper function to lookup "env_FILE", "env", then fallback
if (!function_exists('getenv_docker')) {
// https://github.com/docker-library/wordpress/issues/588 (WP-CLI will load this file 2x)
function getenv_docker($env, $default) {
if ($fileEnv = getenv($env . '_FILE')) {
return rtrim(file_get_contents($fileEnv), "\r\n");
}
else if (($val = getenv($env)) !== false) {
return $val;
}
else {
return $default;
}
}
}
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', getenv_docker('WORDPRESS_DB_NAME', 'wordpress') );
/** MySQL database username */
define( 'DB_USER', getenv_docker('WORDPRESS_DB_USER', 'example username') );
/** MySQL database password */
define( 'DB_PASSWORD', getenv_docker('WORDPRESS_DB_PASSWORD', 'example password') );
/**
* Docker image fallback values above are sourced from the official WordPress installation wizard:
* https://github.com/WordPress/WordPress/blob/f9cc35ebad82753e9c86de322ea5c76a9001c7e2/wp-admin/setup-config.php#L216-L230
* (However, using "example username" and "example password" in your database is strongly discouraged. Please use strong, random credentials!)
*/
/** MySQL hostname */
define( 'DB_HOST', getenv_docker('WORDPRESS_DB_HOST', 'mysql') );
/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', getenv_docker('WORDPRESS_DB_CHARSET', 'utf8') );
/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', getenv_docker('WORDPRESS_DB_COLLATE', '') );
データベースの復元
xxxxxxxxxxxxxx.sql に URL が書かれている所があるので変更します。https://kuma-emon.com
を http://localhost
に置換しました。
Dockerコンテナーを起動し、mysqlのコンテナーに接続してファイルから復元します。
mysql -u wordpress -D wordpress -p < /var/lib/mysql/xxxxxxxxxxxxxx.sql
それなりに復元できたが
利用できないプラグインが(BackWPup)ありました。
デザインも初期値になったものがあり、管理画面から再設定が必要でした。
記事や画像は復元できたので、もしもの際に使えそうです。
コメント