2009年12月31日木曜日

Gallery からGallery2へのデータ移行(成功)

昨年の5月に旧サーバーのGalleryから新サーバーのGallery2へデーター移行を試みましたがうまく行っていませんでした。そのことが元で、サーバーの完全移行をあきらめました。

以前の記事 Gallery からGallery2へのデータ移行

その中で

Server開設当時(平成14年頃)から平成16年度まで11892枚(albums1)、平成17年度から現在まで18822枚(albums2)の画像をアップしており、このデータを新しいServerにどのようにして移行するか頭を悩ましています。
albums1(Shift-JIS) --> MySQL(UTF-8)
サーバー開設当時は、Galleryは日本語をサポートしていなかったため、設定ファイルを無理やり日本語化して使用していました。
日本語を正式にサポートしてまもなくサーバーを変更しその機会に新規にGallery Ver1(日本語サポート版)をインストールしました。(album2ですね)
当時、どうにかしてalbum1album2を統合しようと試みましたが私には無理でした。
さて、今回こそはと意気込みながらトライしました。

試したことその一
・galleryデータディレクトリー内、album.datファイルの文字コードをnkfコマンドを使って変換
・その後、gallery1インポートを行う。
 見事に失敗!以前も同じようなことを試したかも・・・


試したことその二

gallery2の管理画面を良く見てみると、「アイテム追加」(ローカルホスト内の指定フォルダを検索してファイルをインポートする)機能があります。
よく調べてみると、何とか使えそうです。

1.バックアップをリストア
今回は、バックアップしていた /backup/backup_albums.tar.gz を /backup/albums にリストアし、そこからデータを読み込みインポートします。
[root@centos /]# cd /backup
[root@centos backup]# mkdir albums
[root@centos backup]# cd albums
[root@centos albums]# tar -xvzf /backup/backup_albums1.tar.gz
2.アルバムタイトルの保存
①albumdb.datの文字コード変換
ごみファイルを削除する前に、まず、アルバムのタイトルを保存しておく必要があります。
それには、albumsディレクトリートップに存在する albumdb.dat の文字コードをUTFに変換します。
[root@centos albums]# find . -type f -name 'albumdb.dat' -print0 | xargs -0 nkf -SeLu --overwrite
②データのインポート画面からタイトルをコピー
gallery2→[サイト管理]→[管理オプション]→[インポート]→[galley1]
「Gallery 1のアルバムディレクトリのパス 」を入力
/backup/albums
 インンポートするディレクトリーを選択(チェック)し、次へ
 ディレクトリー名とタイトル名が出現するので、全てコピーし、ローカルPCに保存

3.画像ディレクトリー内のごみファイルの削除
次に問題になるのが、各ディレクトリーに存在する、album.datやサムネイルファイル、リサイズファイルその他ごみファイルやディレクトリーです。
そこで、「特定位置の特定ファイルを全て捜して削除する」方法で削除します。

[root@centos /]# find /hoge -name hogehoge* -exec rm -f {} \;
4.ローカルホスト内のディレクトリーからインポート
albumsディレクトリーをWinSCPで確認し、いよいよデーターインポートを行います。
①インポート先のアルバムを作成
②作成したアルバムにインポート

5.アルバム名を変更し完了
読み込んだアルバムを開くと、データが保存されているでしょう。
しかしタイトル名は「ディレクトリー名」になっているので、2.-②で保存したタイトル名をカットアンドコピーし終了。

今回は成功しました。