[user]$ pg_dumpall -U postgres > ファイル名
[user]$ psql -U postgres template1 < ファイル名
・データベース[user]$ pg_dump -U ユーザー名 データベース名 > ファイル名
[user]$ psql -U ユーザー名 データベース名 < ファイル名
・テーブル[user]$ pg_dump -U ユーザー名 データベース名 -t テーブル名 > ファイル名
[user]$ psql -U ユーザー名 データベース名 < ファイル名
・定期的なバックアップ実行実行ユーザーのホームディレクトリに、パスワードを記述したファイル(.pgpass)を用意
[user]$ vim ~/.pgpass
ホスト名:ポート番号:データベース名:ユーザー名:パスワード(* で省略可能) *:*:*:username:password
[user]$ chmod 600 .pgpass
[user]$ vim ~/backup/pg_dump.sh
#!/bin/sh # データベース名 DB=dbname # ユーザー名 USER=username # 保存ディレクトリ DIR=${HOME}/backup # ファイル名 FILE="${DB}-`date --date today '+%y%m%d'`" # バックアップ /usr/local/pgsql/bin/pg_dump -U ${USER} ${DB} | gzip > ${DIR}/${FILE}.gz # ファイルのパーミッション変更 chmod 600 ${DIR}/${FILE}.gz
[user]$ chmod 700 pg_dump.sh
[user]$ crontab -e
0 0 * * * ${HOME}/backup/pg_dump.sh
[user]$ ls -lh ~/backup
-rw------- 1 user user 617K 3月 20 00:00 dbname-150319.gz
復元
[user]$ cd ~/backup
[user]$ gzip -d dbname-150319.gz
[user]$ ls -lh
-rw------- 1 user user 5.0M 3月 20 00:00 dbname-150319
[user]$ psql -U username dbname < dbname-150319