データベースのバックアップ
PostgreSQLのデータのバックアップには、pg_dumpというコマンドを利用するといいらしい。
これでデータベースの中身がテキストでダンプされるので、それをファイルに保存してやるといい。

$ pg_dump > pgdump.txt

しかしこれは実行したユーザのデータベースしかダンプしてくれなくて、pg_dumpallというコマンドで全部のデータベースがダンプされる。
でもこれは権限が足りないテーブルとかがあったら止まっちゃうから、root権限で実行してやるとよいのかな?
postgresで実行してもいいみたい。

でもcronでrootでやりゃいいや。

自動実行
てことで、週1回ぐらいのペースでデータベースのバックアップを取ってやる。
しかしこれはテキストデータなので、そのまま保存してもディスクスペースの無駄遣い。
ログ保存用ディレクトリに、pg_dumpallして作ったファイルをzip圧縮するようなシェルスクリプトを書く。

$ vi pg_backup.sh

#!/bin/bash
DATE=`date '+%Y%m%d'`
FILENAME=pg_dump_$DATE
pg_dumpall > $FILENAME
zip $FILENAME.zip $FILENAME
rm -f $FILENAME

$ chmod 760 pg_backup.sh
$ sudo chown root:admin pg_backup.sh

/etc/ctontabにこいつを毎週実行する行を足す。
$ sudo vi /etc/crontab

# 毎週日曜朝2時にpgsqlのバックアップを作成
00 3 * * sun cd /xxx/yyy/logs/ ; ./pg_backup.sh

$ sudo crontab /etc/crontab

このディレクトリには、apacheのログやらmaillogやらいろんなログファイルが一定以上のサイズになったら移動されてくるようにしてるので、すべてzip圧縮して5GBぐらいになったらDVDに焼いてディスクスペースを空けてやる。