MovableType サーバ配信
Movable Type で生成したコンテンツを、外部サーバーと同期する方法。
以下の様なスクリプトをどこかに置いて、cron 実行することで実現できる。
sync.sh
1 2 3 4 5 |
#! /bin/sh lftp -u ユーザ名1,パスワード1 -e "mirror --delete --only-newer --verbose リモートDIR1 ローカルDIR;quit" サーバ1 find ローカルDIR/* -type f | xargs sed -i 's!変換前サイトURL!変換後サイトURL!g' lftp -u ユーザ名2,パスワード2 -e "mirror -R --delete --only-newer --verbose ローカルDIR リモートDIR2;quit" サーバ2 |
解説
lftp は ftp クライアント。Windows でも cygwin 版が使える。
最初の lftp で、サーバ1 の リモートDIR1 から ローカルDIRにファイルをコピーする。
mirror コマンドは指定ディレクトリ以外を一括転送。–delete は消えているものはローカルでも消す。– only-newer は新しいものだけコピー。–verbose は詳細表示。
サーバ1 で処理する場合はこの処理は不要。
コンテンツ内部は、作成環境のURLが残っているので一括で置換。
ローカルディレクトリ内の全ファイルの変換前サイトURL を sed を使って、新しいサーバ2 のURLに置き換える。
mirror -R はアップロードミラーリング
サーバ2 で処理する場合はこの処理は不要。
ちなみに、内部リンクのURLを相対パス化して置けば、真ん中の置き換え処理が不要になる。
相対パスにするには BlogRetativeURL とかを使う。
1 2 3 |
<a href="<mt:BlogURL />">トップ</a> ↓ <a href="<mt:BlogRelativeURL />">トップ</a> |