【发布时间】:2014-08-23 22:26:45
【问题描述】:
我们正在使用 cron 作业在 ubuntu 12.04 上备份 postgres 数据库。 pg_dump 命令已添加到 bash 脚本中,该脚本一直在运行以备份 sqlite。命令是:
pg_dump -U postgres -Fc mydbname > /home/myback_$now #$now append last 2 digits of date to file name
在与 bash 脚本相同的主目录中创建了一个 .pgpass 文件:
localhost:5432:mydbname:postgres:mypassword
chmod 600 .pgpass 也是如此。
问题是生成了备份文件但是大小都是0。备份日志中出现错误:
pg_dump: [archiver (db)] connection to database "mydbname" failed: fe_sendauth: no password supplied
pg_dump 似乎没有正确引用 .pgpass 中的密码。备份配置中可能缺少什么?谢谢。
【问题讨论】:
-
cron以不同的用户身份运行命令,除非您通过crontab -e使用您的用户 crontab。您究竟是如何创建 cron 作业的以及在哪里创建的?你到底是在哪里创建 pgpass 文件的? -
.pgpass 位于主目录中。我们使用 sudo crontab -e 创建 cron 作业。该工作适用于 sqlite3。 postgres 的作业是在同一个 bash 文件中的 sqlite3 作业之后添加的。
-
哪个主目录?准确的路径。并显示完整的 crontab 行。
-
根目录的主子目录。
-
/root/.pgpass?那是确切的路径吗?并显示完整的 crontab 行。
标签: postgresql cron backup