Сценарий автоматического резервного копирования 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 ...