14
June
2008

Blog migration and data integrity0

昨天沒睡足也沒睡好,今天頭暈了一整天,索性動工幫一位好友把blog從LifeType搬到Wordpress上。因為LifeType是一套multi-user, multi-blog的平台,我自然沒有系統的資料庫管理權。系統又不支援匯出功能(export),所以一切只能用RSS feed來import。

RSS feed又有一個問題,就是feed裡只有最近十篇文章的內容。我實在不知道Google Reader是怎麼能夠抓得到比feed內容更舊的文章,找了些時候沒找著就放棄了。

所幸,好友的文章雖多(三四百篇),每個文章類別最多也不過四五十篇,且多半是十篇上下的。而LifeType對每個文章類別都提供feed。因此,可以一個個存檔並import到Wordpress。

問題是,Wordpress的RSS importer沒辦法import任何文章。我還拿了我的MSN分享空間的feed,乃至我自己blog的feed來測都不行。因此,我猜是Wordpress的RSS importer有問題。這個importer的原始碼並不長,我於是開始動手找錯誤。

錯誤發生在好幾處,一個是LifeType的RSS feed格式有問題(比如:時區)乃至不同的feed使用不同的格式,或者沒有提供所需的欄位。這些只能靠程式碼的修補和人工作業,前者我來,後者當然是好友自己弄了。再來,這個RSS importer裡用了一個get_html_translation_table()的函式,內部的encoding不是unicode (UTF-8);dreamhost的PHP default_charset也沒設定。兩者都需處理。最後,LifeType的RSS feed為1.0版,Wordpress的RSS importer用的是2.0的格式。又是一番hack。

更麻煩的在後面,好友在Yahoo! MyBlog上另有一個blog作為主站當機時之寫作用。Yahoo! MyBlog上的RSS feed用的欄位名稱又不一樣,害我都不知道誰對誰錯。管他的,我只管把好友的兩個blog都搬家完畢,去他的誰合乎RSS標準。

感謝老天,open source真好!

延伸閱讀:華文世界的RSS亂象


另外一個問題與RSS無關,但與會搬家的人有關。當文章存甲處搬到乙處後,會遇到以下問題,即便兩處用的是同一個blogging system。

一、所有的參考到站內其他文章的連結通通都會broken,除非domain name一起搬家,目錄結構也不變。像我以前搬了一次家後,學乖了,所有的站內舊文連結一律用relative address。但這對無系統管理權的一般大眾來說,也不能保證什麼。
二、所有的圖片連結仍是連到舊網站。最簡單的當然是繼續放著。勤快一點的是把所有圖搬過來,把所有的link fix起來指向搬過來的檔案。但下次搬家又會是同樣的問題。無奈目前主流的blogging system裡,我所知道的沒有一個把照片存入資料庫中。我自己的作法是把照片與文章decouple,前者放在flickr.com上面。但是,誰知道我哪一天想把flickr換掉?我也不知道該怎麼辦了。

歷年的今天…



Leave a Reply

To spammers:
Don't even bother to attempt spamming. Each comment from a new username-email combination is subject to approval before it is published.