Raja's Exocortex

Borg Backup of Postgres and App

Borg backup of Advincare applicaton installed in Kumaran Medical Center infra.

#!/bin/bash

# Filename: /usr/local/sbin/borg-advincare.sh

# Backup postgres databases in directory format suitable for borg-backup
# pg_dump uses default gzip, borg uses no compression
#
# This script also integrates with healthchecks.io to indicate job status
#
# /etc/crontab entry:
#    # Run a borg backup of advincare DB and files ever hour at 15 mins
#    15 *  * * *   root onerror /usr/local/sbin/borg-advincare.sh

PG_DUMP='/usr/bin/pg_dump'
STAGING_DIR='/srv/postgres-backup'
APP_FILE_DIR='/srv/Advincare'

BORG='/usr/local/bin/borg'
REPO='/data/local/advincare-backup'

DBNAME='advincare'

WGET='wget -O /dev/null -q'
HC_PING='http://hc.kmc.local/ping/da1d2337-fc70-457a-a235-401ca2a4d915'

# Indicate job start
${WGET} "${HC_PING}/start"

# Abort when any command fails
set -euo pipefail

echo Starting pg_dump of $DBNAME at `date`
  rm -rf ${STAGING_DIR}/${DBNAME}
  echo $PG_DUMP -U backup_user -h localhost -F d -f ${STAGING_DIR}/${DBNAME} ${DBNAME}
       $PG_DUMP -U backup_user -h localhost -F d -f ${STAGING_DIR}/${DBNAME} ${DBNAME}
echo Completed pg_dump of $DBNAME at `date`

echo
echo

echo Starting borg create of $DBNAME and files at `date`
  echo $BORG create -s -C none ${REPO}::${DBNAME}-{now} ${STAGING_DIR}/${DBNAME} ${APP_FILE_DIR}
       $BORG create -s -C none ${REPO}::${DBNAME}-{now} ${STAGING_DIR}/${DBNAME} ${APP_FILE_DIR}
echo Completed borg create of $DBNAME and files at `date`

# Indicate job end
${WGET} "${HC_PING}"