Como sincronizar arquivos de backup do VPS para o Windows usando o cwRsync

Tutorial de como sincronizar os backups gerados pelo ISPConfig no VPS para o desktop Windows automaticamente usando o Agendador de Tarefas. Para isso usaremos alguns comandos não documentados e o cwRsync, que é muito parecido com o rsync para Linux.

Neste artigo mostrarei como baixar os backups dos sites mas a mesma dica pode ser usada para qualquer arquivo ou diretório no servidor.

Sincronizando arquivos de backup do VPS para o Windows usando cwRsync
1 Baixando e instalando o cwRsync

cwRsync é uma implementação do rsync para Linux compilado para Windows com as DLLs do Cygwin. A ferramenta é gratuita para a versão linha de comando.

1a ⇒ Crie uma pasta no Windows que conterá os arquivos do cwRsync e os backups que baixaremos do servidor. Sugestão: crie a pasta na raiz do sistema ( C:\rsync )

C:\rsync

1b ⇒ Baixe o cwRsync para a pasta criada acima. Link para o download: https://www.itefix.net/content/cwrsync-free-edition

O arquivo estará compactado, descompacte o conteúdo e copie os arquivos de dentro da pasta cwRsync_5.5.0_x86_Free para C:\rsync (em C:\rsync deverá conter a pasta bin e 3 outros arquivos).

1c ⇒ Prepare o sistema para conseguir executar o rsync de qualquer local. Dentro da pasta C:\rsync há um arquivo chamado cwrsync.cmd, clique duas vezes nele para executar.

Em seguida inclua o caminho dos binários rsync nas variáveis de sistema do Windows: Clique em Computador → Configurações Avançadas do Sistema → Variáveis de Ambiente, no segundo quadro “Variáveis do Sistema” clique duas vezes  na variável “Path“. Abrirá uma janela de edição com vários caminhos já definidos pelo Windows, no final da linha adicione o cwrsync separando por um ponto e vírgula conforme mostrado abaixo:

;C:\rsync\bin\

*Após modificar o path confirme todas as telas de propriedade abertas.

2 Configurando o SSH

No pacote do cwRsync além do comando rsync há também o ssh e o ssh-keygen, o qual usaremos para criar um par de chaves que permitirá acessar o servidor Linux sem necessidade de digitar a senha.

2a ⇒ Abra o prompt de comando do Windows (MS-DOS). Clique em “Iniciar” e na caixa de pesquisa digite “cmd“, na lista selecione cmd.exe para abrir o prompt.

2b ⇒ Acesse o diretório do usuário que já foi criado na instalação do cwRsync e crie um par de chaves:

ms-dos> cd C:\rsync\home\%USERNAME%\.ssh

ms-dos> ssh-keygen

* Pressione ENTER nas perguntas da tela. Será criado um par de chaves pública e privada na pasta .ssh. Usaremos o conteúdo do arquivo id_rsa.pub no próximo passo.

2c ⇒ Acesse o servidor Linux com as credenciais de superusuário root. Dentro do diretório  /root/.ssh há um arquivo chamado authorized_keys. Edite-o e cole o conteúdo do arquivo id_rsa.pub gerado no Windows.

2d ⇒ Corrigindo as permissões das chaves no Windows: Ao tentarmos executar o cwRsync uma mensagem de alerta será exibida dizendo que o arquivo de chaves privadas tem permissões erradas. Mensagem de alerta:

Permission 0770 are too open
This private key will be ignored
Load key bad permissions

Para acertar isso usaremos um comando não documentado do Windows chamado cacls.exe (esse comando permite alterar as permissões de arquivos pela linha de comando). Dentro da pasta C:\rsync\home\%USERNAME%\.ssh execute os seguintes comandos (prompt do MS-DOS):

ms-dos> cd C:\rsync\home\%USERNAME%\.ssh

ms-dos> cacls id_rsa /P Todos:N

ms-dos> cacls id_rsa /P %USERNAME%:F

2e ⇒ Teste o cwRsync: Crie uma pasta teste e use o rsync conforme demonstrado abaixo:

ms-dos> mkdir teste

ms-dos> cd teste

ms-dos> rsync -avz -e ssh root@IP_DO_SERVIDOR:/var/log/auth.log .

* Será necessário confirmar a exceção de chave quando usar o comando pela primeira vez.

* No exemplo acima fizemos uma cópia do arquivo auth.log do Linux para o Windows. Note o “ponto” no final do comando rsync.

3 Acionando a opção de backup por site no ISPConfig 

No tutorial de como agendar backups para o ADrive já mostrei como ativar os backups de sites configurados no ISPConfig. Aquela é uma opção bem útil pois faz backup diário de todos os arquivos do site e do banco de dados compactando tudo em 2 arquivos. Segue abaixo um resumo de como usar a funcionalidade:

3a ⇒ Em cada site configurado no ISPConfig existe uma aba “Backup” que está com a função desativada por padrão. Para ativar  por site acesse:

ISPConfig → Sites → <Selecione um site na lista> → aba Backup 

» Intervalo de Backup: <- Daily (diário)

» Número de cópias: <- 1 (número de cópias do site que deseja manter no ISPConfig. Como faremos o download diariamente para o Windows não há necessidade de manter várias cópias no servidor, lembre-se que dependendo do tamanho do site isso poderá ocupar muito espaço)

» Exclude Directories: <- bin/*,etc/*,lib/*,lib64/*,log/*,tmp/*,usr/*,var/*,web/wp-content/managewp/backups/*,web/wp-content/updraft/*.zip,web/wp-content/updraft/*.gz

*Na lista de diretórios a excluir do backup adicionei aqueles gerados pelo ManageWP e pelo UpdraftPlus, mesmo que você não use esses plugins pode configurar conforme mostrado.

3b ⇒ Salve as opções acima e repita o procedimento 3a para todos os sites que deseja ativar o backup automático. Os backups serão gerados a partir da madrugada do dia seguinte, e o diretório onde os arquivos serão gravados no servidor será /var/backup/ (note que para cada site o ISPConfig grava um subdiretório com o nome do usuário de controle)

4 Configurando o Agendador de Tarefas do Windows 

O último passo deste tutorial será criar uma rotina no Agendador de Tarefas do Windows que baixará automaticamente os backups do servidor. *Para termos mais controle sobre os comandos criaremos um arquivo de script .bat dentro da pasta C:\rsync\home\%USERNAME%

4a ⇒ Crie uma pasta chamada C:\rsync\home\%USERNAME%\backups que abrigará os backups baixados pelo script.

4b ⇒ Crie um arquivo chamado rsyncvps.bat dentro da pasta acima e cole o seguinte conteúdo:

* Substitua as partes em vermelho pelas informações do seu desktop/servidor

* Note que usaremos o comando não documentado forfiles do Windows para manter somente 7 conjuntos de backup no desktop, ajuste se achar necessário

* Quando executamos o comando rsync para Windows, que usa as bibliotecas do Cygwin, o caminho de destino deverá ser escrito conforme mostrado abaixo e com barra normal à direita (no Cygwin o drive C:\ é denominado /cygdrive/c/)

@echo off

REM Mensagens de cabecalho
echo(
echo TRANSFERENCIA DE BACKUP 
echo Copiando arquivos do servidor, aguarde..
echo(

REM Grava a hora inicial:
set STARTTIME=%TIME%
echo Backup iniciado as: %STARTTIME%
for /F "tokens=1-4 delims=:.," %%a in ("%time%") do (
 set /A "start=(((%%a*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100"
)

REM Baixa o backup incremental e deleta backups antigos
rsync -avz -e ssh root@IP_DO_SERVIDOR:/var/backup/ /cygdrive/c/rsync/home/%USERNAME%/backups/.
echo(
echo Backup sincronizado. Deletando os arquivos mais antigos que 7 dias..
REM Durante os primeiros 7 dias de sincronizacao uma mensagem sera exibida dizendo que nehum arquivo foi encontrado. Isso deve-se ao fato de que o comando forfiles nao encontrou arquivos antigos para excluir.
REM O parametro "D -7" define que somente os arquivos dos ultimos 7 dias devem ser mantidos.
@echo on
forfiles /P "C:\rsync\home\%USERNAME%\backups" /S /M *.* /D -7 /C "cmd /c del @path"

@echo off
REM Grava a hora do termino:
set ENDTIME=%TIME%
for /F "tokens=1-4 delims=:.," %%a in ("%time%") do (
 set /A "end=(((%%a*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100"
)

REM Calcula o tempo decorrido:
set /A elapsed=end-start
set /A hh=elapsed/(60*60*100), rest=elapsed%%(60*60*100), mm=rest/(60*100), rest%%=60*100, ss=rest/100, cc=rest%%100
if %mm% lss 10 set mm=0%mm%
if %ss% lss 10 set ss=0%ss%
if %cc% lss 10 set cc=0%cc%

REM Exibe o tempo decorrido:
echo(
echo HORA DE INICIO : %STARTTIME%
echo HORA DE TERMINO: %ENDTIME%
echo TEMPO DECORRIDO: %hh%hr %mm%min e %ss%seg

REM Exibe a mensagem final e faz uma pausa para mostrar que executou o script:
echo(
echo Backup Finalizado!
pause
exit

4c ⇒ Adicione a tarefa no Agendador do Windows. Clique em “Iniciar” e na caixa de pesquisa digite “Agendador“, escolha Agendador de Tarefas na lista. *Os passos abaixo são para o Windows 7, talvez a sua versão do sistema seja um pouco diferente.

No painel esquerdo selecione “Criar Tarefa..

[Aba Geral]
» Nome: <- Download do Backup diário do VPS

[Aba Disparadores]
Novo..
Marcar Diário e acertar o horário que deseja executar a tarefa

[Aba Ações]
Novo..
» Ação: <- <Iniciar um programa>
» Program/script: <- Selecione o script rsyncvps.bat que criamos no passo 4b

* Salve as telas do Agendador.

  • Quando criamos tarefas no Windows a opção executar por demanda é ativada por padrão. Isso significa que mesmo se o computador estiver desligado no horário agendado o Windows executará o script logo que possível após iniciado.
  • Em um site compactado de 50Mb a tarefa executa em apenas 2 minutos (banda larga de 15mb/s).

©2014-2024 Fator Binário - Todos os direitos reservados

Fazer login com suas credenciais

Esqueceu sua senha?