all-in-one-migration を作ってみる | 止まらないバックアップリカバリープラグインの自作
この書き込みは、all-in-one-migration の真似をしてワードプレスを引っ越しさせるプラグインを作ろうという企画です。
出来上がったプラグインだけ欲しい方は こちらから→まだできてない
ごめん、この決めつけはマイブームwww
でも all-in-one-migration でバックアップ取ってたけどリカバリーできない!って、リカバリー中に止まりますというのはよく相談される。
バックアップの時に php のバージョンを合わせることと pluginを全部止めるってしておけば、大抵は問題なくリカバリーできます。
でも、よくわからない(多いのは独立したWEBデザイナーさん)方が
「なんかバックアップできるみたいだからいれてバックアップしてる。」
とか、
「やっぱバックアップは自動でやってほしい。このプラグインだと”できそうだから”」
とか、やっちゃってるんですよね。
いや、自分で使うツールなんだから最低でもリカバリーテストぐらいやりなさいよ。なんですけどね。
all-in-one-migration ならまだしも、ほかのバックアップツールの多くは有料にしないとリカバリーできないから。
all-in-one-migration は、まだ敷居が低いし無料でもなんとかできる(私は)
でも実際問題起っちゃうんですわ。
そうなったら今のところお手上げ。メタデータをバックアップしてきて復旧するしかない。
せめてプラグインの有効化フラグを倒せたら即メタでのリカバリーしなくていいんですけどね。
all-in-one-migration の中を探ってみたけど、単にDBリカバリーしてるだけでいちいち見てない。
ので、自作しようと。
折角なら、自作工程を書き残しておこうと。
all-in-one-migrationが、こうなればいいなぁと思ってるあなたの参考になれば。
プラグインの外回り制作の詳細はこちらから→プラグインのひな型を使って簡単にプラグインを作る
となると、ひな形で残すのは、
ファイルが大きくなった時PHPの実行時間がサーバーの制限を超す可能性があるので実際のエクスポート、インポートは、javascriptで php を呼び出す形にします。
そのため、データベーステーブルもテーブル単位で出力するようにします。
ここでデータベーステーブル一覧が必要になるわけですが、そうするとテーブル一覧からバックアップするテーブルを指示することも可能になるなと夢が膨らみます。
情報というより、使用中のデータベース名、そのデータベースを操作できるデータベースユーザーのIDとパスワード。
データベースがどこにあるか=データベースホスト名。
ターゲットのデータベース(現在ワードプレスが使っているデータベースのテーブルプレフィックス)
それらは、以下の変数に入っています。
データベーステーブルのSQLファイル出力
(複数あるのでフォルダーに投げ込んでテストサイトに渡す)
すぐ再生できるように all-in-one-migration でバックアップ
データベース内のURLの置き換え機能追加
リカバリー後ログインできるか確認
プラグイン/メディアの zip 解凍
プラグインフォルダーを圧縮
データベースフォルダー圧縮ファイル、プラグインフォルダー圧縮ファイル、メディアフォルダーの圧縮 の圧縮
データベースフォルダー圧縮ファイル、プラグインフォルダー圧縮ファイル、メディアフォルダーの圧縮 の解凍
データベーステーブルのリカバリー
データベース内のURLの置き換え
解凍フォルダーの削除
all-in-one-migration もどきのファイル一覧から解凍
all-in-one-migration もどきのファイル一覧から削除
データベーステーブル一覧からテーブルの削除機能追加
制作中に思いついたら書き足していく。
出来上がったプラグインだけ欲しい方は こちらから→まだできてない
止まらない all-in-one-migrationもどきプグインの自作
ワードプレスの引っ越しといえば、all-in-one-migration の plugin を使います。ごめん、この決めつけはマイブームwww
でも all-in-one-migration でバックアップ取ってたけどリカバリーできない!って、リカバリー中に止まりますというのはよく相談される。
バックアップの時に php のバージョンを合わせることと pluginを全部止めるってしておけば、大抵は問題なくリカバリーできます。
でも、よくわからない(多いのは独立したWEBデザイナーさん)方が
「なんかバックアップできるみたいだからいれてバックアップしてる。」
とか、
「やっぱバックアップは自動でやってほしい。このプラグインだと”できそうだから”」
とか、やっちゃってるんですよね。
いや、自分で使うツールなんだから最低でもリカバリーテストぐらいやりなさいよ。なんですけどね。
all-in-one-migration ならまだしも、ほかのバックアップツールの多くは有料にしないとリカバリーできないから。
all-in-one-migration は、まだ敷居が低いし無料でもなんとかできる(私は)
でも実際問題起っちゃうんですわ。
そうなったら今のところお手上げ。メタデータをバックアップしてきて復旧するしかない。
せめてプラグインの有効化フラグを倒せたら即メタでのリカバリーしなくていいんですけどね。
all-in-one-migration の中を探ってみたけど、単にDBリカバリーしてるだけでいちいち見てない。
ので、自作しようと。
折角なら、自作工程を書き残しておこうと。
all-in-one-migrationが、こうなればいいなぁと思ってるあなたの参考になれば。
all-in-one-migration もどき制作工程(予定)
- プラグインの外回り制作
- データベーステーブルの出力
- テスト用サイトの設定
- データベーステーブルの入力
データフォルダーの表示
テスト用サイトでデータベーステーブルをリカバリーできるか? - プラグイン/メディアの圧縮/解凍
テスト用サイトで プラグイン/メディア リカバリー
- all-in-one にする
止まらない all-in-one-migrationもどきのために javascriptでデータベーステーブルを分割保存
止まらない all-in-one-migrationもどきのために javascriptでプラグインを保存
止まらない all-in-one-migrationもどきのために javascriptでメディアを保存 - all-in-one ファイルの管理
データファイルの表示
- 不要テーブル削除機能追加
- all-in-one-mirationモドキ機能追加
プラグインの外回り制作
プラグインを作るときのひな型
ひな形を使って all-in-one-migrationもどきの外回り(オプション設定等)を制作。プラグインの外回り制作の詳細はこちらから→プラグインのひな型を使って簡単にプラグインを作る
all-in-one-migrationもどきプラグイン雛形の改良
all-in-one-migrationもどきに必要なモジュールは、実際のバックアップリカバリーを行うページです。となると、ひな形で残すのは、
- ◎ プラグインヘッダ
- ◎ バージョン番号
- ◎ プラグイン名
- ◎ プラグイン説明
- ◎ トレース関数
- ◎ フック
✕ コンテンツ置換
◎ 設定画面
✕ ショートコード - ✕ ショートコード関数
- ✕ コンテンツ置換関数
- ◎ 設定画面設定
- ◎ 設定画面関数
- ◎ option文字列変換関数
- ◎ デフォルト設定関数
- ◎ 文字列置換関数(改行外す)
- ◎ 文字列置換関数(改行)
- ◎ 文字列置換関数(記号→特殊文字)
- ◎ 文字列置換関数(特殊文字→記号)
all-in-one-migration もどきプラグインで雛形に追加する機能
all-in-one-migration もどきプラグインで雛形に追加する機能は、管理画面(設定-all-in-one-migrationモドキ設定画面)から全部呼び出す形になります。- エクスポート
データベースエクスポート+圧縮
プラグインフォルダー圧縮
アップロードフォルダー圧縮
データベース、プラグインフォルダー、アップロードフォルダー圧縮 → 圧縮 - all-in-one-migrationモドキファイル一覧
削除
インポートへリンク - インポート
解凍 → データベース書き込み → プラグイン、アップロードフォルダー展開
ファイルが大きくなった時PHPの実行時間がサーバーの制限を超す可能性があるので実際のエクスポート、インポートは、javascriptで php を呼び出す形にします。
そのため、データベーステーブルもテーブル単位で出力するようにします。
ここでデータベーステーブル一覧が必要になるわけですが、そうするとテーブル一覧からバックアップするテーブルを指示することも可能になるなと夢が膨らみます。
ワードプレスのデータベーステーブルの出力
ワードプレスのデータベーステーブルの出力を行うときに必要になるのがデータベースの情報です。情報というより、使用中のデータベース名、そのデータベースを操作できるデータベースユーザーのIDとパスワード。
データベースがどこにあるか=データベースホスト名。
ターゲットのデータベース(現在ワードプレスが使っているデータベースのテーブルプレフィックス)
それらは、以下の変数に入っています。
- データベース名:DB_NAME
- データベースユーザーID:DB_USER
- データベースユーザーパスワード:DB_PASSWORD
- デーベースホスト:DB_HOST
- データベーステーブルプレフィックス:global $table_prefix;
データベーステーブルの一覧
MySQLのデータベースデータベーステーブルのSQLファイル出力
(複数あるのでフォルダーに投げ込んでテストサイトに渡す)
テスト用サイトの設定
新しいワードプレスサイトの設定すぐ再生できるように all-in-one-migration でバックアップ
データベーステーブルの入力
データベースバックアップ(フォルダー)からのデータベーステーブルのリカバリーデータベース内のURLの置き換え機能追加
リカバリー後ログインできるか確認
プラグイン/メディアの圧縮/解凍
プラグイン/メディアの zip 圧縮プラグイン/メディアの zip 解凍
all-in-one にする
データベーステーブルフォルダーを圧縮プラグインフォルダーを圧縮
データベースフォルダー圧縮ファイル、プラグインフォルダー圧縮ファイル、メディアフォルダーの圧縮 の圧縮
データベースフォルダー圧縮ファイル、プラグインフォルダー圧縮ファイル、メディアフォルダーの圧縮 の解凍
データベーステーブルのリカバリー
データベース内のURLの置き換え
解凍フォルダーの削除
all-in-one ファイルの管理
all-in-one-migration もどきのファイル一覧作成all-in-one-migration もどきのファイル一覧から解凍
all-in-one-migration もどきのファイル一覧から削除
不要テーブル削除機能追加
データベーステーブル一覧表示機能追加データベーステーブル一覧からテーブルの削除機能追加
all-in-one-mirationモドキ機能追加
今のところ特に考えていない。制作中に思いついたら書き足していく。