mysql.sh
· 1.5 KiB · Bash
Ham
#!/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}
| 1 | #!/bin/bash |
| 2 | LOCKFILE=/tmp/bkpmysql |
| 3 | if [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}` |
| 4 | then |
| 5 | echo "Já rodando!" |
| 6 | exit |
| 7 | fi |
| 8 | |
| 9 | trap "rm -f ${LOCKFILE}; exit" INT TERM EXIT |
| 10 | echo $$ > ${LOCKFILE} |
| 11 | |
| 12 | DB_USER='usuario' |
| 13 | DB_PASS='senha' |
| 14 | DB_PARAM='--all-databases --add-drop-table --add-locks --extended-insert --single-transaction -quick' |
| 15 | |
| 16 | DESTINO=/dados/backup/data/mysql/ |
| 17 | TMPDESTINO=/dados/backup/tmp/mysql/ |
| 18 | NOME=auto |
| 19 | QTDE=5 |
| 20 | CONTADOR=0 |
| 21 | PLATFORM=$(uname) |
| 22 | PARSIZE=100m |
| 23 | |
| 24 | if [ ! -d $DESTINO ]; then |
| 25 | mkdir $DESTINO |
| 26 | fi |
| 27 | ULTIMO_BACKUP=`find $DESTINO -maxdepth 1 -name "$NOME.*" | sort -nr | head -n 1` |
| 28 | find $DESTINO -maxdepth 1 -name "$NOME.*" | sort -nr | tail -n +`expr $QTDE + 1` | while read antigo; do |
| 29 | rm -rf "$antigo" |
| 30 | done |
| 31 | ID=`date +%Y-%m-%d-%H-%M-%S` |
| 32 | BACKUP_ATUAL="$DESTINO/$NOME.$ID" |
| 33 | echo "- Criando pasta $BACKUP_ATUAL" |
| 34 | mkdir $BACKUP_ATUAL |
| 35 | if [ "$ULTIMO_BACKUP" != "" ]; then |
| 36 | echo "- Copiando pasta $ULTIMO_BACKUP para $BACKUP_ATUAL" |
| 37 | if [ "$PLATFORM" == "FreeBSD" ]; then |
| 38 | pasta=$(pwd) |
| 39 | cd $ULTIMO_BACKUP |
| 40 | pax -rwl -pe . $BACKUP_ATUAL |
| 41 | cd $pasta |
| 42 | fi |
| 43 | fi |
| 44 | |
| 45 | echo "- Efetuando Backup do MySQL para $TMPDESTINO" |
| 46 | mysqldump $DB_PARAM -u $DB_USER -p$DB_PASS > $TMPDESTINO/mysql.sql |
| 47 | echo "- Compactando $TMPDESTINO para $BACKUP_ATUAL com partes de tamanho $PARSIZE" |
| 48 | tar cz $TMPDESTINO/* | split -b $PARSIZE - $BACKUP_ATUAL/mysql.tar.gz |
| 49 | echo "- Limpando $TMPDESTINO" |
| 50 | rm -fr $TMPDESTINO/* |
| 51 | rm -f ${LOCKFILE} |