Ultima attività 1 month ago

MySQL Backup Script

Revisione 4d0838a1bbd9fd3394bb94306c84a41dc6ea79e5

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