#!/bin/bash # mysql database backup. # executed by duplicati run-script-before-required # required environment variables: # MYSQL_HOST # MYSQL_USER # MYSQL_PASSWORD # MYSQL_DATABASE # MYSQL_BACKUP_FOLDER #any error must stop execution set -e if [ -f "/etc/default/duplicati-mysql" ]; then export $(cat /etc/default/duplicati-mysql) fi if [ -f "~/.config/duplicati-mysql" ]; then export $(cat ~/default/duplicati-mysql) fi if [ $DUPLICATI__OPERATIONNAME == "Backup" ] then echo "Backup Job!!" else echo "Not a backup operation. exiting!" #OK, run operation exit fi if [ -z "$MYSQL_BACKUP_FOLDER" ]; then MYSQL_BACKUP_FOLDER="/var/db-dumps" fi if [ ! -d $MYSQL_BACKUP_FOLDER ]; then mkdir -p $MYSQL_BACKUP_FOLDER; fi TARGETFILENAME=${MYSQL_DATABASE}_dump_$(date -d "today" +"%Y%m%d%H%M%S").sql echo "dump file name:$TARGETFILENAME" if [ -f /tmp/${TARGETFILENAME} ] then rm /tmp/${TARGETFILENAME} fi mysqldump -h ${MYSQL_HOST} --user=${MYSQL_USER} -p"${MYSQL_PASSWORD}" ${MYSQL_DATABASE} > /tmp/${TARGETFILENAME} if [ x$(find "$MYSQL_BACKUP_FOLDER" -prune -empty) = x"$MYSQL_BACKUP_FOLDER" ]; then echo "folder is empty... ignoring clean db dump folder" else rm -r ${MYSQL_BACKUP_FOLDER}/* fi mv /tmp/${TARGETFILENAME} ${MYSQL_BACKUP_FOLDER}/${TARGETFILENAME}