Есть около 15 баз данных для резервного копирования на ежедневной основе. Пароль установлен для пользователя postgres .

pg_dumpall выполняется в начале скрипта для полного резервного копирования. pg_dump в том же сценарии для конкретных баз данных в цикле for.

Поскольку скрипт будет использоваться повторно с использованием crontab, во время выполнения этих команд в качестве дополнительного параметра должна быть передана парольная фраза.

Текущее решение использует .pgpass (*) с chmod 0600, принадлежащим postgres.

Там, где требуется пароль, каждая команда состоит из:

PGPASSFILE=/path/to/.pgpass <command> <arguments pipes>

Например :
PGPASSFILE=/path/to/.pgpass psql -tl | cut -d '|' -f1 | grep 'dbwildcard'

Одна и та же строка PGPASSFILE имеет префикс перед командами pg_dump и pg_dumpall .

  • Можно ли сделать это лучше, изящнее, короче?
    Передача PGPASSFILE=/path/to/.pgpass строки в переменной прерывает команду.
  • Как насчет безопасности? Лучше или хуже .pgpass из настройки файла pg_hba.conf :

    местное все доверие postgres

    Там всегда лучший вариант.

  • Последнее, что, кажется, вакуумный db не работает с PGPASSFILE. Как обойти аргумент пароля в этом случае?

(*) https://www.postgresql.org/docs/current/static/libpq-pgpass.html
https://www.postgresql.org/docs/current/static/app-pg-dumpall.html

0