サーバ停止は、次で説明する「サービス」画面でも可能です。ともかくいったん停めてデータディレクトリへの書き込みを全て終了させてから、好きな場所にディレクトリごとコピー(移動でもいいけど、万一に備えて)。今回、インストール時は下のようにC:/PostgreSQL/9.3/に入れており、そこのdataが元のデータディレクトリになります。
Cドライブ ┗ PostgreSQL ┗ 9.3 ┣ bin ┣ data ← 元のデータディレクトリ ┣ doc ┣ ……
7月13日追記:移行先ディレクトリへのアクセス権限について
移行先ディレクトリを準備したら、ユーザ「Network Service」またはグループ「Authenticated Users」にアクセス権限(フルコントロールまたは変更)があるか確認し、なければ付与します。 Network ServiceはWindows版PostgreSQLの「サービス」の実行ユーザで、これがグループ「Authenticated Users」に所属しています(参考:VBForums : Is NT AUTHORITY/NETWORK SERVICE considered an authenticated user?)。Win版PostgreSQLインストーラでは、データディレクトリにNetwork Serviceのフルコントロール権限が設定されていると思います。
たくさん表示される「サービス」から、postgresql-9.3という名前のを ↓ 見つけてダブルクリック
↓ PostgreSQLのサービスの詳細が出ます。中ほどの「実行ファイルのパス」がPostgreSQL起動時のコマンドで、いろいろ引数がありますが-D の次がデータディレクトリの場所。これを引っ越し先のディレクトリに変えればいいわけですが、この画面では変更できません。そこで次に、レジストリを修正します。
この詳細画面で「サービスの状態」が停止になっていない場合は、ボタンで停止できます。pgAdminを使わず最初からそうやっても可。あと、PostgreSQL起動コマンドpg_ctl.exeの詳細は下記にあります。
» PostgreSQL 9.3.2文書 : pg_ctl -- PostgreSQLサーバの初期化、起動、停止、制御
レジストリをルートから辿るのは面倒なので、メニューの編集 → 検索画面を開きます。探すためのキーワードは、先ほどのPostgreSQLサービスの詳細に行き当たれば何でもよく、pg_ctlあたりが少ない文字数かつ他ともかぶりにくく、良いかと。一応、修正する場所は ↓ です。
\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\postgresql-9.3
当該レジストリを見つけたら ↓ ImagePathというキーを開きます。これがPostgreSQL起動コマンドで、-D の次を、新しいデータディレクトリの場所に書き替えます。修正はこれだけ。
ところでレジストリには、同じ内容のPostgreSQLサービス詳細が別の場所にもあると思います(~ControlSet001でなくCurrentControlSetとか)。場合によってはCurrentControlSetを修正しないと反映されない、あるいはWindowsを再起動するまで変わらない等、いろいろなケースがあるかもしれず、自分も正直よく分かりません。ともかく今回はControlSet001を編集するだけで済みました。レジストリについては下記が詳しいです。
» 0から楽しむパソコン講座 : レジストリについて
ともかく今回は ↓ きちんと反映されてました。コマンドに書き込んだデータディレクトリに、実際にデータがあるのを確認してPostgreSQLサービスの開始ボタンを押します。正常に開始できれば、お疲れ様でした。
↓ 念のためpsqlで接続しshow data_directory;を打って確認したところ。なおpsqlの最初に出ている警告は、自分が設定したコマンドプロンプト上の文字コード(コードページ)のせいで、今回の内容とは無関係です。