http://www.burikko.net
アーカイブは残っているみたいなので復旧は可能かと思うのですが、
http://www.burikko.net/archives/2005/05/comic_vol5_1.html
アーカイブページでは表記が
Powered by
Movable Type 3.01D-ja
なんです。
どうしたら復旧できるか教えてください。
http://www.bricklife.com/weblog/000604.html
bricklife.weblog.*: HTML から weblog を復旧する方法
まず、大前提として、念のためにすべてファイルをローカルにバックアップしておきます。
で、http://www.bricklife.com/library/html2mt.txtをいちばん上の階層で走らせるわけですが、直接できればいちばんいいわけですが、無理であれば拡張子をcgiにして動かしてみます。ただこのやり方だと途中で処理が終わってしまう可能性があります。
その場合は、ローカルで処理します。
サーバーのファイルをバックアップしておいたもとのファイルに戻して、ローカルで、
perl html2mt.txt
します。
ウィンドウズへのperlの導入は二つ目のリンクで。
http://penguin.nakayosi.jp/windows/perl.html
Active Perl�E�C���X�g�[���EWindows�EWindows2000�E�����E�T�[�o�E�����T�[�o
テンプレートが違うので、そのままでは適用できないようです。とりあえず、本文だけ書き換えたものを載せてみます。はてなでは”と¥と’が変換されてしまうので戻してください。
で、使い方なのですが、まず、アーカイブファイルをすべて、ひとつのディレクトリにフラットにコピーしてください。(個別エントリーのものだけ)
で、スクリプトのファイルはトップの階層において、シェルアカウントがあればいいのですが、かわりにcgiをつかいます。
#/usr/local/bin/perl
system(”./test.pl directory/*”)
という内容のcgiファイルをつくって、これにアクセスしてください。directoryはアーカイブファイルのコピーをおいた場所です。test.plはスクリプトのファイル名です。
下に乗せたものを使うとコメントとトラックバックは復旧できません。またどちらにせよ、このやり方はけっこうperlの知識が要るので、失敗する可能性もあります。
すいません、ほかのやりかたは見つけられませんでした。
test.pl
#!/usr/bin/perl
use lib qw (./lib ./extlib);
use MT;
use MT::App::CMS;
use MT::Blog;
use MT::Entry;
use MT::Comment;
use MT::TBPing;
use MT::Trackback;
use FileHandle;
use Jcode;
$| = 1;
my $cfg_file = ”./mt.cfg”;
my $mt_path = ”./”;
my $app = MT::App::CMS->new(
Config => $mt_path . $cfg_file,
Directory => $mt_path,
);
my $mt = MT->new(
Config => $mt_path . $cfg_file,
Directory => $mt_path,
);
my %month = (
’January’ => ’01’,
’February’ => ’02’,
’March’ => ’03’,
’April’ => ’04’,
’May’ => ’05’,
’June’ => ’06’,
’July’ => ’07’,
’August’ => ’08’,
’September’ => ’09’,
’October’ => ’10’,
’November’ => ’11’,
’December’ => ’12’,
);
my $blog_id = 1;
my $author_id = 1;
my $blog_id = 1;
my $blog = MT::Blog->load($blog_id);
while ($file = shift) {
# HTML読み込み
$html = do {local $/; my $fh = FileHandle->new($file); <$fh>};
# パース開始
# next unless ($file =~ /(¥d¥d¥d¥d¥d¥d).html/);
next unless ($file =~ /(.*)¥.html/);
# my $entry_id = int($1);
# print ”$file¥nID: $entry_id¥n”;
print ”$file¥n”;
# エントリー情報
# $html =~ /<h3 class=”title”>(.*?)<¥/h3>¥n(.*?)¥n<div class=”posted”>/s;
$html =~ /<h3>(.*?)<¥/h3>¥n(.*?)¥n<p class=”posted”>/s;
my ($title, $body) = ($1, $2);
$html =~ /dc:date=”(¥d¥d¥d¥d)-(¥d¥d)-(¥d¥d)T(¥d¥d):(¥d¥d):(¥d¥d).*”/;
my $created_on = ”$1$2$3$4$5$6”;
$html =~ /mt¥/mt-tb.cgi¥/(¥d¥d)/;
my $entry_id = int($1);
$body =~ s/(¥n<p>|<¥/p>¥n|<br ¥/>¥n)/¥n/gs;
$body =~ /^¥n(.*)<div id=”.*more”><div id=”more”>¥n(.*)<¥/div><¥/div>/s;
my ($text, $text_more) = ($1, $2);
# エントリー生成
my $entry = MT::Entry->new;
$entry->blog_id($blog_id);
$entry->title($title);
$entry->text($text);
$entry->text_more($text_more);
$entry->author_id($author_id);
$entry->created_on($created_on);
$entry->id($entry_id);
$entry->convert_breaks(1);
$entry->allow_comments(1);
$entry->allow_pings(1);
$entry->status(MT::Entry::RELEASE());
$entry->save or die $entry->errstr;
}
$blog->touch;
$blog->save;
すみませんこんな夜中に・・・
とりあえず何とかやってみます。ありがとうございました。
???
とりあえず
http://www.burikko.net/html2mt.txt
http://www.burikko.net/html2mt.cgi
の2つのファイルはあげました。
サーバにあわせて冒頭は
#!/usr/local/bin/perl
に書き換えました。
cgiのパーミッションは755にしました。
500番エラーです。
馬鹿で本当に申し訳ないですが、ご教授ください。