我正在尝试使用crontab进行简单的postgres备份。这是我使用的命令:
# m h dom mon dow user command
49 13 * * * postgres /usr/bin/pg_dump store | bzip2 > /home/backups/postgres/$(date +"\%Y-\%m-\%d")_store.sq.bz2
创建了备份文件,但它非常小(看起来像14个字节)。
我可以在终端中运行此命令(使用与我的数据库匹配的文件大小)。
日志文件没有提到任何错误(grep CRON / var / log / syslog)。知道可能会发生什么吗?
答案 0 :(得分:0)
解决这个问题的关键,就是要意识到运行“同样的”#39;在bash中执行命令并通过Cron运行并不是同样的事情!
例如当通过Cron运行时,明显的默认值(.bash_profile / .pgpass /默认二进制路径)不相同,因此对bash有效的方法在Cron中可能不起作用。
查看清单:
/usr/bin/bzip2
)Store
' Cron命令可以读取数据库(例如,添加-U Postgres将是一个很好的补充)。如果数据库登录依赖于.pgpass文件,它将无法与cron一起使用。在这种情况下,您需要确保为此目的配置pg_hba.conf(例如,您可以允许对特定已知数据库/计算机/用户进行trust
'身份验证组合等。