プロが教える店舗&オフィスのセキュリティ対策術

PostgreSQL 8.4に関する質問です。

サーバ:Linux、PostgreSQL 8.4
クライアント:Windows 7

Windowsマシンから、バッチファイルでサーバ上のPostgresのバックアップを取りたいのですが、
以下のコマンドをバッチファイルに記述して実行すると、
「パスワード:」というプロンプトが出て処理が止まってしまいます。

pg_dump.exe -h [DBサーバのIP] -U [ユーザ名] -F custom -b -v -f "C:\test.backup" "test"

パスワードを入れればバックアップはできるのですが、
パスワードの入力まで完全自動化するにはどうすればいいでしょうか。

Linux上のPostgresはSSL接続のみ許可するようになっています。
Windowsのタスクで毎日バックアップする運用を想定しています。

A 回答 (2件)

.pgpassで出来ると思います。

詳しくはこちらを参照してください。

http://www.postgresql.jp/document/9.2/html/libpq …

バックアップのトリガがクライアントというのが理解に苦しむのですが、サーバでcron動かしちゃダメなんでしょうか?
しかもバックアップファイルがローカルに出来ちゃいますよね。
ビックデータになった場合、下手するとパンクしそうですが大丈夫なんでしょうか…。

この回答への補足

.pgpass(Windowsでは「pgpass.conf」)で、目的の処理を実行できました。

以下サイトに、Windowsでの設定方法がありました。
http://sfi.hamazo.tv/e1350560.html

補足日時:2013/04/09 11:24
    • good
    • 0
この回答へのお礼

ご回答有難うございます。

バックアップ後のファイルはWindowsでやるので、
Linuxでバックアップ作成→ファイル転送まで自動化するなら
直接Windows上にバックアップを作った方が楽なのでは?と思った次第です。

ビッグデータ等を心配するような容量にはならないデータなので大丈夫です。

教えて頂いた.pgpassについて、試してみたいと思います。

お礼日時:2013/04/09 09:15

Windowsクライアントからバックアップするのではなく、


LinuxサーバでDBバックアップしてWindowsクライアントにダウンロードするという方法なら自動化できます。

しかし、私が携わったプロジェクトでは、サーバでバックアップしていましたが、自動化はしていませんでした。
その理由は、バックアップ前にハードディスクの空き容量を確認が必要だったからです。
シェルだけ用意しておいて、空き容量確認後にDBバックアップしていました。

バックアップは自動化してクライアントにダウンロード後にサーバから削除するなら、毎回サーバの空き容量を確認しなくてもいいので、サーバでのDBバックアップを自動化してもいいかもしれません。

私が携わったプロジェクトは月1回のバックアップだったのでサーバの空き容量確認が毎回必須でした。


1.Linux でDBバックアップ
・postgres の所有ユーザで pg_dump を実行する。
 -h, -U といったオプション指定が不要になると思います。


2.WindowsクライアントにDBバックアップファイル取得
・WinSCPとかを使ってLinuxサーバにあるDBバックアップファイルをWindowsクライアントにダウンロード
・サーバーのDBバックアップファイルを削除


手順は以上です。ご検討下さい。
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
Linuxでバックアップし、Windowsにダウンロードすればバックアップを取得できる事は知っています。
Windowsから「自動で」バックアップを行う方法を知りたかったのです。

お礼日時:2013/04/09 11:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す