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