#!/bin/bash # DO a flag for docker/standalone mysql SERVER=rn2 BACKUPDIR=/home/nathan/backup/sql DATE=$(date +%Y%m%d) USER=nathan PASSWORD=password REMOTE=alphavps REMOTEBACKUP=~/backups/sql/$SERVER # To make this be for a non-docker mysql instance, just omit everything up to 'mysql' DBS="$(sudo docker exec mariadb mysql -u$(echo $USER) -p$(echo $PASSWORD) -Bse 'show databases' | egrep -v '^Database$|hold$' | grep -v 'performance_schema\|information_schema\|mysql\|sys')" for DB in ${DBS[@]}; do mkdir -p $BACKUPDIR/$DB # Take the backup sudo docker exec -it mariadb mysqldump -u$(echo $USER) -p$(echo $PASSWORD) $DB > $BACKUPDIR/$DB/${DB}_${DATE} # Change the directory, to prevent backup to all path cd $BACKUPDIR # tarball the backup tar -zcf $DB/${DB}_${DATE}.gz $DB/${DB}_${DATE} # remove untarballed rm $BACKUPDIR/$DB/${DB}_${DATE} #ssh $REMOTE mkdir -p $REMOTEBACKUP/$DB #scp $BACKUPDIR/$DB/${DB}_${DATE}.gz $REMOTE:$REMOTEBACKUP/$DB done