Назад | Перейти на главную страницу

PostgreSQL Backup WAL ShellScript

Мне нужно создать скрипт, который будет делать резервную копию моих баз данных psql, я хочу использовать режим архива wal, а не pg_dump. Я написал это из скрипта, который нашел в сети:

#!/bin/bash
#Test Script BackupSQL
PG_SQL_CMD=/opt/novell/idm/Postgres/bin/psql
PG_SQL_USER=postgres
PG_SQL_DB=password
PG_SQL_HOST=localhost

PG_BACKUP_LABEL='backup_label'

PG_BACKUP_START="$PG_SQL_CMD -U $PG_SQL_USER -h $PG_SQL_HOST -c \"select pg_start_backup('$PG_BACKUP_LABEL')\""
PG_BACKUP_STOP="$PG_SQL_CMD -U $PG_SQL_USER -h $PG_SQL_HOST -c \"select pg_stop_backup()\""


echo $PG_BACKUP_START
eval $PG_BACKUP_START
sleep 2
echo $PG_BACKUP_STOP
eval $PG_BACKUP_STOP

Моя проблема: скрипт запрашивает у меня пароль psql, когда я его запускаю. Я не нашел способа указать пароль в команде psql, как это можно сделать в mysql с параметром -p.

Как я могу заставить скрипт отвечать на запрос?

Попробуйте использовать .pgpass файл, чтобы не вводить пароль.
Видеть: http://www.postgresql.org/docs/8.3/static/libpq-pgpass.html

Или вы можете использовать синтаксис оболочки, подобный следующему:

 psql -h database.server.com -U username <<EOF
 sekritpassword
 EOF

Или в качестве последнего варианта вы должны иметь возможность использовать переменные среды PGUSER и PGPASSWD.

Если у вас есть следующая строка в вашем файле pg_hba.conf, вам не нужно вводить пароль. Вам просто нужно запустить эту команду как пользователь postgres.

local   all         all           ident