I'm unsure what's going on here:
I've got a backup script which runs fine under root. It produces a >300kb database dump in the proper directory.
When running it as a cron job with exactly the same command however, an empty gzip file appears with nothing in it.
The cron log shows no error, just that the command has been run.
This is the script:
#! /bin/bash DIR="/opt/backup" YMD=$(date "+%Y-%m-%d") su -c "pg_dump -U postgres mydatabasename | gzip -6 > "$DIR/database_backup.$YMD.gz" " postgres # delete backup files older than 60 days OLD=$(find $DIR -type d -mtime +60) if [ -n "$OLD" ] ; then echo deleting old backup files: $OLD echo $OLD | xargs rm -rfv fi
When changed to:
pg_dump -U postgres mydatabasename | gzip -6 > "$DIR/database_backup.$YMD.gz"
The same thing happens.
And the cron job:
01 10 * * * root sh /opt/daily_backup_script.sh
It produces a database_backup file, just an empty one. Anyone know what's going on here?
Ok, simplified to this but it's still not working via cron
#! /bin/bash DIR="/opt/backup" YMD=$(date "+%Y-%m-%d") pg_dumpall -U postgres > "$DIR/database_backup.$YMD"
01 10 * * * root /opt/daily_backup_script.sh