Skip to content

Instantly share code, notes, and snippets.

@zunpiau
Last active January 22, 2018 14:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zunpiau/4f236409ad422911013ed9d123d8ee2e to your computer and use it in GitHub Desktop.
Save zunpiau/4f236409ad422911013ed9d123d8ee2e to your computer and use it in GitHub Desktop.
PostgreSQL Backup Script
#!/bin/bash
##########################
## Configure ##
##########################
LOCALDIR=
DATABASE_PASSWORD=
DATABASE_USER=
DATABASES=(
)
HISTORY=3
###########################
## Main ##
###########################
log() {
echo -e "$(date "+%Y-%m-%d %T")" "$1" >> ${LOCALDIR}${DATE}.log
}
export PGPASSWORD=${DATABASE_PASSWORD}
DATE=$(date +%Y-%m-%d)
DATETIME=$(date +%Y-%m-%d_%H-%M)
DELETEDATE=$(date --date "-$HISTORY DAY" +%Y-%m-%d)
TEMPDIR=$(mktemp -d)/
log "backup start"
if [ ! -d "${LOCALDIR}" ]; then
mkdir -p ${LOCALDIR}
fi
if [ ! -d "${TEMPDIR}" ]; then
mkdir -p ${TEMPDIR}
fi
for database in ${DATABASES[@]}; do
pg_dump -U postgres -d ${database} -f ${TEMPDIR}${DATETIME}_${database}.sql
if [ $? -ne 0 ]; then
log "databases ${database} backup failed"
exit 1
fi
log "backup database ${database}"
done
tar -zcf ${LOCALDIR}${DATETIME}.tar.gz -C ${TEMPDIR} . --exclude .sql
rm -rf ${TEMPDIR}
rm -f ${LOCALDIR}${DELETEDATE}*.tar.gz
rm -f ${LOCALDIR}${DELETEDATE}.log
log "backup finish"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment