あるサイトをMovableTypeで構築。
そのサイトのテスト用のミラーサイトを用意するために、データの同期をしようと色々試してみた。
まずは、公式サイトに載っている方法で試す。 ブログの完全バックアップと、データベースのバックアップ バックアップしたブログの復元
まず失敗。 バックアップ時に出来上がるXMLを復元で読み込ませるのだが、パースエラー。 XMLで一部文字化けがあるみたい。 文字化け部分を修正すると、 バックアップは成功し、テストサイトで復元成功。
各種画像ファイル、カスタムフィールド、テンプレートなどデータ一式ちゃんと復元されていた。 再構築などしサイトも復元させる。 そして、ページの確認。
ん、なんかおかしい。 サイドナビの画像がおかしい・・・ CSSスプライトで画像は指定しています。
ちなみに、CSSスプライトというのは、通常複数の画像でナビゲーションなど生成するが、 その複数画像を1枚の画像をずらして、 表示する部分と非表示部分をCSSで調整して表示する技術です。 この技術を使うと、サーバーへのリクエスト回数を減らすことが出来、 トラフィックが気になるサイトなどではパフォーマンス改善にとても有効です。
で、話は戻る。 ナビ画像がおかしい。 CSSのclassを確認すると、「C22」「C23」などとなっている。 テンプレートの設定で、class名にC+カテゴリIDを指定する仕組み。
■22や23のIDのカテゴリなんか存在しない。 ↓ ■つまりCSSで定義していない ↓ ■CSSスプライトが機能しない ↓ ■ナビ画像が正しく表示されない
このような状態となったのが原因でした。
↓こんな記事も発見 バックアップと復元に気をつけよう
標準のバックアップと復元機能を使うと、MTでエントリーしたデータのIDは引き継がれないようだ。。 これじゃミラーとはならない。。。
ということで、標準機能での復元は断念。
結局、次の方法でやることになった。
■MySQLのダンプを取る ↓ ■ダンプ内のサーバー依存のパスを書き換え ↓ ■コピー先のDBにダンプファイルをリストア
これしか完全なミラーでデータを同期する方法はないようだ。 ダンプとかサーバー依存パスがあるので敬遠して、 MT標準機能でやろうとしたのに、 結局ダンプになってしまった。。
何事も試してみないとわからんな。。