我们正在使用cron job在ubuntu 12.04上备份postgres数据库。 pg_dump
命令已添加到已运行备份sqlite的bash脚本中。命令是:
pg_dump -U postgres -Fc mydbname > /home/myback_$now #$now append last 2 digits of date to file name
.pgpass文件是在与bash脚本相同的主目录中创建的:
localhost:5432:mydbname:postgres:mypassword
也chmod 600 .pgpass
。
问题是生成了备份文件,但它们的大小都是0.在备份日志中,有一个错误:
pg_dump: [archiver (db)] connection to database "mydbname" failed: fe_sendauth: no password supplied
似乎{。{1}}未正确引用.pgpass中的密码。备份配置中可能缺少什么?感谢。
答案 0 :(得分:1)
如果您在评论中说明,那么
sudo crontab -e
然后您正在编辑root的crontab,而不是您自己用户的crontab。
因此,将使用的主目录将是root的主目录(通常为/ root,但我不确定Ubuntu)。
虽然您没有明确说出来,但我猜您将.pgpass文件放在用户的主目录中。
以root身份运行pg_backup没有必要,甚至不是一个好主意,因此我建议将备份作业放在普通用户的crontab中。