久しぶりにPostgres触ったんですが、バックアップとリストアに若干苦労しました。
結論から言うと文字コードなんて大嫌いだヽ(`Д´)ノ
というワケで、DB一覧(psql -l)すらもスッカリ忘れかけていたのでバックアップとリストアをしてみましょう。
例によって構築は後回しです。
まず、バックアップには[ pg_dump] 、リストアには[ pg_restore ]という専用のコマンドがあります。
psqlというコマンドでも代用可能なものもありますが、今回は専用コマンドで説明します。

使用するにあたって、主なオプションをまとめておきました。
pg_dumpの主なオプション
-a データのみをダンプ
-s テーブルのみダンプ
-t 特定のテーブルのみダンプ
-F バックアップファイルの形式を指定(c=カスタム、t=tar、p=テキスト)


pg_restoreの主なオプション
-c データベースの作成前にテーブルなどをドロップ(削除)する。
-d データベース名を指定
-F リストアファイルの形式を指定(c=カスタム、t=tar、p=テキスト)

オプションを使いこなすと、かなり便利になります。
例えば、pg_restoreのcオプションは通常dropdb→createdb→リストアの手間がなくなります。

PostgresのDB全体をバックアップ
# su - postgres
※postgresユーザになる
$ pg_dumpall > pg_all.db
※DB全体のバックアップを作成


PostgresのDBをバックアップ
# su - postgres
※postgresユーザになる
$ pg_dump testdb > testdb.db
※testdbというDB名のバックアップを作成

ちなみに、バックアップを置くディレクトリにはちゃんとpostgresユーザでもファイル作成が出来るようにしておいて下さい。
何もしなくても/home/postgres/ディレクトリには置けますよヾ(゚∀゚)ノ

さて、次はリストアです。
リストア作業は、基本的に空DBに行います。
Postgresの全体バックアップからDBをリストア
# su - postgres
※postgresユーザになる
$ psql -f pg_all.db testdb
※DB全体のバックアップから、testdbをリストア


PostgresのDBをリストア
# su - postgres
※postgresユーザになる
$ createdb testdb
※リストア先のDBを作成
$ pg_restore -d testdb testdb.db
※testdbのリストア

こんな感じで、全体バックアップをしてリストアする方法と、単体でバックアップしてリストアする方法があります。
どっちでも差はないんですが、好みの問題ですかね・・・。
オイラはファイル数が増えてもすぐに判別したいので、単体で取っています。

今回苦労したのは、上にも書いた通り文字コードなんですが、EUCしか認めていないDBから、UTF8しか認めてないサーバへの移動がこんなに面倒だとは思ってなかったとですよ(;´Д`)