terça-feira, 5 de abril de 2011

Realizando (backup+compactação+envio) para servidor remoto MySQL.

#!/bin/bash
# JonMyBackup
# Script de Backup para MySQL
# 2009.11.26
# Modificado por Milton Caetano Filho 05/04/2011
# Adicionado função sendfiles para envio dos arquivos de backup remotamente entre dois servidores.
# OBS: É necessário chave RSA para conexao SSH entre os servidores sem PHRASE.
# - Efetua DUMP do banco MySQL em um arquivo .sql
# - Compacta em bzip2
# - Tira MD5Sum do arquivo, para checagem de integridade
# - Salva em pasta de backup com data e hora no filename.

# Data: Ano-Mes-Dia-Hora-Minuto-Segundo-Abreviação alfabética do fuso horário (por exemplo, BRT)
data=`date +%Y-%m-%d-%H-%M-%S-%Z`

# Variáveis de conexão
host="seuservidor"
user="seuusuario"
password="suasenha"
dbname="seubanco"

# Variáveis do script
backupdir="/bkp"
tmpdir="/tmp"
bz2file=$dbname-$data.tar.bz2
DUMP=$dbname.sql
md5file=$dbname-$data.md5

clear

dumpdb() {

# Checando se o diretório temporário existe. Se não, criando um.
if [ -e $tmpdir ]; then
echo 'DIRETORIO /TEMP OK'
else
echo 'CRIANDO DIRETORIO /TEMP'
mkdir $tmpdir
fi
# Executando DUMP
echo 'CRIANDO DUMP...'
/usr/bin/mysqldump --opt -h $host -u$user -p$password $dbname > $tmpdir/$DUMP

}

# Função para compactar o DUMP para tar.bz2, com a formatação correta da data no filename
bzip2compress() {

cd $tmpdir &&
echo 'COMPACTANDO DUMP...' &&
tar cjf $bz2file $DUMP &&
rm $DUMP

}

writemd5sum() {

echo 'CRIANDO MD5SUM...'
echo `md5sum $bz2file` > $md5file

}

moveFiles() {

# Checando se o diretório de Backup existe. Se não, criando um.
if [ -e $backupdir ]; then
echo 'DIRETORIO DE BACKUP OK'
else
echo 'CRIANDO DIRETORIO DE BACKUP'
mkdir $backupdir
fi
mv $tmpdir/$md5file $backupdir &&
mv $tmpdir/$bz2file $backupdir &&
echo 'REALIZADO BACKUP E ENVIADO PARA O DIRETORIO DE BACKUP!'

}

sendfiles() {

ping -q -c5 192.168.157.137 > /dev/null
if [ $? -eq 0 ]
then
scp $backupdir/* root@192.168.157.137:$backupdir
else
echo 'FALHA AO CONECTAR AO SERVIDOR REMOTO!'
sleep 2;
exit 1;
fi

}

main() {

dumpdb
bzip2compress
writemd5sum
moveFiles
sendfiles
}

main



Script original pode ser obitido em: Jonathas Rodrigues

Nenhum comentário:

Postar um comentário

Já aconteceu de você clicar no meu (Iniciar/Desligar) e o computador não ser desligado, pelo fato de o Windows ficar perguntando se você des...