Назад | Перейти на главную страницу

Задание Cron для резервного копирования Postgresql не работает

Я установил задание cron для резервного копирования базы данных каждый час.

/ etc / crontab

0 */1 * * * sh /opt/post.sh

/opt/post.sh

pg_dump -U postgres db_name > /home/golp/Desktop/backup.sql

Для аутентификации я использую .pgpass файл.

localhost:5432:db_name:postgres:password

Что касается разрешений,

chmod 0600 ~/.pgpass
chown postgres:postgres /home/golp/Desktop/

Кажется, что задание cron запускается каждый час (я проверил журнал). Я обнаружил, что файл резервной копии, созданный заданием cron, пуст. Я использую CentOS 7 1503 и Postgresql 9.5

НОТА: Когда я бегу pg_dump -U postgres db_name > /home/golp/Desktop/backup.sql как пользователь root в терминале резервная копия создается должным образом.

Пожалуйста, помогите.

Попробуйте указать полный путь к pg_dump в своем скрипте.

Если вы изменяете файл /etc/crontab вручную, вам необходимо добавить следующую запись (для пользователя root):

0 * * * * root sh /opt/post.sh

Вам не хватает имени пользователя root для запуска задания cron как. Это необходимо, потому что это глобальный файл (а не файлы для каждого пользователя в: /var/spool/cron/).

Редактировать: Чтобы помочь диагностировать ошибки задания cron, вы можете изменить строку задания cron следующим образом:

0 * * * * root sh /opt/post.sh >> /tmp/cron.log 2>&1

Это перенаправит все сообщения stdout и stderr в файл /tmp/cron.log (режим добавления, чтобы не перезаписывать его каждый раз при запуске задания cron).