我从 cron 作业(debian“wheezy”上的 Postgres 9.3)每晚运行一次 pg_basebackup,但备份一直失败。它实际上会创建输出,但 .tar 文件已损坏且无法提取。我去了我的日志文件,却发现它是 0 字节。谁能告诉我我的设置有什么问题?为什么日志文件没有保存 pg_basebackup 的输出?
#!/bin/sh
PATH=$PATH:/usr/bin
export PATH
BASEBACKUP_LOG=/var/log/postgresql/basebackup.log
[ -f $BASEBACKUP_LOG ] && mv -f $BASEBACKUP_LOG $BASEBACKUP_LOG.old
BACKUP_PATH=/path/to/backup/$(date +%F)
pg_basebackup -D $BACKUP_PATH -Ft -z -v 2>&1 | ts '%F %T %Z' &> $BASEBACKUP_LOG
我正在阅读 pg_basebackup 行的方式,我认为它应该将 stderr 重定向到 stdout,将组合流通过管道传输到 ts 函数(将时间戳添加到一行)并将其写入 $BASEBACKUP_LOG 的路径。我在这里遗漏了一些明显的东西吗?
根据下面给出的建议,我添加了对 ts 和 pg_basebackup 路径的显式引用(都位于 /usr/bin 中)。行为没有变化。