BackRE - Seu script de backup remoto

Apresento o "BackRE", um script de backup que busca os arquivos em outros servidores e realiza a compactação dos arquivos em um outro equipamento com uma pasta compartilhada. Além de enviar notificações para o administrador, realiza tentativas de montar as unidades remotas caso haja algum problema.

[ Hits: 62.626 ]

Por: Claudio Mercaldo de Almeida em 25/09/2006


Introdução.



A idéia é simples. Tenho 3 servidores:

Server1 - pdc (samba) - Servidor de "logon" que mantêm disponíveis os arquivos dos usuários em uma pasta chamada "/arquivos".
/arquivos
      |
       -- /particulares
      |
       -- /setores
      |
       -- /publico
Server2 - Windows 2003 server - Servidor de aplicações - "/sistema"
/sistema
      |
       -- /gerencial
      |
       -- /operacional
Server3 - Servidor Linux Emulando Novell 3.12 - Servidor de aplicações - "/dados"
/dados
      |
       -- /atendimento
      |
       -- /marketing
O script busca as informações em cada um dos servidores e grava em um micro da rede que chamo de "backup virtual". Este equipamento "backup virtual" pode ter instalado Windows ou Linux como sistema operacional, portanto que você tenha criado uma pasta compartilhada e tenha acesso total a esta pasta.

Exemplo da pasta compartilhada: bkpvirtual$

O ideal é que além das permissões dadas a pasta do "backup virtual" você também coloque o sinal de ($=compartilhamento administrativo) para que esta pasta não fique visível na rede.

Vamos também usar um MTA para a notificação por email. No meu caso estou usando o EXIM4 por ser padrão no Debian.

Funciona em qualquer distribuição?


Estou usando a distribuição Debian, mas o script já foi testado em diversas distribuições, basta instalar os pacotes necessários para sistema escolhido. Para que o script avise o administrador da rede por email, é necessário que seja instalado um agente MTA, que pode ser o POSTFIX ou SENDMAIL. No meu caso como estou utilizando o Debian, preferi configurar o EXIM4 por ser padrão nesta distribuição.

Equipamento onde o script será executado


O equipamento eleito para executar o script será o servidor PDC, mas você pode eleger qualquer servidor para executar a tarefa.

Então:

Crie um arquivo chamado "backre.sh", digite ou copie e cole o script no arquivo.

    Próxima página

Páginas do artigo
   1. Introdução.
   2. Instalando os pacotes necessários
   3. Configurando e testando o EXIM4
   4. Recapitulando
   5. Perguntas?
   6. Criando os diretórios no PDC
   7. Até quem fim, o SCRIPT
   8. Ativando o script pelo CRON
Outros artigos deste autor

Monitoramento de Serviços e Servidores

Coletando informações direto do FIREBIRD via D.O.S. ou SHELL

Configurando o Apache para reconhecer arquivos DWG

Compilando o Squid com autenticação PAM

Postgres e os Sistemas Alterdata

Leitura recomendada

GNU Parallel: criando atividades em paralelo com shell script

getopts: criando scripts Bash com parâmetros e argumentos personalizáveis

Executando backup do MySQL e enviando por FTP

flock - Gerenciador de lockfiles

Relatório de conexão Wi-Fi com dados de usuários conectados nos POPs

  
Comentários
[1] Comentário enviado por balani em 25/09/2006 - 20:42h

Gostei do seu script, muito util.

[2] Comentário enviado por Maycon Pires em 26/09/2006 - 15:33h

Parabéns, excelente didatica continue contribuindo com a comunidade ficamos grato!


[3] Comentário enviado por aprendiz_ce em 27/09/2006 - 13:23h

Parabéns pelo seu excelante artigo!

Mas agora me tire uma dúvida: Como devo configurar o EXIM4 para enviar os emails para um conta de email externa?

Obrigado e aguardo retorno.

[4] Comentário enviado por cmercaldo em 27/09/2006 - 20:55h

Mardonio.

O exim já esta para o envio externo. Veja a variável abaixo:

dc_relay_domains='dominio_smtp_interno_ou_externo'

A configuração da rede interna é apenas para que os provedores não rejeitem a mensagem.

Att.
ClaudioM

[5] Comentário enviado por aprendiz_ce em 27/09/2006 - 21:45h

Olá Claudio, fiz exatamente isso!

Em "dc_relay_domains" coloquei "smtp.mail.yahoo.com.br" e depois mudei para "mail.yahoo.com.br", mas nenhuma das duas formas deu certo. O que é que pode estar dando errado? Além do acesso a internet tenho que ter mais outro serviço configurado para o envio de emais externo?

Muito obrigado pela sua atenção e aguardo retorno.

Ps. E como ficar a questão da autenticação em um servidor SMTP externo?

[6] Comentário enviado por cmercaldo em 28/09/2006 - 11:17h

Mardonio.

Preciso que vc "printe" o "log" de envio dos seus testes. Vide exemplo abaixo:

# tail -f /var/log/exim4/mainlog
2006-08-26 12:02:53 1GGzgT-0002F9-0U <= root@dominio.com.br U=root P=local S=1089
2006-08-26 12:02:55 1GGzgT-0002F9-0U => administrador@dominio.com.br R=dnslookup_relay_to_domains T=remote_smtp H=smtp_externo_ou_interno.cc [xxx.xxx.xxx.xx] X=TLS-1.0:RSA_AES_256_CBC_SHA:32
2006-08-26 12:02:55 1GGzgT-0002F9-0U Completed

No aguardo!

Att.
ClaudioM

[7] Comentário enviado por aprendiz_ce em 28/09/2006 - 12:05h

Olá Claudio,

Segue o meu "log" conforme abaixo:

# tail -f /var/log/exim4/mainlog
2006-09-28 12:06:17 1GSgMr-0000qy-6J Message is frozen
2006-09-28 12:06:17 1GSgNi-0000r3-4O Message is frozen
2006-09-28 12:06:17 1GSlOn-0000w7-3R Message is frozen
2006-09-28 12:06:17 1GSlYN-0000ym-Op Message is frozen
2006-09-28 12:06:17 1GSlYh-0000ys-OQ Message is frozen
2006-09-28 12:06:17 End queue run: pid=3559
2006-09-28 12:06:27 1GSxT1-0000vq-1s <= root@ U=root P=local S=360
2006-09-28 12:06:28 1GSxT1-0000vq-1s ** mardoniocavalcante@yahoo.com.br R=dnslookup T=remote_smtp: SMTP error from remote mailer after MAIL FROM:<root@> SIZE=1393: host mx2.mail.yahoo.com [4.79.181.135]: 501 Syntax error in parameters or arguments
2006-09-28 12:06:28 1GSxT2-0000vt-Sd Error while reading message with no usable sender address (R=1GSxT1-0000vq-1s): at least one malformed recipient address: root@ - domain missing or malformed
2006-09-28 12:06:29 1GSxT1-0000vq-1s Process failed (1) when writing error message to root@ (frozen)

Este é o meu arquivo /etc/exim4/update-exim4.conf.conf:

dc_eximconfig_configtype='none'
dc_other_hostnames='debian.localdomain.com.br'
dc_local_interfaces='127.0.0.1:192.168.1.2'
dc_readhost=''
dc_relay_domains='smtp.mail.yahoo.com.br'
dc_minimaldns='false'
dc_relay_nets='192.168.1.0/24'
dc_smarthost=''
CFILEMODE='644'
dc_use_split_config='true'
dc_hide_mailname='false'
dc_mailname_in_oh='true'

Obrigado mais uma vez e fico no aguardo.


[8] Comentário enviado por cmercaldo em 28/09/2006 - 19:45h

Mardonio.

Faltou o "hosts" dentro do /etc.

Estou no aguardo!!

Att.
ClaudioM

Não estou conseguindo "POSTAR" no site...Mas segue minhas sugestões:

Antonio.

Seu "hosts" deve ser assim:

127.0.0.1 localhost.localdomain localhost
127.0.0.1 mail.yahoo.com.br
IPLOCAL intranet

Vc deve testar as variações do yahoo, isso levando em consideração que vc queira enviar a mensagem para "mardoniocavalcante@yahoo.com.br". Não podemos esquecer no entanto que o YAHOO tem configurações especiais. Se não funcionar, sugiro mandar para outra conta para fazer um teste, sempre lembrando de alterar a segunda linha (mail.yahoo.com.br) para o endereço que vc tentará enviar o email. Onde esta IPLOCAL, favor trocar pelo IPLOCAL do seu equipamento.

No aguardo!

ps. Não esqueça de "postar" o "log"

Att.
ClaudioM

[9] Comentário enviado por aprendiz_ce em 28/09/2006 - 20:44h

Beleza!

[10] Comentário enviado por aprendiz_ce em 28/09/2006 - 21:22h


Olá Carlos,

Segue abaico o meu /etc/hosts:

127.0.0.1 localhost.localdomain localhost debian
192.168.1.2 debian.localdomain.com.br debian

# The following lines are desirable for IPv6 capable hosts
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Mais uma vez obrigado e fico no aguardo

[11] Comentário enviado por cmercaldo em 02/10/2006 - 14:06h

Antonio.

Seu "hosts" deve ser assim:

127.0.0.1 localhost.localdomain localhost
127.0.0.1 mail.yahoo.com.br
IPLOCAL intranet

Vc deve testar as variações do yahoo, isso levando em consideração que vc queira enviar a mensagem para "mardoniocavalcante@yahoo.com.br". Não podemos esquecer no entanto que o YAHOO tem configurações especiais. Se não funcionar, sugiro mandar para outra conta para fazer um teste, sempre lembrando de alterar a segunda linha (mail.yahoo.com.br) para o endereço que vc tentará enviar o email. Onde esta IPLOCAL, favor trocar pelo IPLOCAL do seu equipamento.

No aguardo!

ps. Não esqueça de "postar" o "log"

Att.
ClaudioM

[12] Comentário enviado por aprendiz_ce em 02/10/2006 - 22:21h

Olá Cláudio,

Reinstalei o sistema prestando bastante atenção nas suas observações e deu tudo certinho, mas somente pra entrega de mensagens LOCAIS. Como faço agora pra enviar mensagens pra fora com no caso do "yahoo", "bol" ou "oul"? Ah, e como faço para ler as mensagens LOCAIS?

Desculpe-me pela perturbação, pois nunca tive a oportunidade de trabalhar com o EXIM, apesar de sempre ter tido essa vontade.

Obrigado mais uma vez e aguardo mais orientações.

[13] Comentário enviado por cmercaldo em 03/10/2006 - 22:39h

Sua resposta esta na mensagem anterior...
Coloque no hosts um ip loopback com o smtp que deseja enviar...

Estou no aguardo!!

Att.
ClaudioM

[14] Comentário enviado por crfjunior em 09/03/2007 - 11:09h

Bom dia estou confuso.... estou mantando um server web que tem o buguizilla tambem, só q aqui na empresa temos um servidor de email funcionando e os usuarios do bugzilla trocam informação via email... com devo fazr pra funcionar isso instalei o exim4(debian) mas não esta funcionando..
meu conf exim:
dc_eximconfig_configtype='smarthost'
dc_other_hostnames='mail'
dc_local_interfaces='10.100.100.14'
dc_readhost=''
dc_relay_domains='dominio'
dc_minimaldns='false'
dc_relay_nets='10.100.0.0/16'
dc_smarthost='nomedominio'
CFILEMODE='644'
dc_use_split_config='true'
dc_hide_mailname='false'
dc_mailname_in_oh='true'

meu log:
2007-03-09 09:55:56 End queue run: pid=26290
2007-03-09 09:56:01 1HPfZh-0007FQ-Nm <= root@dominio U=root P=local S=801
2007-03-09 09:56:01 1HPfZh-0007FQ-Nm => junior <root@dominio> R=local_user T=mail_spool
2007-03-09 09:56:01 1HPfZh-0007FQ-Nm Completed
2007-03-09 09:57:02 1HPfaf-0007Fb-W7 <= root@dominio U=root P=local S=801
2007-03-09 09:57:02 1HPfaf-0007Fb-W7 => junior <root@dominio> R=local_user T=mail_spool
2007-03-09 09:57:02 1HPfaf-0007Fb-W7 Completed
2007-03-09 09:58:01 1HPfbd-0007Fm-5u <= root@dominio U=root P=local S=801
2007-03-09 09:58:01 1HPfbd-0007Fm-5u => junior <root@dominio> R=local_user T=mail_spool
2007-03-09 09:58:01 1HPfbd-0007Fm-5u Completed
2007-03-09 09:59:01 1HPfcb-0007Fx-BP <= root@dominio U=root P=local S=801
2007-03-09 09:59:01 1HPfcb-0007Fx-BP => junior <root@dominio> R=local_user T=mail_spool
2007-03-09 09:59:01 1HPfcb-0007Fx-BP Completed

Aguardo na sua ajuda...

[15] Comentário enviado por cmercaldo em 09/03/2007 - 20:28h

Junior.

Suas contas de email são locais ou estão em um provedor externo??
Preciso saber de mais informações para que eu possa ajudar.

Se preferir me adicione no seu Messenger, ok!

Até mais!!

Claudio Mercaldo

[16] Comentário enviado por reimago em 03/04/2007 - 00:28h

Claudio, meu exim4 funciona quando envio um email através de uma conta de usuario comum, porem quando envio seguindo seu exemplo, o remetente root@dominio.com.br não consegue rotear o email.

Como faço pra resolver isso, já que o script vai ser executado pelo root.

Aguardo sua ajuda e agradeço desde já.

Cesar

[17] Comentário enviado por cmercaldo em 03/04/2007 - 20:01h

Cesar.

Se vc configurou o arquivo update-exim4.conf, basta fazer o teste de envio abaixo:
#more mensagem.txt | mail -s "Teste de Envio" administrador@dominio.com.br

Lembrando que a conta administrador@dominio.com.br tem que ser substituida por sua conta particular de envio e recebimento.

Ex. suporte@suaempresa.com.br

Não esqueça verifique o log na hora do envio!

Qualquer problema me avise!!

Até mais!


Claudio Mercaldo
www.allconnections.com.br

[18] Comentário enviado por chrisley em 11/12/2007 - 09:48h

Caro Amigo o seu artigo foi de grande utilidade para mim. Mas esta acontecendo alguns problemas quanto a acentos em nomes de pasta e arquivos. O que posso fazer para corrigir estes acentos.

[19] Comentário enviado por cmercaldo em 06/09/2009 - 13:20h

Prezado Chrislev.

Eu não uso acentos em arquivos pelo samba, ou seja, verifique se no seu SMB.CONF existem o parametro abaixo:

unix charset = iso8859-1
display charset = cp850


Comente estas linhas com o caracter ( # ), assim não haverá mais problemas com o backup.

Se o problema persistir, pode me adicionar no msn e posso auxiliar vc na execução do script de backup que utilizo a mais de 4 anos sem problemas.

Att.
Claudio M (clmercaldo@hotmail.com)


[20] Comentário enviado por removido em 14/01/2012 - 11:29h

Olá Pessoal,

Ainda sou iniciante em Linux e estou tendo que escrever um script para fazer um backup remoto dos servidores daqui. Porém, estou com uma dúvida: Em que parte do script que é feito o acesso ao servidor? No caso, o servidor que usamos é acessado por ssh. Eu poderia colar no script um comando ssh usuario@IP para acessar o servidor? Neste caso, como seria inserida a senha q é pedida para login?

Obrigada desde já.
Conto com a colaboração de todos.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts