DEV Community

Discussion on: How to Automate Dumping for SQL Databases

Collapse
tsia profile image
tsia • Edited on

as far as i know at least bash always creates the output file

Screenshot

Thread Thread
obbap profile image
paschal Author

it actually does, just tried it. How will you have handled it?

Thread Thread
tsia profile image
tsia

i would just use the same if [ $? -eq 0 ]; thing.

maybe also add the date to the file name to prevent it from being overwritten on the remote server

Thread Thread
obbap profile image
paschal Author

That should work or we just move the scp command

pg_dump bla bla bla > dump.sql

if [$? -eq 0]; 
then
   scp -i "" ...
   echo "backup successful" && rm dump.sql
else
   cat dump.sql | mailx 'youremailaddress' -s "backup failure"
   echo "backup failure" && rm dump.sql
Thread Thread
tsia profile image
tsia

I would do it like this:

pg_dump... > dump.sql

if [$? -ne 0];
then
    exit 1
fi

scp... && rm dump.sql

usually all the output from a cronjob is sent to you via email so no need for mailx etc.
When pg_dump encounters an error it also should write it to stderr so it won't end up in your dump file. Instead it will be printed to your screen when you run the script manually or get sent to you via mail when it is started as a cronjob

Even shorter solution:

#!/bin/bash

set -o errexit

pg_dump... > dump.sql
scp...

set -o errexit will cause the script to end as soon as any command fails.