Сценарий автоматического резервного копирования Postgresql работает в терминале, но не работает в задании CRON в MacOS

Я использовал обычный скрипт резервного копирования Postgresql из Automated_Backup_on_Linux:

#!/bin/bash
if [ ! $HOSTNAME ]; then HOSTNAME="localhost"; fi
if [ ! $USERNAME ]; then USERNAME="postgres"; fi
BACKUP_DIRECTORY="/Users/xeranta/Documents/AW/"
CURRENT_DATE=$(date "+%Y%m%d")
if [ -z "$1" ]; then
    pg_dump -U postgres -h localhost -p 5432 db_gocampus_unmul \
    > $BACKUP_DIRECTORY/db_gocampus_unmul.sql
else
    pg_dump $1 | gzip - > $BACKUP_DIRECTORY/$1_$CURRENT_DATE.sql.gz
fi

В терминале работает

$ ~/Documents/AW/./dbbackup.sh

Но не запускается, когда установлено в CRONTAB в MacOS Sierra версии 10.12.6

У меня есть эта ошибка

/Users/xeranta/Documents/AW/./backup.sh: строка 36: pg_dumpall: команда не найдена

1 ответ

Решение

Причиной проблемы является то, что pg_dump на вашем PATH в интерактивной оболочке, но не в работе cron.

Вы должны использовать абсолютный путь, подобный этому:

PGPATH=/wherever/your/postgres/binaries/are

"$PGPATH"/pg_dump ...
Другие вопросы по тегам