Edited at

Redmineのバックアップ ~パスワード入力不要でPostgreSQLをバックアップ~

Redmineのバックアップスクリプトで、

PostgreSQLのパスワード入力をスキップする方法があったので、備忘として記載します。


1. ".pgpass" ファイルの作成

公式ドキュメントによると、ユーザのホームディレクトリにパスワードを保存可能な旨記載があるので、".pgpass"ファイルに以下の書式で作成していきます。


hostname:port:database:username:password


バックアップユーザのホームディレクトリに移動し、".pgpass" ファイルを作成します。

$ cd ~

$ echo "*:*:*:*:password" > .pgpass

権限はグループ、他のユーザアクセスをすべて拒否する必要があるため(緩くするとファイルは無視される)、必要最小限の権限(600)に変更します。

$ sudo chmod 0600 ~/.pgpass


2. バックアップファイル保存フォルダ作成

$ mkdir ~/backup


3. スクリプト作成

$ cat redmine_backup.sh

#!/bin/sh

pg_dump -U redmine -h localhost -Fc -c -f ~/backup/db_redmine_`date "+%Y%m%d_%H%M%S"`.car redmine
tar -zcvf ~/backup/files_`date "+%Y%m%d_%H%M%S"`bak.tar.gz /var/lib/redmine

find -name "db_redmine_*" -mtime +30 -exec rm {} \;
find -name "files_*" -mtime +30 -exec rm {} \;

※別のサーバにデータを退避する必要がある場合は、rsyncコマンド等を追加してください。


4. 実行権付与

$ chmod +x redmine_backup.sh


5. cronによるスケジューリング

毎日2時にバックアップスクリプトを実行します。

$ crontab -e

00 2 * * * /作成したスクリプトの配置場所/.redmine_backup.sh


参考サイト