Movable Typeのデータ移行について

はじめまして。onagataniです。

今日はMovable Type Advent Calendar 2012の16日目の記事です。

プラグインが間に合わなかったので実用的なネタを書かせて頂きますorz

皆さんはMTでWebサイト構築をして、開発環境から本番環境にデータ移行(本番化)をする時にどのように作業していますか?

DB内やHTML、CSSなどにWebサイトのURLや、サーバ内のパスの記述などがあると思いますが、MT管理画面からの置換などでは漏れが出たり、再構築済みのファイルや、そもそもMT管理外のHTMLやCSSがあったりするとお手上げです。

一度ローカルに全てのファイルを落としてツールなどを利用してもいいと思うのですが、SSHを利用してコマンドラインで操作すると以下のように簡単にデータ移行を行う事が可能です。是非デザイナーさんやコーダーさんも試してみてはいかがでしょうか。

注意!)各コマンドの実行について保証するものではないので、実行の際には事前に検証するなどして問題がないか試して下さい。

 

  1. SSHで移行元サーバに接続し以下のコマンドを実行する事で移行用のデータベースを作成します。DBサーバ名はほとんどの場合localhostもしくは、オプション無しで大丈夫です。
  2. mysqldump -uユーザ名 -pパスワード -hDBサーバ名 --hex-blob --default-character-set=utf8 データベース名 > バックアップファイル名
  3. 移行用コンテンツを作成します
  4. cp -a /path/to/移行前コンテンツ /path/to/移行後コンテンツ
  5. バックアップしたデータベースを移行用に修正します。ファイルパスは/var/www/htmlなどのパスが移行前と移行後で変化がない場合は「s{移行前ファイルパス}{移行後ファイルパス}img;」の箇所を削除して実行して下さい。
  6. perl -i -ple "s{移行前ドメイン}{移行後ドメイン}img; s{移行前ファイルパス}{移行後ファイルパス}img; " バックアップファイル名
  7. ファイルについても以下のコマンドを実行してURLやパスを置換します。phpファイルなども置換対象のファイルになっていますが必要のない場合はphp\|の箇所を削除して下さい。
  8. find /path/to/移行後コンテンツ -iregex '.*[.]\(js\|css\|php\|inc\|html?\)' -print0 | xargs -0 perl -i -ple "s{移行前ドメイン}{移行後ドメイン}img; s{移行前ファイルパス}{移行後ファイルパス}img;"
  9. 移行先のサーバへDBをコピーし、MySQLに復元します。本番稼働中の場合は事前に本番データベースのバックアップを2と同様のコマンドで取得しておきます。
  10. mysql -uユーザ名 -pパスワード -hDBサーバ名 データベース名 < バックアップファイル名
  11. コンテンツも移行後サーバの公開パスに設置します。本番稼働中の場合は4と同様のコマンドにてバックアップを取得しておきます。
 
以上でコマンドは完了です。
かなり原始的な気もしますがよく使うコマンドだと思いますので皆様お試し下さい。