今回はPostgreSQLデータベースのバックアップを定期的に取るために、cronでpgdumpを自動実行させる方法を紹介する。

バックアップファイル保存用ディレクトリの作成

まず、バックアップファイルを保存するためのディレクトリをあらかじめ用意しておく。

mkdir /home/hoge/bk

PostgreSQL接続情報設定ファイルの用意

次に、PostgreSQLの接続情報を記述した設定ファイルを用意する。

このファイルは、このあと用意するシェルファイルで使うことになる。

vim /home/hoge/pgdump/.pgpass

# 接続情報を記述
localhost:5432:dbname:dbuser:password

また、パーミッションも600に変更しておく。

chmod 600 /home/hoge/pgdump/.pgpass

pgdumpを実行するシェルファイルの用意

最後に、cronでpgdumpを実行するためのシェルファイルを用意する。

vim /home/hoge/pgdump/pgdump.sh

#!/bin/bash
VARDATE=`date +%Y%m%d`
VAROUTPUT="/home/hoge/bk/${VARDATE}.sql"
echo $VAROUTPUT
export PGPASSFILE=/home/hoge/pgdump/.pgpass
/usr/bin/pg_dump dbname -w -U dbuser > $VAROUTPUT 2>&1

簡単に中身を解説すると、/home/hoge/bk/に日付をファイル名としたdumpファイルを作成する仕組みとなっている。

あとはこのファイルをcronで実行するようにすればOK。

crontab -e 

TZ="Japan" 
59 23 * * * /bin/bash /home/hoge/pgdump/pgdump.sh

ここでは毎日23:59に定期実行するように設定した。