2010/2/13 sergio barrera <xpbarrera@xxxxxxxxxxx>
Buenas compañeros!Tengo un problema al cual no le encuentro la lógica. Mi idea es realizar una copia de seguridad de una base de datos PostgresSQL diaria bajo el sistema operativo Linux-Ubuntu 9. Para ello primero, he ejecutado el siguiente comando en el terminal, obteniendo una respuesta esperada:$ pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f /home/sbarrera/BACKUP/copia_BD_Openbravo/fechaC.backup openbravoAl ejecutar dicha sentencia, se me genera un archivo con nombre "fechaC.backup", que es el resultado esperado. El segundo paso es realizar un script para que pueda ser lanzado diariamente por el cron y ahí es donde tengo el problema. El script que me he generado(respaldoBD.sh) es tan sencillo como:#!/bin/sh
pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f /home/sbarrera/BACKUP/copia_BD_Openbravo/fechaC.backup openbravoEl problema es que cuando ejecuto en el terminal
$source respaldoBD.sh
me reporta el siguiente error : »: FATAL: no existe la base de datos «openbravoa base de datos «openbravo
pg_dump: *** se abortó por un errorNo entiendo esto si estoy ejecutando la misma sentencia pero en este caso desde un script. ¿Porqué podria pasar esto?Nota : tengo el archivo de .pgpass con permisos 0600 y de valor :*:*:*:postgres:postgres
*:*:*:*:postgresEspero vuestra ayuda porque ya no se lo que probar, Muchas Gracias
Si usas el crontab de root, puedes invocar a pg_dump con el comando su. Sería mas o menos asi:
(dentro del script)
# volcado en formato 'archive'
su sbarrera -c '/usr/pg_dump -Fc mibasededatos' > /algun/lugar/backus/backup-${NOW}.dmp
# tambien volcar en texto plano, sql
su sbarrera -c '/usr/bin/pg_dump mibasededatos' > /algun/lugar/backus/backup-${NOW}.sql
Saludos,
diego