Iniciar uma conversa

Como posso sincronizar diretórios usando Robocopy ou Rsync (Linux), como a pasta mail, para uma outra máquina (inclui migração de servidor)?

Para aqueles que usam Linux, veja detalhes sobre Rsync em http://ss64.com/bash/rsync.html

Veja também um exemplo de comando do Rsync, que referencia primeiro a pasta mail de origem e depois o destino e mantém destino exatamente igual à origem:

rsync -v -rlt -z -p --delete --log-file=rsync_mail.log /opt/icewarp/mail root@200.93.146.40:/opt/icewarp

Já a ferramenta Robocopy, da Microsoft é gratuita e pode ser usada para plataforma Windows. Clique aqui para obter o Robocopy do site da Microsoft, ressaltando que versões atuais do Windows já possuem a mesma. Caso deseje uma interface gráfica para o Robocopy, acesse: http://betterrobocopygui.codeplex.com/

Exemplo de uso do Robocopy para sincronizar a pasta MAIL do IceWarp em outra máquina, porém na mesma rede local:

robocopy c:\merak\mail\ \\192.168.0.1\d$\merak\mail\ /MIR /SEC /R:00 /W:00 /LOG:c:\robologs\copiamail.log

Os parâmetros /R:00 e /W:00 podem ser úteis, já que por padrão o Robocopy tenta novamente 1 milhão de vezes cópias que tenham falhada e há um intervalo de 30 segundos entre tantivas. Com os parâmetros referenciados, não haverá retentativa.

Atenção: caso use o Windows Vista, 7 ou Windows 2008, é automaticamente incluso uma versão do Robocopy que suporta multithreading (veja na pasta windows/system32). Caso use o parâmetro /MT:x onde x é o numero de threads (como por exemplo, 32), deverá ter melhor performance.

Cuidado, programas como Robocopy recebem como parâmetro pasta origem seguida da pasta de destino. Especificar a sintaxe de forma incorreta pode fazer com que os e-mails originais sejam apagados. Teste com cuidado, não nos responsabilizamos.

Ressaltando que o comando acima referenciado usa o parâmetro /MIR (mirror, espelho), ou seja, ele manterá os arquivos na pasta de destino iguais aos da pasta de origem, excluindo arquivos da pasta de destino que não existam mais na origem e copiando arquivos da origem para o destino, quando não existem no destino.

Migrando IceWarp de servidor

Uma ótima sugestão para aqueles que estão migrando de máquina é realizar o espelhamento via Robocopy ao menos uma vez, dessa forma, em cópias seguintes, o processo será mais rápido. Nesse caso, temos as seguintes sugestões:

- A opção mais façil e recomendada é ficar realizando Robocopy com a sintaxe anteriormente referenciada (/MIR) de forma constante.

No caso do Windows, você pode criar um batch da seguinte forma, que fica em loop:

:begin
robocopy c:\merak\mail\ \\192.168.0.1\d$\merak\mail\ /MIR /SEC /R:00 /W:00 /LOG:c:\robologs\copiamail.log
goto begin

Determine quanto tempo demora a cópia após várias sincronizações completadas. Mantenha o TTL do host referente ao MX baixo alguns dias antes da migração (5 min.) e, na data/hora da migração, pare os serviços do servidor antigo e do novo, sincronizando todos e-mails uma última vez do servidor antigo para o servidor novo. Dessa forma, você não terá duplicados.

Após finalizada a cópia, inicie serviços no servidor novo. Mantenha o antigo com os serviços parados/desabilitados (Caso apenas pare os serviços sem desabilitá-los, cuidado com o Watchdogd do IceWarp, em Ferramentas/Watchdog de serviços, desabilitando todos os checkboxes para que serviços não sejam reiniciados).

- Segue outra opção mais complexa, caso não queira manter o serviço offline.

Faça a cópia com a linha de comando acima citada. Mantenha o TTL do host referente ao MX no seu DNS baixo (por exemplo, 5 minutos), alguns dias antes da migração. Em seguida, digamos que você apontou o MX (recebimento de emails) para o novo servidor. No servidor antigo, defina os domínios como backup domain e apague todas as contas, de forma que, quaisquer e-mails recebidos no servidor antigo, serão enviados para o servidor novo. Caso opte por este caminho, deve ocorrer o fato de que a cópia via Robocopy, não ter sincronizado todos emails, já que no momento em que você altera o MX, a cópia do Robocopy não está mais atualizada.

A solução seria, colocar logo o servidor novo no ar (desabilitando os serviços no servidor antigo) e realizar mais uma cópia da pasta mail do servidor antigo para o novo, porém sem usar o parâmetro /MIR, já que ela causaria problemas, pois o servidor novo já está no ar e não podemos simplesmente sincronizá-lo com o servidor antigo, pois os novos emails que estão chegando no servidor novo seriam apagados.

A idéia, nesse caso, copiar todos emails do servidor antigo para o novo, sem realizar sincronização (/mir). Pode ocorrer do sistema copiar emails que já haviam sido copiados e gerar duplicação na caixa dos usuários no novo servidor, porém e-mails não seriam perdidos e seu sistema não ficaria fora do ar.

Veja como fica a sintaxe nesse caso:

robocopy c:\merak\mail\ \192.168.0.1\d$\merak\mail\ /E /SEC /R:00 /W:00 /MT:32 /LOG:c:\robologs\copiamail2.log

Obs: /MT:32 (multithreading) disponível apenas no Windows 2008/Windows 7/Windows Vista, que já incluem o Robocopy com tal funcionalidade.

Outro switch que vale conhecer e pode ser útil é o /XO, que copia da origem para o destino apenas o que já não existe no destino. Pode ser útil para sincronizar de um storage em produção para um novo que passara a ser usado, sem recopiar o que já existe no novo destino. Use com bastante cautela, realizando testes anteriormente. Ainda, /MAXAGE:X pode ser útil, onde X é a idade máxima de e-mails a serem copiados.

Outras informações

Maiores detalhes sobre robocopy podem ser obtidos digitando robocopy /? na linha de comando. Veja também: http://ss64.com/nt/robocopy.html. Há diversos outros parâmetros úteis como copiar em modo que permite reiniciar onde parou (/z, o que o torna mais lento) e /XF para excluir determinados sufixos (como .log) da cópia.

Pode ser útil efetuar o agendamento do Robocopy através do IceWarp, que te informará quando o backup for iniciado. Caso queira ser informado no momento em que o backup é finalizado, você pode efetuar o envio de um e-mail via linha de comando após a execução do Robocopy. 

Uma possibilidade que vale citar é realizar uma sincronização mensal ou semanal da pasta mail, para evitar que a própria sincronização faça uma cópia apagada da pasta, caso determinado usuário, por exemplo, tenha excluída uma pasta inteira. Cuidado com questões de performance, evitando que rotinas de backup estejam em execução durante o horário de maior uso do Cliente Web.

Escolher arquivos ou arraste e solte arquivos
Esse artigo foi útil?
Sim
Não
  1. Flávio Zarur Lucarelli

  2. Publicado
  3. Atualizado

Comentários