Мне нужно создать скрипт, который будет делать резервную копию моих баз данных 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