LoginSignup
6
9

More than 5 years have passed since last update.

【postgress】pg_dumpでバックアップを定期的に保存

Posted at

条件
データーベースごとのバックアップ
シェルスクリプトを記述してcronで定期的にバックアップ
バックアップしたものは圧縮して保存
バックアップで一週間過ぎたものは削除される

シェルスクリプト

シェルスクリプトの処理
pg_dumpでダンプファイルの取得
tarコマンドで圧縮
保存期間のすぎたファイルの削除

バックアップ場所の作成(/var/backup/へ作成します)

#mkdir -p /var/backup/
#chmod 777 /var/backup/

シェルスクリプトの作成

#mkdir -p /var/backup_sh/
#vi /var/backup_sh/pg_backup.sh
pg_backup.sh
#!/bin/bash

# バックアップファイルを残しておく日数
PERIOD='+7'

# 日付
DATE=`date '+%Y%m%d'`

# バックアップ先ディレクトリ
SAVEPATH='/var/backup/'

# 先頭文字
PREFIX='project-'

# 拡張子
EXT='.sql'

# データーベース名
USER='user'
DBNAME='sampledb'


# バックアップ実行
pg_dump -U $USER $DBNAME > $SAVEPATH$PREFIX$DATE$EXT

# tar圧縮
tar --remove-files -P -zcvf $SAVEPATH$PREFIX$DATE$EXT.tar.gz $SAVEPATH$PREFIX$DATE$EXT

# 保存期間が過ぎたファイルの削除
find $SAVEPATH -type f -daystart -mtime $PERIOD -exec rm {} \;

シェルスクリプトが実行できるように実行権限付与

#chmod u+x /var/backup_sh/pg_backup.sh

cronで定期的に実行

毎日深夜2時に実行する例。

#crontab -e

crontab
00  2  *  *  * /var/backup_sh/pg_backup.sh

参考サイト

PostgreSQLのバックアップをcronで定期的におこなう方法

6
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9