Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql postgres db备份在crontab之后很小_Postgresql_Crontab - Fatal编程技术网

Postgresql postgres db备份在crontab之后很小

Postgresql postgres db备份在crontab之后很小,postgresql,crontab,Postgresql,Crontab,我正在尝试用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个字节) 我可以在终端中很好地运行这个命令(文件大

我正在尝试用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个字节)

我可以在终端中很好地运行这个命令(文件大小与我的db匹配)


日志文件没有提到任何错误(grepcron/var/log/syslog)。知道什么可能会关闭吗?

解决这个问题的关键是要认识到,在bash中运行“same”命令和通过Cron运行不是一回事

例如,当通过Cron运行时,明显的默认值(.bash_profile/.pgpass/default binary path)是不同的,因此在bash上工作的可能在Cron中不工作

检查表:

  • 确保用完整路径替换Bzip2(例如CentOS/RHEL上的
    /usr/bin/Bzip2
  • 确保Cron命令可以读取“
    Store
    ”数据库(例如,添加-U Postgres将是一个很好的添加)。如果DB登录依赖于.pgpass文件,则它不能与cron一起工作。在这种情况下,您需要确保pg_hba.conf为此目的进行了配置(例如,您可以允许对特定的已知数据库/机器/用户组合进行“
    trust
    ”身份验证等)
  • 出于明显的原因,请确保/home/backups/postgres/…可供写入

  • 您能否尝试输出命令
    /usr/bin/pg_dump store
    从cron作业返回的内容?可能是cron运行的环境导致命令失败,而没有将您期望的内容返回到shell管道中。1)无法连接到数据库2)可能bzip2不在路径3)cron中overrun@wildplasser可能有什么事。Cron在非常受限的shell上运行,
    bzip2
    可能不在shell Cron运行的路径中。我会将这些命令分开,并确保它们在cron中分别成功运行。14字节是一个空bzip文件的大小--尝试创建一个文件长度为0的bzip文件--14字节。在Ubuntu14.04系统上,您列出的cron作业不会发生任何更改——我还将检查文件系统权限,并确保它在不使用date命令的情况下工作(只需将文件名设置到postgres用户目录)。还需要考虑以下几点:管道可以“吃掉”状态代码,而无需显式使用
    PIPESTATUS
    ,我怀疑cron会使用它,而bzip2只是重定向了它的stdout,而不是stderr。