shell-script-pt
[Top][All Lists]
Advanced

[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
========================================================

reply via email to

[Prev in Thread] Current Thread [Next in Thread]