ローカルからテスト環境へ。テスト環境から本番環境へ。
度々発生するWordPressのデータ移行(Migration)
2025年6月:「All-in-One WP Migration Unlimited Extension」の利用規約変更があり、WordPressを扱う制作者界隈に激震が走りましたね。 AIによる概要
代替として、ここ数ヶ月で利用者が急増した「WPvivid Backup Plugin」
https://ja.wordpress.org/plugins/wpvivid-backuprestore/

最初はUIがとっつきにくい感じもしましたが、しばらく使ってみて
- 無料版で充分すぎる機能 (容量による制限なし)
- 環境・用途に合わせた詳細な設定が可能
- エクスポートファイルがzipであり、中身が容易に確認できる・個別に触れる
─── デラいい感じ 🙂
当記事では、
などについてメモしておきます。
比べてわかる、長所と短所
All-in-One であるがゆえに
All-in-One WP Migration は 「UI が洗練されていて操作が非常に簡単だった」のが最大の長所であり、だからこそ多くの人に支持されていたのではと思います。
出力されるファイルはまさに All-in-One で、メディアもテーマもDBも、全て1つの .wpress にまとまっており … ドラッグ&ドロップで扱いが簡単!
しかしながら、All-in-One WP Migration だけを使っていた(に依存していた)少し前には気付けなかったことですが … WPvivid Backup Plugin と比較してみて、All-in-One であるがゆえの問題点もあることに気付かされました。
.wpress ファイルの中には、メディアもテーマもDBもプラグインも入っていますが、それぞれは実質的に不可分となっています。
テキストエディタで開いてみると(エディタ上でnullとなるような)不明な文字も多数挿入されており、
- メディアファイル → 概ね判読不可(但し、svgファイルは平文で読める)
- テーマ、プラグイン等のphpファイル → 平文で読めるものの、個々を切り離して取り出して再構成することは難儀、非現実的
- sql → 平文で読めるものの、そのままでは使えない(テーブル名が置換されている:関連後述)
という具合。
復元もプラグイン動作に完全に依存せざるを得ないという点は(今となっては)やや難、とも言えるかなと思われます。過去に取ってあったバックアップデータが、何らかの理由(2025年6月にあったような利用規約変更等)で復元できなくなるということもあるわけで …
中長期的な視点に立つと、ある時点で取ったバックアップファイルについて「最悪の場合、そのプラグインを使わなくても復元できるような」データ形式である方が安全性・有用性が高いといえます。
WPvivid : バックアップデータの可読性・普遍性
その点、WPvivid Backup Plugin では、丸っとバックアップファイルを書き出す → zip in zip という感じで、その中身はメディア・テーマ・プラグイン・DBなど、整然と区分されてzipで書き出され、フォルダ階層構造・ファイル形式とも、そのまま保持されるという設計になっています。

一括で書き出したzipの中身。DB、テーマ、プラグイン … のように、種別ごとのzipが並びます。なお jsonファイルにはバックアップの概要が書き込まれています。
_backup_db.zip を解凍すると、中身はズバリ .sql ファイル。

_backup_themes.zip や _backup_plugin.zip の中身を見てみると、フォルダ・ファイル構成含め、そのまま・ごく普通にバックアップされていることがわかります。

WordPressの管理画面から(=phpMyAdminを使わなくても) .sql を書き出せる。メディア・テーマ・プラグインなども保存できる。手軽であるとともに、「いざという時にはプラグインを介さずともDBやファイルを手動で個別に復元できる」という観点から、とても良いと思いました。
そしてもちろん、プラグインを介せば、復元のみならず Migration も簡単に行えるようになっています。かゆいところにくまなく手が届いている感じです。
設計思想の違い
WPvivid Backup Plugin と All-in-One WP Migration とでは(目的や動作結果は似ていても)設計思想がだいぶ違うんだなぁと感じました。
WPvivid Backup Plugin は、書き出されたデータの可読性・普遍性が高い = いざという時にはプラグインを介さずともDBやファイルを手動で個別に復元できる、保険としての有用性・安心感の面で優れているように思います。
設定の項目(サーバー負荷を考慮した詳細設定ができるようになっている点)や、無料版で提供される機能・有料版で解放される機能などからも、考え方の違いを感じ取れます。
- WPvivid Backup Plugin 有料版
https://wpvivid.com/pricing/backup-migration - All-in-One WP Migration 有料版
https://ja.servmask.com/products
何ごとも、比べてみないとわからないものだなぁ … と改めて思った次第です。
SQL部分を比較
以下、WPvivid Backup Plugin から書き出された .sql と、All-in-One WP Migration から書き出された .wpress ファイル内のSQL部分(の一部)を示します。
当ブログのテーブル wp_terms = 投稿カテゴリー、タグなどにかかる部分です。
WPvivid Backup Plugin (.sql)
--
-- Table structure for table `wp_terms`
--
DROP TABLE IF EXISTS `wp_terms`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `wp_terms` (
`term_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(200) CHARACTER SET utf8 NOT NULL DEFAULT '',
`slug` varchar(200) CHARACTER SET utf8 NOT NULL DEFAULT '',
`term_group` bigint(10) NOT NULL DEFAULT 0,
`term_order` int(4) DEFAULT 0,
PRIMARY KEY (`term_id`),
KEY `slug` (`slug`(191)),
KEY `name` (`name`(191))
) ENGINE=InnoDB AUTO_INCREMENT=119 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `wp_terms`
--
LOCK TABLES `wp_terms` WRITE;
/*!40000 ALTER TABLE `wp_terms` DISABLE KEYS */;
INSERT INTO `wp_terms` VALUES (1,'雑記','misc',0,7);
INSERT INTO `wp_terms` VALUES (2,'トピックス','topics',0,5);
INSERT INTO `wp_terms` VALUES (3,'コツ','tips',0,3);
INSERT INTO `wp_terms` VALUES (6,'デザイン','design',0,4);
INSERT INTO `wp_terms` VALUES (14,'費用・価格','%e8%b2%bb%e7%94%a8%e3%83%bb%e4%be%a1%e6%a0%bc',0,0);
INSERT INTO `wp_terms` VALUES (21,'動線・導線','%e5%8b%95%e7%b7%9a%e3%83%bb%e5%b0%8e%e7%b7%9a',0,0);
INSERT INTO `wp_terms` VALUES (22,'レスポンシブデザイン','%e3%83%ac%e3%82%b9%e3%83%9d%e3%83%b3%e3%82%b7%e3%83%96%e3%83%87%e3%82%b6%e3%82%a4%e3%83%b3',0,0);
いざという時には、プラグインを介さずともこのままSQLをインポートできそうです。コメントが入っているのも、見る人の目と脳に優しいですね。
All-in-One WP Migration (.wpress)
DROP TABLE IF EXISTS `SERVMASK_PREFIX_terms`;
CREATE TABLE `SERVMASK_PREFIX_terms` (
`term_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(200) NOT NULL DEFAULT '',
`slug` varchar(200) NOT NULL DEFAULT '',
`term_group` bigint(10) NOT NULL DEFAULT 0,
`term_order` int(4) DEFAULT 0,
PRIMARY KEY (`term_id`),
KEY `slug` (`slug`(191)),
KEY `name` (`name`(191))
) ENGINE=InnoDB AUTO_INCREMENT=112 DEFAULT CHARSET=utf8;
START TRANSACTION;
INSERT INTO `SERVMASK_PREFIX_terms` VALUES (1,'雑記','misc',0,7);
INSERT INTO `SERVMASK_PREFIX_terms` VALUES (2,'トピックス','topics',0,4);
INSERT INTO `SERVMASK_PREFIX_terms` VALUES (3,'コツ','tips',0,2);
INSERT INTO `SERVMASK_PREFIX_terms` VALUES (6,'デザイン','design',0,3);
INSERT INTO `SERVMASK_PREFIX_terms` VALUES (14,'費用・価格','%e8%b2%bb%e7%94%a8%e3%83%bb%e4%be%a1%e6%a0%bc',0,0);
INSERT INTO `SERVMASK_PREFIX_terms` VALUES (15,'ギター','%e3%82%ae%e3%82%bf%e3%83%bc',0,0);
INSERT INTO `SERVMASK_PREFIX_terms` VALUES (21,'動線・導線','%e5%8b%95%e7%b7%9a%e3%83%bb%e5%b0%8e%e7%b7%9a',0,0);
INSERT INTO `SERVMASK_PREFIX_terms` VALUES (22,'レスポンシブデザイン','%e3%83%ac%e3%82%b9%e3%83%9d%e3%83%b3%e3%82%b7%e3%83%96%e3%83%87%e3%82%b6%e3%82%a4%e3%83%b3',0,0);
テーブル名は SERVMASK_PREFIX_terms となっています。インポートの際に、プラグイン側の動作によって SERVMASK_PREFIX_ が置換される形であることが読み取れます。
最低限やっておくべき設定変更
─── WPvivid礼賛が続きましたが、若干面倒な部分もあります。
プラグインインストール直後、デフォルト設定では少々イマイチな点 … 最初に変更しておいた方が良いんじゃないかな? という箇所が3つほど。 2025/10/9 現在: バージョン 0.9.119 の画面
設定 > 一般設定

バックアップ保持数。デフォルトでは3つになっています。無料版では最大7つのバックアップまで保持できますので、その最大値としておくのが良いのではと思います。
設定 > 高度な設定

データベースアクセス形式 ⇒ デフォルトの「WPDB」から「PDO」に。
※ サーバーのPHPにPDOエクステンションがインストールされているかを確認する必要がありますが、主要レンサバならまず対応していると思われます。phpinfo(); で確認ッスね
バックアップパフォーマンスモード ⇒ デフォルトの「Low」から「Mid」または「High」に。デフォルトだと、200MB単位で分割されたzipが沢山生成されてしまい煩わしいと思いますので;
このあたり、All-in-One WP Migration はインストール後デフォルト設定のままで使えば良かったのとは対照的な感じです。設計思想の違いですね。
その他、WPvivid Backup Plugin の詳細な機能・使い方・設定方法については、他に素晴らしい解説記事が沢山あるかと思いますので … ググってみてくださいませ(他力本願)
既知の不具合
他のフリーランスさんから、「復元中に66%で止まることがある」という情報をいただきました。
僕も最近使い始めました★
— ナカムライクウェブ|小さなお店・会社のホームページ制作とWEB集客|大阪府豊中市 (@nakamulikeweb) October 1, 2025
スケジュールバックアップも無料でできるのがありがたいですね。
時々復元のときになぜか66%で止まって再ログイン求められて、ログイン情報入力しても違うって言われるのでパスワード再設定しないといけないのが不便です😅
そんな事象は出ませんか?
僕自身は今のところ遭遇したことは無いのですが、
などでググってみると、英語フォーラムでのやり取りがヒットし
- PHPのタイムアウト
- エクスポート元とインポート先のWordPressバージョンの差
などで起こりうる、といった記述がみられます。また、復元の際に DB、テーマ、プラグイン … などを個別に復元試行してみると良い、というコメントも。
(現象に遭遇したら/何かわかったらまた追記するかもしれませんし、しないかもしれません)