ヘタレな趣味の道
ヘタレな趣味ばかりで結局コンピュータネタが多いブログ...

[Top] - [カテゴリ:ブログ活用] - このページ (タグ : FC2  )

プロフィール

Author:blogger323
1の位を四捨五入すると40歳の♂。4歳息子、0歳娘あり。ごった煮状態の blog ですが、コメント・トラックバックはお気軽にどうぞ!
 RSSフィード全文配信中

plugin bottom
リンク

plugin bottom
記事リスト

最新の記事

plugin bottom
タグクラウド


plugin bottom
カテゴリー

plugin bottom
ブログ内検索 (by FC2)

サイト内検索にご利用ください

plugin bottom
カレンダー

09 | 2008/08 | 07
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -

plugin bottom
Powered By FC2ブログ

Powered By FC2ブログ
ブログやるならFC2ブログ

plugin bottom

FC2 ブログパーマネントリンクを考慮したリストア用ツール

2006/12/16

FC2 ブログバックアップファイルにパーマネントリンクを保持するためのダミー記事を挿入するスクリプトプログラムを perl で書きました。これは記事番号が歯抜けになっている時に使用するためのものです。簡単なものですが、誰もやっていないようなので公開します

使い方は以下の通りです。

用意するもの:
プログラムファイル (backup.pl という名前でダウンロードしましょう)、sitemaps.xml とバックアップファイル (仮に "fc2blog_all.txt" とします)

実行方法:
これら3つのファイルを同じディレクトリに置いて、コマンドラインでそのディレクトリに移動し、

perl backup.pl fc2blog_all.txt > newbackup.txt

と実行するとダミー記事の入った newbackup.txt が生成されます。

  • バックアップファイル中のエントリは番号の昇順に並んでいると想定しています。(全記事をバックアップすれば昇順に並ぶようです。)
  • 記事の時刻をキーに sitemaps.xml 中の記事番号とバックアップファイル中のエントリをマッチングさせているため、同時刻に複数エントリがあるとうまく動きません。時刻は秒も含むので普通に書いていればまず大丈夫だとは思います。
  • ダミー記事は以下の内容になります。気に入らない人は自分でプログラムを直しましょう。
    • タイトルは「DUMMY (n)」、ここで n は抜けていた記事番号。
    • 作成時刻は 2000年 1月 1日 0時 0分 0秒
  • sitemaps.xml については、こちらの説明をご覧ください。このブログならば http://blogger323.blog83.fc2.com/sitemaps.xml の内容を保存します。当然各自のブログ URL に置き換えてバックアップファイルと同じタイミングで取得したものを使用しなければなりません。

なお、テストは行いましたが、プログラムの不測の動作により問題が生じても責任は負えません。悪しからず。perl は万年初級です。

「perl って何?」という人は... どうしましょう?


参考エントリ


2006.12.27 追記:

  1. 世の中にはタグを取り除いてただのテキストファイルとして XML ファイルを保存してしまうブラウザが存在するようです。これについては簡単な取得用 perl スクリプトを書きました。プログラム中の sitemaps.xml の URL をご自分のものに変えて以下のように実行してください。proxy が必要な環境では "$ua->proxy"... の行を有効にしてプロキシサーバ名とポート番号をご自分の環境に合わせてください。
    perl httpget.pl > sitemaps.xml
    
    実は使っているライブラリが perl の標準なのかよくわかっていないのですが、Linux 上の perl v5.8.8 や Windows 上の ActivePerl 5.8.7 では特にモジュールの追加なく動きました。
  2. sitemaps.xml には下書きのエントリが含まれないため、バックアップ中に下書きデータが含まれる場合は不整合が起こります。手で sitemaps.xml に項目を追加するなりして対処してください。
  3. "-------------------------------" のような内容が記事に含まれても問題ないようプログラムを修正しました。直したのは以下の部分のみです。
    -$/ = "--------\n";
    +$/ = "\n--------\n";
    

2006.12.28 追記:

プログラムを修正しました。修正点は以下の通りです。
  1. 下書き記事が含まれていてもエラーとならないようにしました。ただし、sitemaps.xml に下書き記事の情報は含まれないため、直前の公開記事の番号の続きが使われます。従って下書き記事の直前の記事が削除されているときはその下書き記事の番号が変化します。
  2. ダミー記事のステータスを「下書き」に変更しました。怪しいダミー記事が見えても仕方ないですものね。

テストはしていますが、元のバックアップファイルも必ず保管しておきましょう。

また昨日の "--------" の扱いの件ですが、「問題ないように」とは「このプログラムでエラーとならないように」という意味です。特に変換処理をしているわけではないので、FC2 のインポートツールの動作ではそのままリストアできないと思われます。

おっと、この記事のリストアができないではないか...


他の「ブログ活用」に関する記事を見る!
【2006/12/16 00:47】 | TRACKBACK(2) | COMMENT(10)
ページ先頭
この記事に対するコメント
エラーメッセージが出ました
はじめまして、トラックバックを頂戴し、記事を拝見しました。
perlったらcgiとしか思いつかない私なのですが、慣れぬ手つきでterminalを立ち上げてやってみたところ、
something wrong ! (date:'2006-08-02T19:27:00') at backup.pl line 28, <> chunk 1.
というエラーメッセージに出くわしました。
if ($n == 0 || $n < $count) { die "something wrong ! (date:'$date')"; }
というのに引っかかったようです。
>プログラムの不測の動作により問題が生じても責任は負えません。
ということですが、これの回避するヒントをいただけないでしょうか?
【2006/12/24 05:40】 URL | sugar #TEqExUC2 [ 編集]

原因
ここで引っかかるのは、1. その日付の記事が sitemaps.xml に見つからなかった。 2. バックアップファイル中のエントリが昇順でなかった。のいずれかだと思います。もし、心当たりなし&バックアップファイルと sitemaps.xml を送っても良いというのであれば、このコメントのメールアドレス宛に送ってください。ちょっと見てみます。sugar さんのエントリは参考にさせていただいたので、何とかしたいと思います。
【2006/12/25 23:50】 URL | blogger323 #peOoFPws [ 編集]

ありがとうございます。
私のエントリが参考になったというのはとても嬉しいことです。

さて、ご指摘いただいた件、どちらにも思い当たるふしがなかったため、メールを送信させていただきました(no_titleで送ってしまいました、ごめんなさい)。お時間のあります折に、ご教示いただければ幸いです。
【2006/12/26 05:22】 URL | sugar #TEqExUC2 [ 編集]

管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます
【2006/12/26 06:06】 | # [ 編集]

newbackup.txtが作成できました。
いろいろと素早くご対応いただき、ありがとうございます。

1.sitemaps.xmlのファイル形式は、私がtext形式で保存してしまったためで、単純にそのまま「ソースで保存」すれば良いということも分かりました。ショシンシャなもので、こういうところで既に躓いていたんですね。面目ないです。
3.記事本文中のデミリタの件、手動では非常に面倒な作業で、これが自動化されるだけでも大変嬉しいことです。

さて問題は2.のDraftデータなのですが、実際のブログでは、公開している記事と、下書きの記事、それから削除して「存在しない」記事が混在することとなります。元のファイルを弄ることなく、「存在しない」記事のみをDUMMYとして再生することはできないものでしょうか?……800もの記事をひとつひとつマニュアルで見て、ダミーデータを再生させた私。そこから考えれば、「-----」の対処ができるだけでもありがたい話なのですが、折角なので、そここそコンピュータの出番だと信じて疑いません。……贅沢でしょうか?
【2006/12/27 09:00】 URL | sugar #TEqExUC2 [ 編集]

下書きの処理
確かにこんなことを手でやりたくないですね。
sitemaps.xml には下書きのデータがない=下書きエントリの番号がわからないという状態なので正確に下書きの記事番号を戻すことはできないのですが、下書きなのでパーマネントリンク不要、つまりエントリ番号が変わっても気にしないという条件であれば何とかなりそうな気がします。具体的には以下の内容のいずれかならば何とかなるかも。

1. 公開済み記事+DUMMY 記事でリストア用ファイルを作り、下書きは別の独立したファイルとして吐き出す。
2. 公開済み記事+下書き記事+DUMMY 記事でリストア用ファイルを作り、下書きエントリは直前のエントリの続き番号を振る。削除記事と組み合わさると下書き記事の番号が前にずれるかも。

1つのファイルにまとまる 2. の方が良いですかね。
【2006/12/27 13:39】 URL | blogger323 #peOoFPws [ 編集]

そうですね、
一度公開したものを下書きにしているというのは特殊なケースなので、一般的には下書きはパーマネントリンクを考慮しなくて良いと思います。
「下書きエントリは直前のエントリの続き番号」なら、そう外れないでしょうし、ファイルが1つのほうがリストアもやりやすいですし、2が嬉しいです。
【2006/12/27 14:56】 URL | sugar #TEqExUC2 [ 編集]

blogger323さん、
年末の貴重な時間をさいていただき、感謝します。
細かい動作報告は改めてしたいと思いますが(年明けになるかと思います)、Dummy記事が所定の位置にDraftとしておさまっていました。
ここまでくれば後一息、ここまで自動でできればかなりリストアまでの時間が短縮できますね。嬉しいです。ありがとうございます。

>昨日の "--------" の扱いの件ですが、「問題ないように」とは「このプログラムでエラーとならないように」という意味です。特に変換処理をしているわけではないので、FC2 のインポートツールの動作ではそのままリストアできないと思われます。
そうだったのですね、早とちりでした。この件、「--------」を投稿禁止ワードとして登録しておくことを思いつきました。システムのほうで対応していただければより嬉しいところではありますが。

わぁ、この記事に「--------」をまた増やしてしまいました!
【2006/12/29 03:26】 URL | sugar #TEqExUC2 [ 編集]

"--------" の件
ぬか喜びさせてしまってすみませんでした。"--------" のインポート時エラーについて何ができる考えてみたのですが、勝手に何かに変換するのもタチが悪いように思うし、警告ぐらいならば敢えてこのプログラムに機能を追加する必要は無いように思いました。実際何か対処をしようとするとエラーの起こり方の詳細を自分できちんと調べなければというのもあります。気が向いて調べたときに何か有用なことがあったら記事にしたいと思います。
ということで今回は一旦これで区切りにしようと思います。様々なコメントありがとうございました。
【2006/12/29 08:23】 URL | blogger323 #peOoFPws [ 編集]

こちらこそ、
ありがとうございました。ここまでできればかなり省力化できるので、助かります。
ぜひ、ブログで紹介させてくださいね。

ひとつだけ、誤解があるようなので、その部分だけ。
「-----」が本文にあると警告が出るのではなく、そこも区切りとみなして読み込んでしまうので、パーマネントリンクがずれてしまうのです。もうこれはシステムの仕様なので、運営側に対処していただくしかありません。
それが実現されていない現在は、入り口のところ、つまり記事やコメントを投稿するときにいかにそれを排除するかがポイントとなりますね。

ともかく、ありがとうございました。
【2006/12/29 13:05】 URL | sugar #TEqExUC2 [ 編集]

ページ先頭
この記事に対するコメントの投稿









English only messages are prohibited to avoid the spam. Please copy and paste some Japanese letters in your message.





管理者にだけ表示を許可する

ページ先頭
この記事に対するトラックバック
トラックバックURL
→http://blogger323.blog83.fc2.com/tb.php/142-7f5b00f1
この記事にトラックバックする(FC2ブログユーザー)

バックアップファイルにダミー記事を挿入してパーマネントリンクを保持する方法

blog9クラッシュの際に、失われたデータを探し補完しながら、ウェブに公開されたアドレス(パーマネントリンク=http://ブログID.blog(x). fc2.com/blog-entry-(n).html)を変更しないようにバックアップデータを元に戻 sugar pot【2006/12/30 07:05】

年末年始サーバはダウンするか?

sugarさんところで、バックアップに関する新しいツールが紹介されています。FC2ブログ側で用意された「データのバックアップ(管理ぺージ>ツール>データのバックアップ)」を元にバックアップしたデータを、そのまま David the smart ass【2006/12/30 21:57】
ページ先頭