2014年03月24日
PowerCMSへのデータ移行のチェックプロセスを改善する
中規模以上のサイトCMS化において、常に課題となるといっても過言ではないのが「データ移行」でしょう。新規サイト構築ではない、サイトリニューアルにおいてCMSを導入する際に、旧サイトのデータが大量に存在する、といったケースはよくあることだと思います。
PowerCMS(Enterprise/Advanced)では、そんなデータ移行を行うためのPowerImporterプラグインが存在します。PowerCMS 4からは、ウェブサイトのデータ移行にもご利用いただけるようになりました。
また、このPowerImporterでは、複雑なパターンや、旧コンテンツのHTMLソースが複雑(主に、古いページのソースが汚い、もしくはバラバラであるというケースなど)な時のために、インポート処理後にプラグインによって処理を追加できるようになっています。
参考リンク
移行過程で生成された不要ファイルの扱いを改善する
納品直前に、作業過程で作成された不要なファイルを削除する必要が生じたことはありませんか? 不要なファイルが生成される理由は主に以下のようなものだと思います。
- アーカイブマッピングの設定を変更して再構築した
- カテゴリや記事のベースネーム(basename)を変更してから再構築した
- インポート時のミス
- 作業過程のファイルの置き忘れ
PowerCMS(MT)が管理しているファイルの一覧を取得する
PowerCMS(MT)から出力されたファイルの情報はデータベースの mt_fileinfo テーブルに1ページ1レコードとして格納されています。また、アップロードされたファイルの情報は、mt_asset テーブルに1ファイル1レコードとして格納されています。
つまり、この2つのテーブルの値をチェックすれば、それがPowerCMS(MT)で管理されているファイルかどうかを見分けることができるわけです。
そこで、プラグインを作成しました。
プラグインを設置し、mt.cgi?__mode=get_listfiles のようにパラメタを付けて管理画面にアクセスします。
PowerCMS(MT)で管理されていないファイルを意図的に置いていないのであれば、実際のサーバー上のファイルリストとこの内容を比較して、不要なものを削除します。
インポート前後でファイルのパスが異なる場合にログを保存する
こちらも、プラグインを作成しました。
設定方法
プラグインを設置し、記事カスタムフィールド/ページカスタムフィールド(種類:テキスト)を作成します。
- 記事フィールドのベースネーム : orig_entry_path
- ページフィールドのベースネーム : orig_page_path
PowerImporterによるインポート時に、カスタムフィールドに取り込みファイルのパスを保存します。その後、インポートしたページを再構築した際に、パブリッシュ先が取り込んだファイルのパスと異なる場合に、システムログに以下のようなメッセージを表示します。
Invalid publish path=>(出力ファイルパス):Original File=>(取り込んだファイルのパス)
このプラグインと作成したカスタムフィールドは、移行が完了したら削除してください。
そもそも、ゴミファイルができないようにする
先に挙げた、不要ファイルが生成される(残る)理由のうち、以下のものについては、mt_fileinfoレコードが変更される際に(実際には、削除されて新たなmt_fileinfoレコードが生成されます)、古いファイルをきちんと削除するようにすれば不要なファイルが残ることがなくなります。
- アーカイブマッピングの設定を変更して再構築した
- カテゴリや記事のベースネーム(basename)を変更してから再構築した
こちらも、プラグインを作成しました。
このプラグインを設置して有効にすると、アーカイブマッピングの設定変更やカテゴリや記事のベースネーム(basename)を変更した後の再構築で、元のファイルパスに存在する不要ファイルを自動的に削除するようになります。
コメントを投稿する