Existem cerca de 15 bancos de dados para fazer backup diariamente. A senha está definida para o usuário postgres .
pg_dumpall
é executado no início do script para um backup completo. pg_dump
é executado no mesmo script para bancos de dados específicos em um loop .
Como o script será usado repetidamente usando o crontab, uma frase secreta deve ser passada como parâmetro adicional durante a execução desses comandos.
A solução atual está usando .pgpass
( * ) com chmod
0600, pertencente a postgres .
Onde a senha é necessária, cada comando é composto de:
PGPASSFILE=/path/to/.pgpass <command> <arguments pipes>
Por exemplo: PGPASSFILE=/path/to/.pgpass psql -tl | cut -d '|' -f1 | grep 'dbwildcard'
A mesma string PGPASSFILE é prefixada nos comandos pg_dump
e pg_dumpall
.
PGPASSFILE=/path/to/.pgpass
string em uma variável quebra o comando. E a segurança? É .pgpass
melhor ou pior na configuração do arquivo pg_hba.conf
:
local all postgres trust
Sempre há uma opção melhor.
Por último, o vacuumdb não parece funcionar com o PGPASSFILE. Como contornar o argumento da senha nesse caso?
Tags backup bash cron postgresql database