Para um one-liner, como migrar um banco de dados, você pode usar --dbname
seguido por uma cadeia de conexão (incluindo a senha), conforme indicado no manual pg_dump
Em essência.
pg_dump --dbname=postgresql://username:password@127.0.0.1:5432/mydatabase
Nota: Certifique-se de usar a opção em --dbname
vez da mais curta -d
e use um prefixo de URI válido postgresql://
ou postgres://
.
O formulário URI geral é:
postgresql://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]
A melhor prática no seu caso (tarefa repetitiva no cron) não deve ser feita devido a problemas de segurança. Se não fosse o .pgpass
arquivo, eu salvaria a cadeia de conexão como uma variável de ambiente.
export MYDB=postgresql://username:password@127.0.0.1:5432/mydatabase
então tenha no seu crontab
0 3 * * * pg_dump --dbname=$MYDB | gzip > ~/backup/db/$(date +%Y-%m-%d).psql.gz