Linux系をサーバーにしていれば、これはとても簡単です。PostgreSQLには、ちゃんとバックアップ用のコマンドがあって、次のようにします。
pg_dump データベース名 | gzip > バックアップファイル名
pg_dumpはアスキー文字列を出力するので、gzipで圧縮してバックアップを圧縮ファイルとして取ります。例えば毎日バックアップを取りたいと思えば、ファイル名に日付が入るようにシェルスクリプトを作ってやれば、毎日の日付入りのバックアップファイルが取られるので安心です。実際トラブルに気がついて、そのトラブルが実は一週間前から起こっていた、なんていうことはよくあることですからね。一例として、jobdb という名前のデータベースのバックアップを日付入りのファイル名でバックアップするには、
pg_dump jobdb | gzip > db-jobdb-`date ‘+%Y-%m-%d’`.gz
としてやると、db-jobdb-2011-09-06.gz というようなファイル名のバックアップファイルが出来ます。
データベースをバックアップファイルから復旧させるには次のようにします。
データベースそのものがない場合は、データベースを作ってやります。
createdb データベース名
データベースが壊れたりしていたら、現状のデーターベースを削除し、その後新しいデータベースを作ってやります。
dropdb データベース名
createdb データベース名
あとは、次のようなコマンドを使ってデータベースを復旧してやります。
cat バックアップファイル名 | gunzip | psql データベース名
これでOKです。ね、簡単でしょう?