¿Cómo pasar la contraseña a pg_dump?

Resuelto mpen asked hace 14 años • 19 respuestas

Estoy intentando crear un cronjob para hacer una copia de seguridad de mi base de datos todas las noches antes de que suceda algo catastrófico. Parece que este comando debería satisfacer mis necesidades:

0 3 * * * pg_dump dbname | gzip > ~/backup/db/$(date +%Y-%m-%d).psql.gz

Excepto que después de ejecutar eso, espera que escriba una contraseña. No puedo hacer eso si lo ejecuto desde cron. ¿Cómo puedo pasar uno automáticamente?

mpen avatar May 24 '10 06:05 mpen
Aceptado

Cree un .pgpassarchivo en el directorio de inicio de la cuenta que pg_dumpse ejecutará como.

El formato es:

hostname:port:database:username:password

Luego, configure el modo del archivo en 0600. De lo contrario, será ignorado.

chmod 600 ~/.pgpass

Consulte la documentación de Postgresql libpq-pgpass para obtener más detalles.

araqnid avatar May 23 '2010 23:05 araqnid

O puede configurar crontab para ejecutar un script. Dentro de ese script puedes configurar una variable de entorno como esta: export PGPASSWORD="$put_here_the_password"

De esta manera, si tiene varios comandos que requieren una contraseña, puede ponerlos todos en el script. Si la contraseña cambia solo tienes que cambiarla en un lugar (el script).

Y estoy de acuerdo con Joshua, el uso pg_dump -Fcgenera el formato de exportación más flexible y ya está comprimido. Para obtener más información, consulte: documentación pg_dump

P.ej

# dump the database in custom-format archive
pg_dump -Fc mydb > db.dump

# restore the database
pg_restore -d newdb db.dump
Max avatar Nov 14 '2011 14:11 Max