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

参考サイト