Feeds:
Posts
Comentários

Archive for the ‘Linux | Infraestrutura’ Category

E ai Galera, bom esse acho q vai ser bem útil pra todos nós, tive a missão de criar uma solução de sincronismo de pastas para um servidor centralizado (Windows Server 2003), de ambientes windows e linux, a topologia ficou mais ou menos como a imagem abaixo:

DiagramaBLOG

  • Ambientes Windows

Via Windows vamos usar o utilitário Robust File Copy, ou simplesmente Robocopy, excelente ferramenta para esta finalidade, copiar dados, se precisarem, o pacote rktool já acompanha, mas caso queiram baixar, aqui esta a documentação.

  • Ambientes Linux

Via Linux o nosso super conhecido WinSCP, que copia dados utilizando o protocolo ssh para maquinas windows, justamente o que agente precisa.

Então vamos ! 😉

Toda nossa ação será realizada no nosso server centralizados, no meu caso usei um Windows 2003 Server.

1. Instalar o Resource Kit Tools

A instalação é bem simples, a última versão disponível é a XP010, e pelo que sei, é gratuita e está disponível desde o NT incluso no pacote Resource Kit Tools do Windows Server 2003, basta clicar aqui para baixar o rktools e executar, se seguir os padrões de instalação ele estará disponível em: C:\Arquivos de Programas\Windows\Windows ResourceKits\Tools, ali além de muitos outros utilitários, teremos o robocopy.exe e o robocopy.doc, sugiro dar uma lida no doc que possui muitas opções de sintaxe para elaborar os comandos de cópia.

2. Instalar o WinSCP3

Bom, nosso WinSCP pode ser baixado aqui, processo de instalação é bem simples tambem, voces podem dar uma olha na documentação no site oficial do projeto.

3. Estruturando o ambiente

Como dito anteriormente e visto no desenho da estrutura que temos para este projeto, vamos utilizar um servidor central para receber todos os nossos arquivos dos servidores que iremos efetuar o sincronismo, basicamente iremos efetuar uma conexão invocada por um script via ssh(Linux) ou nfs(Windows) que realiza a copia destes arquivos de uma origem para o caminho informado, então criei uma estrutura para armazenar os scripts de sincronismo dos servers “backupeados”, no meu cenário, criei uma pasta em C:\BACKUP, ali criei uma pasta chamada logs com os arquivos de logs de todos os servidores, e criei as pastas com o nome dos meus servidores que irei “backupear”, vamos pegar, por exemplo uma maquina Windows Server que chamaremos de “PROTHEUS”, e uma maquina Linux Server que chamaremos de “ZEUS”, então terei uma estrutura mais ou menos assim:

  • PROTHEUS:
C:\BACKUP
      \logs
         PROTHEUS-log.txt - log gerado do ultimo backup realizado
       \PROTHEUS
         \replica_dados.bat (nosso script de cópia da pasta)
         \DATA (Aonde iremos armazenar nossos dados)

No meu server “backupeado” irei simplesmente deixar acessível, no meu caso, pelo compartilhamento padrão de instalação do windows (C$).
Obs.: Lembrando que executo este serviço agendado com um usuário de serviço com as permissões necessárias.

  • ZEUS:
C:\BACKUP
      \logs
         ZEUS-log.txt - log gerado do ultimo backup realizado
       \ZEUS
         \replica_dados.bat (nosso script de cópia da pasta)
         \ZEUS-Scripts.txt (somente para ambientes linux)
         \DATA (Aonde iremos armazenar nossos dados)

Ambiente linux preciso simplesmente de um usuario ativo com permissões no diretório de destino, com acesso via ssh e o serviço rodando.

4. Criar os scripts de sincronismo

A ideia aqui foi criar .bat que será agendado no nosso agendador de tarefas, porem nos ambientes linux vamos utilizá-los para chamar outro script de sincronismo que iremos passar por referencia, então vamos lá:

  • Ambientes Windows:

Em nosso batch, vamos evocar o robocopy, passando o path do diretório de origem e destino, respectivamente, e mais alguns parâmetros:

/MIR - Que é um espelho da estrutura;
/COPYALL - Copia recursivamente todos os dados contidos na pasta raiz passada;
/ZB - Modo backup;
/r:2 - repete 2 vezes em caso de falha
> "log de backup.txt" - Envia todo o log para um arquivo chamado "log de backup.txt"

ficando assim:

"C:\Program Files\Windows Resource Kits\Tools\robocopy.exe" "\\PROTHES\C$\PATH_DO_DIRETORIO_ORIGEM" "C:\BACKUP\PROTHEUS\DATA" /MIR /COPYALL /ZB /r:2 > "C:\BACKUP\logs\PROTHEUS-log.txt"
  • Ambiente Linux:

Aqui vamos precisar chamar um script  que executa o modo console do WinSCP e passa um script de referencia, ficando assim:

"C:\Program Files\WinSCP3\WinSCP.com"/script="C:\BACKUP\ZEUS\ZEUS-scripts.txt" 1> "C:\BACKUP\logs\ZEUS-log.txt"

O próximo script ficara assim:

# Nosso Script do WinSCP =)

# Não requisita confirmação para sobrescrita de arquivos.
option batch off

#Abre conexão SSH
open usuario:senha@IP_DO_SERVIDOR:PORTA_SSH

#Sincroniza pastas
synchronize both C:\BACKUP\ZEUS\DATA  /CAMINHO/DA/PASTA/SINCRONIZADA

#fecha a conexão e sai
close
exit

5. Agendamento de tarefas do Windows

Ai é o processo simples de agendamento que já estamos bem habituados a fazer, vou agendar o sincronismo com um ambiente linux  de exemplo, mas é o mesmo esquema para windows, fiz um processo bem simples e básico:

Vá em Start > Control Panel > Sheduled Tasks > Add Sheduled Tasks

  • Vamos criar nosso agendamento, clique em Next:

tela1

  • Clique em Browse para escolhermos o batch que ja criamos.

tela2

  • Vamos ao nosso script C:\BACKUP\ZEUS\ZEUS.bat:

tela3

  • Vou agendar nosso script para ser feito toda semana.

tela4

  • Vamos estabelecer os horarios e os dias da semana q vamos executar.

tela5

  • Usei o usuario administrador local para agendar esta tarefa.

tela6

  • Pronto, agora é so finalizar e aguardar o agendamento executar na hora agendada, e ver os logs no arquivo que referenciamos.

tela7

Espero que tenha sido util pessoal, aqui tenho bem mais ambientes sincronizados e esta funcionando redondinho, elaborei ainda mais requintado com um vbs enviando email para um grupo do AD com o arquivo de log anexo e status do backup, lógico com a ajuda do pessoa especialista em Microsoft aqui, caso precisem de uma ideia assim, comentem ae que vejo de fazer um post sobre isso !!

[]’sss

Read Full Post »

Older Posts »