Skip to content

Instantly share code, notes, and snippets.

@racerxdl
Created February 27, 2014 02:20
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 racerxdl/9243049 to your computer and use it in GitHub Desktop.
Save racerxdl/9243049 to your computer and use it in GitHub Desktop.
MySQL Backup Script
#!/bin/bash
LOCKFILE=/tmp/bkpmysql
if [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}`
then
echo "Já rodando!"
exit
fi
trap "rm -f ${LOCKFILE}; exit" INT TERM EXIT
echo $$ > ${LOCKFILE}
DB_USER='usuario'
DB_PASS='senha'
DB_PARAM='--all-databases --add-drop-table --add-locks --extended-insert --single-transaction -quick'
DESTINO=/dados/backup/data/mysql/
TMPDESTINO=/dados/backup/tmp/mysql/
NOME=auto
QTDE=5
CONTADOR=0
PLATFORM=$(uname)
PARSIZE=100m
if [ ! -d $DESTINO ]; then
mkdir $DESTINO
fi
ULTIMO_BACKUP=`find $DESTINO -maxdepth 1 -name "$NOME.*" | sort -nr | head -n 1`
find $DESTINO -maxdepth 1 -name "$NOME.*" | sort -nr | tail -n +`expr $QTDE + 1` | while read antigo; do
rm -rf "$antigo"
done
ID=`date +%Y-%m-%d-%H-%M-%S`
BACKUP_ATUAL="$DESTINO/$NOME.$ID"
echo "- Criando pasta $BACKUP_ATUAL"
mkdir $BACKUP_ATUAL
if [ "$ULTIMO_BACKUP" != "" ]; then
echo "- Copiando pasta $ULTIMO_BACKUP para $BACKUP_ATUAL"
if [ "$PLATFORM" == "FreeBSD" ]; then
pasta=$(pwd)
cd $ULTIMO_BACKUP
pax -rwl -pe . $BACKUP_ATUAL
cd $pasta
fi
fi
echo "- Efetuando Backup do MySQL para $TMPDESTINO"
mysqldump $DB_PARAM -u $DB_USER -p$DB_PASS > $TMPDESTINO/mysql.sql
echo "- Compactando $TMPDESTINO para $BACKUP_ATUAL com partes de tamanho $PARSIZE"
tar cz $TMPDESTINO/* | split -b $PARSIZE - $BACKUP_ATUAL/mysql.tar.gz
echo "- Limpando $TMPDESTINO"
rm -fr $TMPDESTINO/*
rm -f ${LOCKFILE}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment