Hatena::ブログ(Diary)

猫大好き、ネットワーク大好き。 このページをアンテナに追加 RSSフィード

2006-11-17 朝は寒い

[]cronでPostgresのDBを自動的にバックアップする

まず、以下のようなスクリプトを作成した。スクリプト名はdb_dump.shである。

…は省略した部分。

	#!/bin/bash

	…
	pg_dump DB名 > ~/db.bkp/db.dump
	…

次に、db_dump.shを自動実行する為にcronに登録する

	$ crontab -e
	30 1 * * * /home/postgres/bin/db_dump.sh    *この行を入力
	$ crontabl -l
	# DO NOT EDIT THIS FILE - edit the master and reinstall.
	# (/tmp/crontab.10925 installed on Thu Nov 16 16:20:48 2006)
	# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
	30 1 * * * /home/postgres/bin/db_dump.sh  *しっかりと登録されている

以上で終わりのはずだったんだけど、このスクリプトは期待通りの動作をしない。

cronでdb_dump.shが実行されると、サイズが0のdb.dumpというファイルが出来上がる。

ネットで調べてみると、どうやらcron用のパスを設定していないのでpg_dumpが実行されていないとのことだった。

db_dump.shのpb_dumpを/usr/local/pgsql/bin/pg_dumpと指定することで期待通りの動作をする。

以下は修正版のスクリプトである。

	#!/bin/bash

	…
	/usr/local/pgsql/bin/pg_dump DB名 > ~/db.bkp/db.dump
	…

cronについてもっと調べる必要がありそうだ。


参考:

cron と pg_dump で自動バックアップでの問題

http://ml.postgresql.jp/pipermail/pgsql-jp/2006-April/020582.html

[]気になる記事:pg_dumpをcronで実行する際にエラー発生

問題

pg_dumpをcronで自動実行したいが、パスワードの入力が必要となりエラーが発生。

解決方法

cronを実行するユーザのホームディレクトリに.pgpassというファイルを作る。

参考リンク

[]気になる記事

他人が書いたスクリプトを見るのは勉強になります。

ログファイルでよくある

  • 何とか.1
  • 何とか.2
  • 何とか.3
  • 何とか.4

って、こうやって作られるのかーなるほどなるほど。

Connection: close