DB を XREA に自動コピーする

約 3 週間前からやろうとしていたことがやっと実現できた。この日記のデータベース (PostgreSQL) を XREA に自動でコピーするすることだ。前にも書いたように、ダンプしたファイルを psql コマンドで取り込むときにパスワードを要求されてしまう。このパスワードは XREA では手動でしか入力できそうにないので、スクリプトで全自動で行うことは困難だった。

よく考えてみると、何も全部シェルで処理しなくてもよいことに気づいた。 XREA にはアカウントの管理ページがあり、そこからデータベースの保存や復元といった処理ができてしまう。ページのソースを見てみると、ただの POST リクエストのようだったので、 Wget でなんとかできてしまいそうだ。作業の流れは次のとおり。

  1. データベース機で pg_dump コマンドを使い、日記のテーブルのみをファイルに書き出す。
  2. Perl を使い、 XREA で取り込める形式に修正。
  3. ftp コマンドで XREA に転送。
  4. Wget を使い、管理画面でデータベースの復元ボタンを押したのと同様の POST リクエストをする。

これを cron で 1 日 1 回実行する。こうすれば XREA にも日記のデータベース (テーブル) がコピーされる。この日記は日々挑戦したことを後でも思い出せるようにするのも目的なので、いつものようにメモしておく。特定のテーブルのみバックアップするには次のようにする。詳しくは pg_dump --help 。

$ pg_dump -a -t テーブル名 > ファイル

今日試したかぎりでは、 XREA の管理画面で復元できる形式は、管理画面で保存したファイルのような形式でなければならないようだ (復元はリアルタイムで処理されないので、あまりしつこく調べなかった) 。よって、上の方法でダンプしたファイルそのものが使えるわけではない。これは管理画面で保存したファイルを参考にし、 Perl で処理。テーブルの差分を送るのでない場合は、いったんテーブルのレコードを消す文を追加する必要がある。続いて FTP で XREA のサーバに転送する方法。これは忘備録 - KAZ Home Page 小技「ftp 自動運転」の項目を参考にした。

open s1.xrea.com
user ユーザ名 パスワード
lcd "転送するファイルのあるディレクトリ"
bin
put pgsql.dump pgsql.dump
quit

上記内容のファイルを次のように使う。

$ ftp -n<ファイル名

そして最後は管理画面で復元ボタンを押したときと同等のリクエストを Wget でする方法。 Red Hat Linux 9 の Wget は POST が使えないらしく、最新版のソースを落としてインストールした。

$ wget --post-data='id=ユーザ名&pass=パスワード&pgsql_restore=%95%9C%8C%B3' \
http://www.s1.xrea.com/jp/admin.xcg

こうしてしばらく待てばデータベースの復元処理が行われる。これで携帯電話版も復活させることができそうだ。携帯電話だとフレッツ ISDN の自宅サーバではレスポンスが悪そうなので、他のサーバで公開したいと思っていた。

このエントリへのトラックバック

spamが増えたためトラックバック機能は停止中です。

このエントリへのコメント

spamが増えたためコメント機能は停止中です。

Information

サイト内検索

けんども日記

直近 10 件
RSS
RSS 1.0
Home@けんどもネット
diary.php(v2): 2005-06-11
Copyright © 2003-2005 Kendomo.net.