WordPress 移植メモ

サーバー移動にあたって、WEBデータの移動が大きな問題の一つでした。

家サーバーがubuntu8.10のまま長らく放置されていたのも、データベース移動がうまく行くかどうかに不安があったからだ、それに加えてPC自体の調子の悪さも相まって、「光学ドライブが動かない」「USBポートが不安定」などの理由でそのままにせざるを得なかったというのもありました。

今回の場合は、完全に引越であるので、失敗しても何度でもやり直せるということで、色々試してみた。

まず、WEBサーバーにインストールしたphpMyAdminを用いてバックアップ/リストアを行う方法。

全データを対象に行ったが、読み込みファイルサイズに制限があったので、あらかじめFTP転送しておいたバックアップファイルをリストアしようとしたが、rootですら書き込み権限が無いとかで失敗。どうもinformation_schemaというデータベースが問題であろうという所までは分かったが、放置。

mysqlのコマンドラインツールで全バックアップ/リストア

結局は上記理由で失敗。information_schemaは内部的な利用のための物で書き込むことは出来ないらしい・・・じゃなんでバックアップ/リストアの対象になっとんねん?って思ってしまうが、そういうわけで地味に最後の手段。

コマンドラインでちまちまデータベース一つずつバックアップ/リストア

結局はこれ。information_schema以外のデータベースをmysqldumpでちまちまバックアップ取って、リストア先で

mysql> create database wp-data default character set utf8

$ mysql  -u wpdata -p xxxx < backup.sql

でな感じであらかじめ(wpdata)というユーザー権限でデータベース(ここではwp-data)を作っておいて、バックアップデータである*sqlファイルを読み込みます。※ここのwpdataというユーザー名とwp-dataというデータベース名はバックアップ元に準じます。

あとは、htmlディレクトリを構造毎ファイル所有者に注意して複製して終わり。

ただ、この方法ではうまくいかず、ページのリンク関係がボロボロ。そりゃそうです。トップページのURLが変わったのだから、当然直リンしている所は破綻するわけで、ここを直さないといけない。幸いバックアップした*.sqlファイルはテキストなので、ここはsedを使って置き換えてしまいます。

$ sed -e ‘s/old url/new url/g’ backup.sql > backup1.sql

出来上がったデータで置き換えます(もちろんデータベースは一旦消して作り直します)。またコピーしたhtmlディレクトリの中にも旧URLを直接参照している所があるはずなので、これも出来る限り書き換えます。

grep ‘old url’ */* などして探して手動で書き換えられる程度の作業なので大したことはありませんでした。

これで、無事データ移植完了。

同じような感じで xoops も移植できました。