[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Script de backup
From: |
Marcelo Dias |
Subject: |
Script de backup |
Date: |
Fri, 13 Jan 2006 01:49:58 -0300 |
User-agent: |
KMail/1.7.2 |
Pessoal fiz um script (melhor dois) que uma parte fica nos servidores de dados
e outra no servidor de backup, ele funciona muito bem no FreeBSD até o 5.4,
mas no 6.0 tá dando pau. Vejam só as falhas são apresentadas no FTP, o
incrível é que o e-mail de aviso as variáveis são interpretadas corretamente
e no FTP as varáveis aparentemente não o são, vale salientar que este erro só
aparece no FTP da versão 6.0 do FreeBSD e não nas demais anteriores.
Se tiver alguém que possa me ajudar, pois os servidores estão sendo
atualizados e não estou conseguindo encontrar o entrave para o funcionamento
do FTP. Desde já agradeço.
Este script também funciona no GNU/Linux sem problemas.
Vejam o script que fica no lado dos servidores de dados:
=================================================
#!/bin/sh
##################################################################################
# Criado por:
# Marcelo G. Dias ( address@hidden )
# http://www.boletim.net
##################################################################################
TESTMES=`date "+%d"`
DATA=`date +%Y%m%d`
MAQUINA="server01"
REMOVE=`date -v -1d +%Y%m%d`
cd /var/backup/
for I in `grep -v "^#" /usr/local/backup/dirs | sed '/^$/d'`
do
DIR=`echo "$I" | tr "/" "_"`
tar -zcf "backup-${MAQUINA}-${DIR}-${DATA}.tar.gz" "/${I}" 2>/dev/null
TESTE="$?"
sum "backup-${MAQUINA}-${DIR}-${DATA}.tar.gz" >>
"backup-${MAQUINA}-${DATA}.txt"
rm -f "backup-${MAQUINA}-${DIR}-${REMOVE}.tar.gz" 2>/dev/null
done
rm -f "backup-${MAQUINA}-${REMOVE}.txt" 2>/dev/null
chown backup:wheel *
cd -
========================================================
Local do script : /usr/local/backup/
Nome do script de backup : backup.sh
Nome do script de configuracao : dirs
========================================================
Arquivo de configuracao
############################################################
# Ao informar um diretorio para lista de backup nao coloque
# devise informar o endereco completo, somente um por linha
# mas ATENSAO : nao coloque a "/" do raiz a "/" final veja
# exemplo ERRADO e CERTO abaixo:
#
# ERRADO: /var/home/
#
# CERTO: var/home
############################################################
etc
sbin
usr/home
usr/local
usr/sbin
usr/lib
usr/libexec
usr/src/sys/i386/conf
var/mail
var/data
var/run
=================================================
Vejam o script que fica no servidor de backup o qual está apresentando a
falha:
=================================================
#! /bin/sh
# Variaveis de login do FTP
USUARIO_FTP="user"
SENHA_FTP="senha-user"
TESTMES=`date "+%d"`
MENSAGEM="**** MENSAGENS DO BACKUP SERVIDORES DE DOMÍNIOS ****"
# Maquinas por domínios
MAQUINAS='server01 server02 server03 server04 server05'
# Maquinas por IP
MAQUINAS_IP='200.xxx.xxx.xxx 200.xxx.xxx.xxx'
# Vai para o diretorio de backup
cd /var/backup
# Verifica data
DATA=`date "+%Y%m%d"`
RDATA=`date -v 2d "+%Y%m%d"`
# Loop que permite login nos servidores de domínios
for SERVIDOR in ${MAQUINAS}
do
# Busca do arquivo de configuracao do FTP do backup
ftp -in <<EOF
open ${SERVIDOR}.meudominio.com.br
user ${USUARIO_FTP} ${SENHA_FTP}
bin
passive
get backup-${SERVIDOR}-${DATA}.txt
EOF
# Informa qual Servidor
MENSAGEM="${MENSAGEM}
****************************************
* ${SERVIDOR}
****************************************
"
# Testa se FTP esta OK !
if [ ! -s "backup-${SERVIDOR}-${DATA}.txt" ]
then
# Envia email informando erro no acesso do FTP
MENSAGEM="${MENSAGEM}
ATENÇÃO : FTP do Servidor ${SERVIDOR} Falhou ...
"
# Pula para o proximo loop
continue
else
# Se FTP OK remove lista do backup anterior
rm -f backup-${SERVIDOR}-${RDATA}.txt 2>/dev/null
fi
# Gera variavel BUSCA para o FTP
BUSCA=`awk '{printf "\n%3s %30s", "get", $3}'
backup-${SERVIDOR}-${DATA}.txt`
ftp -in <<EOF
open ${SERVIDOR}.meudominio.com.br
user ${USUARIO_FTP} ${SENHA_FTP}
bin
passive
${BUSCA}
EOF
# Loop de verificacao do arquivo
for LISTA in `cat backup-${SERVIDOR}-${DATA}.txt | tr " " ":"`
do
TESTESUM=`echo "${LISTA}" | awk -F":" '{print $1 $2}'`
ARQUIVO=`echo "${LISTA}" | awk -F":" '{print $3}'`
TESTELOC=`sum "${ARQUIVO}" | awk '{print $1 $2}'`
if [ "${TESTESUM}" -eq "${TESTELOC}" 2>/dev/null ]
then
# Se arquivo nao estiver corrompido envia e-mail dando
OK!
MENSAGEM="${MENSAGEM}
OK! ${ARQUIVO}
"
# FTP OK remove backup anterior do ARQUIVO
REMOVE=`echo "${ARQUIVO}" | sed "s/${DATA}/${RDATA}/"`
rm -f "${REMOVE}" 2>/dev/null
else
# Se arquivo estiver corrompido envia e-mail de
ALERTA!
MENSAGEM="${MENSAGEM}
ER! ${ARQUIVO}
"
fi
done
done
# Envia um e-mail para o NOP esclarecendo os procedimentos do backup e as
falhas
# Ocorridas para averiguação.
mail -s "Mensagens do Backup" address@hidden -r
address@hidden <<FIM
${MENSAGEM}
****************************************
Atenciosamente,
Sistema de Backup
FIM
# Temporiza 32400 segundos (09:00hs) para executar FTP para servidores de IP
sleep 32400
MENSAGEM="**** MENSAGENS DO BACKUP SERVIDORES DE IP ****"
# Loop que permite login nos servidores de IP
for SERVIDOR in ${MAQUINAS_IP}
do
# Busca do arquivo de configuracao do FTP do backup
ftp -in <<EOF
open ${SERVIDOR}
user ${USUARIO_FTP} ${SENHA_FTP}
bin
passive
get backup-${SERVIDOR}-${DATA}.txt
EOF
# Identifica Nome do Servidor por IP
# Este arquivo deverá conter o IP do servidor mais o nome
# Ceparado por ":" conforme exemplo, sendo um por linha:
# 200.xxx.xxx.xxx:Servidor IPSado
NSERVER=`grep "^${SERVIDOR}" /etc/backup_ip.conf | cut -f2 -d":"`
# Informa qual Servidor
MENSAGEM="${MENSAGEM}
****************************************
* ${NSERVER}
****************************************
"
# Testa se FTP esta OK !
if [ ! -s "backup-${SERVIDOR}-${DATA}.txt" ]
then
# Envia email informando erro no acesso do FTP
MENSAGEM="${MENSAGEM}
ATENÇÃO : FTP do Servidor ${SERVIDOR} Falhou ...
"
# Pula para o proximo loop
continue
else
# Se FTP OK remove lista do backup anterior
rm -f backup-${SERVIDOR}-${RDATA}.txt 2>/dev/null
fi
# Gera variavel BUSCA para o FTP
BUSCA=`awk '{printf "\n%3s %30s", "get", $3}'
backup-${SERVIDOR}-${DATA}.txt`
ftp -in <<EOF
open ${SERVIDOR}.wavenet.com.br
user ${USUARIO_FTP} ${SENHA_FTP}
bin
passive
${BUSCA}
EOF
# Loop de verificacao do arquivo
for LISTA in `cat backup-${SERVIDOR}-${DATA}.txt | tr " " ":"`
do
TESTESUM=`echo "${LISTA}" | awk -F":" '{print $1 $2}'`
ARQUIVO=`echo "${LISTA}" | awk -F":" '{print $3}'`
TESTELOC=`sum "${ARQUIVO}" | awk '{print $1 $2}'`
if [ "${TESTESUM}" -eq "${TESTELOC}" 2>/dev/null ]
then
# Se arquivo nao estiver corrompido envia e-mail dando
OK!
MENSAGEM="${MENSAGEM}
OK! ${ARQUIVO}
"
# FTP OK remove backup anterior do ARQUIVO
REMOVE=`echo "${ARQUIVO}" | sed "s/${DATA}/${RDATA}/"`
rm -f "${REMOVE}" 2>/dev/null
else
# Se arquivo estiver corrompido envia e-mail de
ALERTA!
MENSAGEM="${MENSAGEM}
ER! ${ARQUIVO}
"
fi
done
done
# Envia um e-mail para o NOP exclarecendo os procedimentos do backup e as
falhas
# Ocorridas para averiguação.
mail -s "Mensagens do Backup" address@hidden -r address@hidden
<<FIM
${MENSAGEM}
****************************************
Atenciosamente,
Sistema de Backup
FIM
# Passa permissao de uso e dominio para usuario backup
chown backup *
# Da direito de Leitura e gravacao para dono e
# Somente leitura para grupo e outros
chmod 644 *
# Retorna para diretorio de origem
cd -
========================================================
Local do script de backup : /usr/local/sbin/
Nome do script : ftp-backup.sh
Local do script de configuracao: /etc/
Nome do script de configurcao : backup_ip.conf
========================================================
Script de configuracao
200.xxx.xxx.xxx:Servidor IPSado
200.xxx.xxx.xxx:outrodominio.com.br
========================================================
- Script de backup,
Marcelo Dias <=