#!/bin/sh
#Para a checagem de Sintaxe use a opção −n. ex: #!/bin/sh -n
# Script de backup
# hachidbackupservers.sh − Faz backup de Servidores usando Rsync
### Inicialização das variáveis
#
#@autor: Richardson Lima
#@email2:securityfusion@gmail.com
#
#ROOT_UID=0 # Apenas os usuários com $UID 0 tem privilégios root.
#LINES=500 # Número padrão de linhas salvas.
#E_XCD=66 # Não é possível alterar o diretório?
#E_NOTROOT=67 # Non−root, saída erro.
### Habilite para depuração
# DEBUG=1 # depuração: 0 desliga, 1 liga
### função de depuração
#Debug(){ [ “$DEBUG” = 1 ] && echo “$*” ; }
#Servidores
MAILSERVER=’192.168.0.x’
MYSQLSERVER=’192.168.0.x’
SMBSERVER=’192.168.0.x’ # Servidor Samba
SVNSERVER1=’192.168.0.x’ # Servidor SVN1
SVNSERVER2=’192.168.0.x’ # Servidor SVN2
CVSSERVER=’192.168.0.x’ # Servidor CVS
### MAILSEVER
HOME_MAIL_TMP_DIR=’/algumDiretorio/bkp-mail/tmp-home-mail/’ # Diretório de armazenamento temporario
VAR_MAIL_TMP_DIR=’/algumDiretorio/bkp-mail/tmp-var-mail/’ # Diretório de armazenamento temporario
ETC_MAIL_TMP_DIR=’/algumDiretorio/bkp-mail/tmp-etc-mail/’ # Diretório de armazenamento temporario
BKP_MAIL_DIR=’/algumDiretorio/bkp-mail/’ # Diretório de armazenamento dos compactados
### MYSQLSERVER
BACKUP_REMOTO_DIR1=’/algumDiretorio/bkp-mysql/’
BACKUP_REMOTO_DIR2=’/algumDiretorio/bkp-mysql/’
BACKUP_DIR1=’/algumDiretorio/bkp-mysql/’
BACKUP_DIR2=’/algumDiretorio/b-mysql/bkp-reserva-mysql/’
BACKUP_TMP_DIR1=’/algumDiretorio/bkp-mysql/tmp1′
BACKUP_TMP_DIR2=’/algumDiretorio/bkp-mysql/tmp2′
### CVS SEVER
CVSDIR=’/algumDiretorio/cvs/’
BKP_TMP_CVS=’/algumDiretorio/bkp-cvs/tmp-cvs/’
CVS_BKP_DIR=’/algumDiretorio/bkp-cvs’
### SVN SERVER 1
SVNDIR1=’/algumDiretorio/svn/’
BKP_TMP_SVN1=’/algumDiretorio/b-svn1/tmp-svn1/’
SVN1_BKP_DIR=’/algumDiretorio/b-svn1/’
### SVN SERVER 2
SVNDIR2=’/algumDiretorio/svn/’
BKP_TMP_SVN2=’/algumDiretorio/bkp-svn2/tmp-svn2/’
SVN2_BKP_DIR=’/algumDiretorio/bkp-svn2/’
### Data e Log
LOG=’/var/log/backup.log’
DATA=`date +%d-%m-%Y-%H.%M`
# Executar como root, claro!.
#if [ “$UID” −ne “$ROOT_UID” ]
#then
# echo “Ops ! Somente o usuário root pode rodar este programa.”
# exit $E_NOTROOT
#fi
# Teste se apresentar argumento de linha de comando (non−empty).
#then
# lines=$1
#else
# lines=$LINES # Padrão, se não especificado em linha de comando.
#fi
echo “—————————————”
echo “- Iniciando backup do servidor MySQL -”
echo “—————————————”
echo
# 1
#ssh root@${MYSQLSERVER} ‘/usr/bin/mysqldump -u root -pCOLOCARSENHA –all-databases > /algumDiretorio/b-mysql/backupmysql.sql’
#ssh root@${MYSQLSERVER} ‘cd ${BACKUP_REMOTO_DIR1}’
#ssh root@${MYSQLSERVER} ‘tar -czvf bkpMysql-${DATA}.tar.gz backupmysql.sql’
rsync -Cravzp root@${MYSQLSERVER}:${BACKUP_REMOTO_DIR1}* ${BACKUP_TMP_DIR1} >> ${LOG} # transferindo o backup do Mysql para o servidor de backup
cd ${BACKUP_TMP_DIR1} && tar -czvf bkpMysql-${DATA}.tar.gz backupmysql.sql && cp *sql ${BACKUP_DIR1} && cp *.tar.gz ${BACKUP_DIR1}
echo ” Procurando arquivos com mais de 7 dias para remoção ”
find ${BACKUP_DIR1} -name “*.tar.gz” -ctime +7 -exec rm -vrf {} >> ${LOG} \;
echo “Limpando diretório temporario”
cd ${BACKUP_TMP_DIR1}* >> ${LOG} && rm -vrf *.sql *.tar.gz >> ${LOG}
# 2
#ssh root@${MYSQLSERVER} ‘/usr/bin/mysqldump -u root -pCOLOCARSENHA –all-databases > /algumDiretorio/b-mysql/backupmysql.sql’
#ssh root@${MYSQLSERVER} ‘cd ${BACKUP_REMOTO_DIR2}’
#ssh root@${MYSQLSERVER} ‘tar -czvf bkpMysql-${DATA}.tar.gz backupmysql.sql’
rsync -Cravzp root@${MYSQLSERVER}:${BACKUP_REMOTO_DIR2}* ${BACKUP_TMP_DIR2} >> ${LOG} # transferindo o backup do Mysql para o servidor de backup
cd ${BACKUP_TMP_DIR2} && tar -czvf bkpMysql-${DATA}.tar.gz backupmysql.sql && cp *sql ${BACKUP_DIR2} cp *.tar.gz ${BACKUP_DIR2}
echo ” Procurando arquivos com mais de 7 dias para remoção ”
find ${BACKUP_DIR2} -name “*.tar.gz” -ctime +7 -exec rm -vrf {} >> ${LOG} \;
echo “Limpando diretório temporario”
cd ${BACKUP_TMP_DIR2}* >> ${LOG} && rm -vrf *.sql *.tar.gz >> ${LOG}
# mensagem de resultado
echo
echo “——————————————-”
echo “- BACKUP DO SERVIDOR MySQL -”
echo “- Seu backup foi realizado com sucesso. -”
echo “——————————————-”
echo “————————————–”
echo “- Iniciando backup do servidor Mail -”
echo “————————————–”
echo
echo
mount /dev/md0 /algumDiretorio
montado=`mount | grep /algumDiretorio`
if [ -z “$montado” ]; then
exit 1
else
echo ” Iniciando copia dos arquivos … ”
rsync -Cravzp root@${MAILSERVER}:/Diretorio/ ${HOME_MAIL_TMP_DIR} >> ${LOG}
rsync -Cravzp root@${MAILSERVER}:/Diretorio/ ${VAR_MAIL_TMP_DIR} >> ${LOG}
rsync -Cravzp root@${MAILSERVER}:/Diretorio/ ${PAGINA_MAIL_TMP_DIR} >> ${LOG}
rsync -Cravzp root@${MAILSERVER}:/Diretorio/ ${ETC_MAIL_TMP_DIR} >> ${LOG}
cd ${BKP_MAIL_DIR}
#if [ `pwd` != “$BKP_MAIL_DIR” ] # or if [ “$PWD” != “$BKP_MAIL_DIR” ]
# Não está em /algumDiretorio/b-mail/?
#then
# echo “Não é possível alterar $BKP_MAIL_DIR.”
# exit $E_XCD
#fi # Doublecheck no diretório, antes de brincar com arquivo de registro.
echo ” Compactando os arquivos … ”
tar -czvf bkpHome-mail-${DATA}.tar.gz ${HOME_MAIL_TMP_DIR} >> ${LOG}
tar -czvf bkpVar-mail-${DATA}.tar.gz ${VAR_MAIL_TMP_DIR} >> ${LOG}
tar -czvf bkpHome-Pagina-mail-${DATA}.tar.gz ${PAGINA_MAIL_TMP_DIR} >> ${LOG}
tar -czvf bkpEtc-mail-${DATA}.tar.gz ${ETC_MAIL_TMP_DIR} >> ${LOG}
echo ” Procurando arquivos com mais de 7 dias para remoção ”
find ${BKP_MAIL_DIR} -name “*.tar.gz” -ctime +7 -exec rm -vrf {} >> ${LOG} \;
echo “Limpando diretório temporario”
rm -vrf ${HOME_MAIL_TMP_DIR}* >> ${LOG}
rm -vrf ${VAR_MAIL_TMP_DIR}* >> ${LOG}
rm -vrf ${PAGINA_MAIL_TMP_DIR}* >> ${LOG}
rm -vrf ${ETC_MAIL_TMP_DIR}* >> ${LOG}
# mensagem de resultado
echo
echo “——————————————-”
echo “- BACKUP SEVIDOR-MAIL -”
echo “- Seu backup foi realizado com sucesso. -”
echo “——————————————-”
echo
fi
echo
echo “———————————–”
echo “Iniciando backup do servidor SVN 1 ”
echo “———————————–”
echo
mount /dev/md0 /algumDiretorio
montado=`mount | grep /algumDiretorio`
if [ -z “$montado” ]; then
exit 1
else
echo “Iniciando copia dos arquivos … ”
rsync -Cravzp root@${SVNSERVER1}:${SVNDIR1} ${BKP_TMP_SVN1}
echo “Compactando os arquivos … ”
cd ${SVN1_BKP_DIR}
tar -czvf bkpSvn1-${DATA}.tar.gz ${BKP_TMP_SVN1} >> ${LOG}
echo “Procurando arquivos com mais de 7 dias para remoção”
find ${SVN1_BKP_DIR} -name “*.tar.gz” -ctime +7 -exec rm -vrf {} >> ${LOG} \;
echo “Limpando diretório temporario”
rm -vrf ${BKP_TMP_SVN1}* >> ${LOG}
# mensagem de resultado
echo
echo “———————————–”
echo ” BACKUP SVN1 CONCLUIDO! ”
echo “———————————–”
echo
fi
echo
echo “———————————–”
echo “Iniciando backup do servidor SVN 2 ”
echo “———————————–”
echo
mount /dev/md0 /algumDiretorio
montado=`mount | grep /algumDiretorio`
if [ -z “$montado” ]; then
exit 1
else
echo “Iniciando copia dos arquivos … ”
rsync -Cravzp root@${SVNSERVER2}:${SVNDIR2} ${BKP_TMP_SVN2}
echo “Compactando os arquivos … ”
cd ${SVN2_BKP_DIR}
tar -czvf bkpSvn2-${DATA}.tar.gz ${BKP_TMP_SVN2} >> ${LOG}
echo “Procurando arquivos com mais de 7 dias para remoção”
find ${SVN2_BKP_DIR} -name “*.tar.gz” -ctime +7 -exec rm -vrf {} >> ${LOG} \;
echo “Limpando diretório temporario”
rm -vrf ${BKP_TMP_SVN2}* >> ${LOG}
# mensagem de resultado
echo
echo “———————————–”
echo ” BACKUP SVN2 CONCLUIDO! ”
echo “———————————–”
echo
fi
#Enviando email de confirmacao
ssh root@${MAILSERVER} ‘/root/emailDoBackup.pl’
#Abaixo o conteudo do Script
#use MIME::Entity;
#$texto = “O servidor de backup realizou o backup com sucesso,em anexo o script de backup !”;
#$top = build MIME::Entity From => ‘Root <root>’,
# To => ‘suporte@domain’,
# Subject => “[Backup-Empresa] Confirmação do Backup “,
# Data => $texto;
# definindo o anexo
#$top->attach(
# Name => “backupscript.sh”,
# Path => “backupscript.sh”,
#Type => “application/x-gtar”,
# Encoding => “base64″
#);
# caminho para o programa do agente MTA do seu servidor
#open(MAIL,”| /usr/lib/sendmail -t”);
#$top->print(\*MAIL);
#close(MAIL);
exit 0
# O valor zero é retornado após a saída do script
#+ Indica sucesso para o shell.