要約:あるWordPressブログを、サーバの移転やローカル鯖への同期など別の場所にコピーする方法についての簡単なまとめ
実は前に一回書いたのだけど、その後書き足すことが増えたのでまとめなおし。なお、前提としてUTF-8のブログをUTF-8(つまりそのまま)でコピーするとします。
まず、WordPressでは標準でXML(WXR形式)でのインポート・エクスポート機能を実装していますが、現状ではデメリットが大きくて使わない方が得策です。なぜかというと‥
- 添付ファイルの個別URLがおかしくなる(guidとmime-typeが引き継がれない)
- 記事IDを1からふり直すので、IDを中心にURLを設計していた場合はURLが変わってしまう
- 記事の抜粋が消えてしまう
- エクスポートしたファイルが大きい場合は(ファイル自体を分割しない限り)サーバの処理時間制限にひっかかって、インポートできない場合がある
というわけです。念のためnightlyビルドも試してみましたが、2007/9/12現在ではまだ直っていません。
なので、元サーバ(以下、サーバA)のMySQLAdmin*1 経由でエクスポート→移行先サーバ(以下、サーバB)のMySQLAdmin経由でインポートすることにします。MySQLAdminは、さくらインターネットやXREAなど並のレン鯖屋さんなら使えるはずです。
事前準備
まず、WordPress側で文字化けが発生する事があるため、power source* - XREAにUTF8設置時の文字化け 解決編に従って、以下のようにコードを追加。
ファイルパス: wp-includes/wp-db.phpの78行目あたり
- if ( !empty($this->charset) && version_compare(mysql_get_server_info(), '4.1.0', '>=') )
- $this->query("SET NAMES '$this->charset'");
- mysql_query("SET NAMES utf8", $this->dbh);
- $this->select($dbname);
- }
サーバAから書き出し(エクスポート)
次にサーバAのMySQLAdminに文字コードを utf-8 にしてログイン(さくらは確かEUC-JPが初期状態だったはず)。
右フレームのタブにある「エクスポート」を選択して、出てきた画面でWordPressに関係ある全てのテーブルを選択。『「DROP TABLE」を追加』と『完全な INSERT 文を作成する』の項目にチェックを入れたら、「実行」ボタンを押して保存します。
書き出したファイルの調整
書き出したファイルをUTF-8が扱えるテキストエディタで開いて、以下の部分のURLをサーバBのWordPress設置予定URLに修正します。これをしない限り、サーバAにリダイレクトされるので注意。
- INSERT INTO `note_options` (`option_id`, `blog_id`, `option_name`, `option_can_override`, `option_type`, `option_value`, `option_width`, `option_height`, `option_description`, `option_admin_level`, `autoload`) VALUES (1, 0, 'siteurl', 'Y', 1, 'http://localhost/blog/', 20, 8, 'WordPress web address', 1, 'yes');
- (中略)
- INSERT INTO `note_options` (`option_id`, `blog_id`, `option_name`, `option_can_override`, `option_type`, `option_value`, `option_width`, `option_height`, `option_description`, `option_admin_level`, `autoload`) VALUES (40, 0, 'home', 'Y', 1, 'http://localhost/blog/', 20, 8, '', 1, 'yes');
書き出した設定によっては、以下のように略記されていることがあります。その場合は、siteurl
やhome
および1,0
や40,0
などを手がかりに検索を行いましょう。
- (1, 0, 'siteurl', 'http://localhost/note/', 'yes'),
- (中略)
- (40, 0, 'home', 'http://localhost/note/', 'yes'),
サーバBへ書き入れ(インポート)
終わったらサーバBのMySQLAdminへ。WordPressのテーブルを選んで、また右フレームのタブから「インポート」を選択。さきほど編集したファイルをインポートしたら終わりです。
同期の必要が無くても、慣れればそれほど難しくないので、バックアップ代わりとして定期的にやっておくのもいいかもしれません。
- MySQLを操作するフロントエンドアプリケーション [戻る]
- この記事のURI
- この記事のURI(リンク用フォーマット)
読者のコメント
読者のコメント 0件
コメント書き込みフォームに移動する