Я пытаюсь сделать резервную копию баз данных postgres. Я запускаю задание cron, чтобы сделать это. Проблема в том, что postgres работает под пользователем postgres, и я не думаю, что смогу запустить задание cron под пользователем ubuntu. Я попытался создать задание cron под пользователем postgres, но это тоже не сработало. Мой скрипт, если войти в систему как пользователь postgres, работает нормально. Вот мой сценарий
#!/bin/bash
# Location to place backups.
backup_dir="/home/postgres-backup/"
#String to append to the name of the backup files
backup_date=`date +%d-%m-%Y`
#Numbers of days you want to keep copie of your databases
number_of_days=30
databases=`psql -l -t | cut -d'|' -f1 | sed -e 's/ //g' -e '/^$/d'`
for i in $databases; do
if [ "$i" != "template0" ] && [ "$i" != "template1" ]; then
echo Dumping $i to $backup_dir$i\_$backup_date
pg_dump -Fc $i > $backup_dir$i\_$backup_date
fi
done
find $backup_dir -type f -prune -mtime +$number_of_days -exec rm -f {} \;
if I do
sudo su - postgres
Я понимаю
-rwx--x--x 1 postgres postgres 570 Jan 12 20:48 backup_all_db.sh
и когда я делаю
./backup_all_db.sh
резервная копия создается в /home/postgres-backup/
однако с cronjob он не работает, независимо от того, добавляю ли я задание cron под postgres или под ubuntu.
вот мой хронджоб
0,30 * * * * /var/lib/pgsql/backup_all_db.sh 1> /dev/null 2> /home/cron.err
Будем признательны за любую помощь
${backup_dir}
и т. д.? - person wildplasser   schedule 13.01.2015