Skip to content

Instantly share code, notes, and snippets.

@carlosleonam
Forked from jbearden0/Firebird backup script
Created January 21, 2022 21:50
Show Gist options
  • Save carlosleonam/74e73e3bc99b04a36ed1e1d3a2a4b784 to your computer and use it in GitHub Desktop.
Save carlosleonam/74e73e3bc99b04a36ed1e1d3a2a4b784 to your computer and use it in GitHub Desktop.
#!/bin/bash
BACKUPTIME="$(date '+%Y%m%dT%H%M%S%z')"
BACKUPLOC=/home/backups
DBDIR=/var/lib/firebird/2.5/data
DBNAME=rsgdata
PASSLOC=/etc/firebird/2.5/SYSDBA.password
LEVEL=${1:-0}
COUNT=8
FILETOTAL=$(stat -c%s "$DBDIR/$DBNAME.gdb")
PARTTOTAL=$(expr $(df -k $BACKUPLOC | sed -n 2p | awk '{print $2}') \* 1000)
PARTAVAIL=$(expr $(df -k $BACKUPLOC | sed -n 2p | awk '{print $3}') \* 1000)
ESTIMATED=$(expr $(expr $(expr $PARTTOTAL - $PARTAVAIL - $FILETOTAL) \* 100) / $PARTTOTAL)
if [ $ESTIMATED -lt 20 ]; then
echo "Not enough disk space to backup $DBDIR/$DBNAME.gdb to $BACKUPLOC !"
elif [ $FILETOTAL -gt 6000000000 ]; then
echo "Database file $DBDIR/$DBNAME.gdb is too big!"
elif [ ! -e $PASSLOC ]; then
echo "Database password file does not exist!"
else
source $PASSLOC
# /usr/bin/nbackup -U $ISC_USER -P $ISC_PASSWORD -B ${LEVEL} ${DBNAME} ${BACKUPLOC}/$(hostname).${DBNAME}-${BACKUPTIME}-level${LEVEL}.nbk
/usr/bin/gbak -user $ISC_USER -pas $ISC_PASSWORD -b localhost:${DBNAME} ${BACKUPLOC}/$(hostname).${DBNAME}-${BACKUPTIME}.gbk
/bin/gzip ${BACKUPLOC}/$(hostname).${DBNAME}-${BACKUPTIME}.gbk
fi
REMOVE=$(/usr/bin/find ${BACKUPLOC} -maxdepth 1 -type f -name '*nbk*' | sort -n -r | tail -n +$(( $COUNT + 1)))
if test -n "${REMOVE}"; then
rm ${REMOVE}
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment