Utilizando o RSYNC para fazer backups de servidores e estações Windows

10
Utilizando o RSYNC para fazer backups de servidores e estações Windows Autor: Dailson Fernandes (fofão) - http://www.dailson.com.br <listas at dailson.com.br> Data: 08/08/2008 Introdução Este artigo pode ser acessado diretamente no site www.dailson.com.br . Quem utiliza o rsync para fazer backups entre máquinas Linux, sabe como é fácil manter backups centralizados e atualizados de forma fácil, eficiente e segura. E ainda mais se sua unidade de fita for em um servidor Linux (como é o meu caso), você pode deixar seus scripts de backup rodando para reunir todos os dados importantes em uma única máquina para depois fazer o backup em fita magnética. Antigamente (ou atualmente dependendo do Administrador da Rede) quando queríamos fazer backups entre servidores remotos e centralizá-los, geralmente utilizávamos o FTP, que através de alguns comandos é possível fazer a conexão, login e senha automático e ainda mandar todos os arquivos para serem feitos backups em um servidor. O grande problema aí é que o FTP manda a senha em texto plano pela rede e seus arquivos podem ser capturados durante a transferência. O rsync, como o nome sugere, é um programa que sincroniza remotamente os dados entre duas máquinas. Por ser baseado no antigo rcp (remote copy), o software herdou as propriedades de criptografia do protocolo SSH, o que torna sua transmissão de dados mais segura que o FTP. Além das propriedades de segurança, o rsync utiliza o protocolo remote-update, o que aumenta assustadoramente sua velocidade e diminui a quantidade de dados transferidos, pois são trocados entre os servidores somente as diferenças entre dois grupos de arquivos. Se alteramos uma dúzia de arquivos numa porção de centenas, ao executar um rsync do seu desktop para o servidor, somente os arquivos alterados serão enviados por upload e você ainda não corre o risco de algum espertinho utilizando um sniffer na rede capturar sua senha de FTP em texto plano. Resumindo, existem pelo menos quatro situações onde o rsync pode te ajudar: Utilizando o RSYNC para fazer backups de servidores e ... http://www.vivaolinux.com.br/artigos/impressora.php?co... 1 de 10 17-09-2012 14:02

Transcript of Utilizando o RSYNC para fazer backups de servidores e estações Windows

Page 1: Utilizando o RSYNC para fazer backups de servidores e estações Windows

Utilizando o RSYNC para fazer backups de servidores e estaçõesWindows

Autor: Dailson Fernandes (fofão) - http://www.dailson.com.br <listas atdailson.com.br>Data: 08/08/2008

Introdução

Este artigo pode ser acessado diretamente no site www.dailson.com.br.

Quem utiliza o rsync para fazer backups entre máquinas Linux, sabe como é fácilmanter backups centralizados e atualizados de forma fácil, eficiente e segura. E aindamais se sua unidade de fita for em um servidor Linux (como é o meu caso), você podedeixar seus scripts de backup rodando para reunir todos os dados importantes emuma única máquina para depois fazer o backup em fita magnética.

Antigamente (ou atualmente dependendo do Administrador da Rede) quandoqueríamos fazer backups entre servidores remotos e centralizá-los, geralmenteutilizávamos o FTP, que através de alguns comandos é possível fazer a conexão, logine senha automático e ainda mandar todos os arquivos para serem feitos backups emum servidor. O grande problema aí é que o FTP manda a senha em texto plano pelarede e seus arquivos podem ser capturados durante a transferência.

O rsync, como o nome sugere, é um programa que sincroniza remotamente os dadosentre duas máquinas. Por ser baseado no antigo rcp (remote copy), o software herdouas propriedades de criptografia do protocolo SSH, o que torna sua transmissão dedados mais segura que o FTP.

Além das propriedades de segurança, o rsync utiliza o protocolo remote-update, o queaumenta assustadoramente sua velocidade e diminui a quantidade de dadostransferidos, pois são trocados entre os servidores somente as diferenças entre doisgrupos de arquivos.

Se alteramos uma dúzia de arquivos numa porção de centenas, ao executar um rsyncdo seu desktop para o servidor, somente os arquivos alterados serão enviados porupload e você ainda não corre o risco de algum espertinho utilizando um sniffer narede capturar sua senha de FTP em texto plano.

Resumindo, existem pelo menos quatro situações onde o rsync pode te ajudar:

Utilizando o RSYNC para fazer backups de servidores e ... http://www.vivaolinux.com.br/artigos/impressora.php?co...

1 de 10 17-09-2012 14:02

Page 2: Utilizando o RSYNC para fazer backups de servidores e estações Windows

copiando (ou sincronizando) arquivos entre dois diretórios locais;copiando (ou sincronizando) arquivos de sua máquina local para um servidorremoto;copiando (ou sincronizando) arquivos de um servidor remoto para sua máquinalocal;listando os arquivos de um diretório no servidor remoto (como um "remote ls").

Só uma curiosidade, o rsync é desenvolvido por Andrew Tridgell, o mesmo autor doSAMBA. Veja em: http://samba.anu.edu.au/rsync/

Como usar o RSYNC e SSH no Windows

Você deve estar pensando em instalar o CYGWIN para começar com o ssh e rsync nãoé? ESQUEÇA! Deixe o CYGWIN pra lá, existe um aplicativo chamando cwRsync queinstala apenas o necessário para sua máquina Windows se comunicar com qualquerservidor Linux na hora, feito caldo de cana! E ainda é possível fazer um servidor, ouseja, o Windows ser um servidor rsync para sincronização nas duas vias: Windows ->Linux e Linux -> Windows. Mas isto é objeto para outro artigo.

Uma dica, se você quiser basta copiar o diretório c:\Arquivos de Programas\cwRsyncpara qualquer estação que tem o mesmo efeito de usar o executável da instalação.

Bom, no Linux, já está tudo pronto, não precisa fazer nada (basicamente), pois amaioria das distribuições já trazem o ssh e rsync instalados por padrão, caso nãotenha na sua distribuição, instale com o gerenciador de pacotes da sua preferência, oubaixe o código fonte e compile!

Rsync:

http://samba.anu.edu.au/rsync/

SSH:

http://www.openssh.com/

A idéiaO principal para mim é fazer os backups dos arquivos importantes do usuário sem queele perceba que todos os seus dados estão sendo guardados de forma seguraindependente da vontade dele.

Utilizando o RSYNC para fazer backups de servidores e ... http://www.vivaolinux.com.br/artigos/impressora.php?co...

2 de 10 17-09-2012 14:02

Page 3: Utilizando o RSYNC para fazer backups de servidores e estações Windows

Por exemplo, você quer guardar os documentos da empresa ou ainda os emailscorporativos. Se você deixar esta responsabilidade nas mãos do usuário... bom ... vocêjá sabe... Mas que tal deixar uma tarefa agendada que faz isso diariamente?

Obtendo e instalando o cwRsync

Você pode obter o cwRsync aqui. Basta baixar o primeiro arquivo:cwRsync_2.1.4_Installer.zip.

Instale cwRsync_2.1.4_Installer.zip confirmando todas as opções.

Pronto! Foi criado na pasta C:\Arquivos de Programas um diretório chamandocwRsync. Lá estão os binários do ssh e rsync e um arquivo de exemplo que é autoexplicativo, porém vamos a alguns exemplos.

Configurando o arquivo .bat ou .cmdpara fazer a sincronizaçãoO funcionamento é simples, mas devem existir no cabeçalho do arquivo, a declaraçãode algumas variáveis, então deixa sempre o cabeçalho do arquivo desta forma:

@ECHO OFFSETLOCALSET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNCSET CYGWIN=nontsecSET HOME=%HOMEDRIVE%%HOMEPATH%SET CWOLDPATH=%PATH%SET PATH=%CWRSYNCHOME%\BIN;%PATH%

E logo abaixo destas linhas pode começar a escrever as linhas que vão copiar seusdiretórios e/ou arquivos para um servidor remoto.

Exemplos

Em primeiro lugar, precisamos convencionar que:

C:\ para o rsync é /C:\Arquivos de Programas para o rsync é /"Arquivos de Programas"C:\Arquivos de Programas\Microsoft Office para o rsync é /"Arquivos deProgramas/"Microsoft Office"

Utilizando o RSYNC para fazer backups de servidores e ... http://www.vivaolinux.com.br/artigos/impressora.php?co...

3 de 10 17-09-2012 14:02

Page 4: Utilizando o RSYNC para fazer backups de servidores e estações Windows

Opções:

--recursive ou -r = cópia recursiva, ou seja todos os arquivos e subdiretóriosabaixo do diretório informado;-a = modo arquivo;-v = Modo detalhado (verbose).

Então vamos aos exemplos.

Obs: Lembrando que todas as linhas abaixo são inteiras com enter apenas no final.

Para o exemplo usaremos o servidor 192.168.0.1:

Usuário do servidor: root Local: Um HD de backup montado em /media/hd_backup

1. Fazer backup dos emails do outlook do usuário Dailson:

rsync -av /"Documents and Settings"/dailson/"Configurações Locais"/"Dados deaplicativos"/Microsoft/Outlook/outlook.pst [email protected]:/media/backup

2. Fazer o backup da pasta C:\Sistema Empresa:

rsync -av --recursive /"Sistema Empresa" [email protected]:/media/hd_backup

3. Guardar a pasta meus documentos do usuário dailson:

rsync -av --recursive /"Documents and Settings"/dailson/"Meus documentos"[email protected]:/media/hd_backup

4. Guardar a pasta HOME inteira do usuário dailson:

rsync -av --recursive /"Documents and Settings"/dailson [email protected]:/media/hd_backup

5. Fazer backup da pasta do banco de dados da empresa C:\Banco de Dados:

rsync -av --recursive /"Banco de Dados" [email protected]:/media/hd_backup

Obs1: Lembrando que todas as linhas abaixo são inteiras com enter apenas no final.

Então um script backup.bat completo com os exemplos acima ficaria desta forma:

@ECHO OFFREM *****************************************************REM Script de Backup

Utilizando o RSYNC para fazer backups de servidores e ... http://www.vivaolinux.com.br/artigos/impressora.php?co...

4 de 10 17-09-2012 14:02

Page 5: Utilizando o RSYNC para fazer backups de servidores e estações Windows

REM Autor: Dailson FernandesREM Data: 01/08/2008REM Função: Faz o backup das pastas importantes do usuárioREM *****************************************************SETLOCALSET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNCSET CYGWIN=nontsecSET HOME=%HOMEDRIVE%%HOMEPATH%SET CWOLDPATH=%PATH%SET PATH=%CWRSYNCHOME%\BIN;%PATH%rsync -av /"Documents and Settings"/dailson/"Configurações Locais"/"Dados deaplicativos"/Microsoft/Outlook/outlook.pst [email protected]:/media/backup

rsync -av --recursive /"Sistema Empresa" [email protected]:/media/hd_backup

rsync -av --recursive /"Documents and Settings"/dailson/"Meus documentos"[email protected]:/media/hd_backup

rsync -av --recursive /"Documents and Settings"/dailson [email protected]:/media/hd_backup

rsync -av --recursive /"Banco de Dados" [email protected]:/media/hd_backup

Opções que você deve conhecer

1. Mantendo a imagem do backupidêntica a origemUm backup feito com rsync vai ser feito de forma incremental. Porém se o usuáriorenomear um arquivo, apagar ou mover da origem (por exemplo da pasta MeusDocumentos), o rsync irá copiá-lo novamente e ficará um fantasma no destino, ou seja,se o usuário apagar alguns arquivo, eles continuaram no backup e o efeito colateraldisso é que o backup crescerá sem parar.

A idéia é fazer o seguinte, quando o usuário apagar um arquivo, o arquivo deve serapagado do backup também. A opção do rsync que faz isso é:

--delete

Então a linha correta para o backup da pasta meus documentos do exemplo anteriorseria:

Utilizando o RSYNC para fazer backups de servidores e ... http://www.vivaolinux.com.br/artigos/impressora.php?co...

5 de 10 17-09-2012 14:02

Page 6: Utilizando o RSYNC para fazer backups de servidores e estações Windows

rsync -av --recursive --delete /"Documents and Settings"/dailson/"Meus documentos"[email protected]:/media/hd_backup

2. Evitando backup de alguns arquivosVocê não deseja detonar seu espaço em disco com as músicas e filmes do seu usuárionão é? Você pode dizer ao rsync para evitar alguns tipos de arquivos, bastando paraisso usar a seguinte opção:

--exclude="O que se quer evitar"

Exemplo: Vou evitar que vá para o backup os seguintes arquivos:

Arquivos de música (MP3, OGG, WAV, WMA...)Arquivos de Filme (AVI, MPEG, MPG, FLV, MP4, WMV, AMV ...)Programas e arquivos temporários (EXE, COM, TMP)Fotos e imagens (JPG, JPEG, BMP ...)

Basta você separar com espaço e colocar quantas exceções quiser. E ainda podeutilizar coringas. Por exemplo:

--exclude=*.jpg --exclude=*.avi --exclude=*.mp3 ...

O nosso exemplo da pasta Meus Documentos já com estas opções tratadas nestetópico ficariam deste jeito:

rsync -av --recursive --delete -e "ssh -p 16117" --exclude=*.tmp --exclude=*.*~--exclude=*.jpg --exclude=*.avi --exclude=*.mp3 --exclude=*.mp4 --exclude=*.wav--exclude=*.flv --exclude=*.wma --exclude=*.mpeg --exclude=*.mpg --exclude=*.wmv--exclude=*.exe --exclude=*.amv --exclude=*.com --delete /"Documents andSettings"/dailson/"Meus documentos" [email protected]:/media/hd_backup

Neste caso o script completo ficaria desta forma:

Obs: Lembrando que todas as linhas abaixo são inteiras com enter apenas no final.

Grave ele na raiz do C:\ e chame de backup.bat:

@ECHO OFFREM *****************************************************REM Script de BackupREM Autor: Dailson FernandesREM Data: 01/08/2008REM Função: Faz o backup das pastas importantes do usuário

Utilizando o RSYNC para fazer backups de servidores e ... http://www.vivaolinux.com.br/artigos/impressora.php?co...

6 de 10 17-09-2012 14:02

Page 7: Utilizando o RSYNC para fazer backups de servidores e estações Windows

REM *****************************************************SETLOCALSET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNCSET CYGWIN=nontsecSET HOME=%HOMEDRIVE%%HOMEPATH%SET CWOLDPATH=%PATH%SET PATH=%CWRSYNCHOME%\BIN;%PATH%

rsync -av /"Documents and Settings"/dailson/"Configurações Locais"/"Dados deaplicativos"/Microsoft/Outlook/outlook.pst [email protected]:/media/backup

rsync -av --recursive --delete --exclude=*.tmp --exclude=*.*~ --exclude=*.jpg--exclude=*.avi --exclude=*.mp3 --exclude=*.mp4 --exclude=*.wav --exclude=*.flv--exclude=*.wma --exclude=*.mpeg --exclude=*.mpg --exclude=*.wmv --exclude=*.exe--exclude=*.amv --exclude=*.com /"Sistema Empresa" [email protected]:/media/hd_backup

rsync -av --recursive --delete --exclude=*.tmp --exclude=*.*~ --exclude=*.jpg--exclude=*.avi --exclude=*.mp3 --exclude=*.mp4 --exclude=*.wav --exclude=*.flv--exclude=*.wma --exclude=*.mpeg --exclude=*.mpg --exclude=*.wmv --exclude=*.exe--exclude=*.amv --exclude=*.com /"Documents and Settings"/dailson/"Meusdocumentos" [email protected]:/media/hd_backup

rsync -av --recursive --delete --exclude=*.tmp --exclude=*.*~ --exclude=*.jpg--exclude=*.avi --exclude=*.mp3 --exclude=*.mp4 --exclude=*.wav --exclude=*.flv--exclude=*.wma --exclude=*.mpeg --exclude=*.mpg --exclude=*.wmv --exclude=*.exe--exclude=*.amv --exclude=*.com /"Documents and Settings"/[email protected]:/media/hd_backup

rsync -av --recursive --delete --exclude=*.tmp --exclude=*.*~ --exclude=*.jpg--exclude=*.avi --exclude=*.mp3 --exclude=*.mp4 --exclude=*.wav --exclude=*.flv--exclude=*.wma --exclude=*.mpeg --exclude=*.mpg --exclude=*.wmv --exclude=*.exe--exclude=*.amv --exclude=*.com /"Banco de Dados" [email protected]:/media/hd_backup

Usando a tarefa agendada ou o AT do Windows

Bom, já que todo o trabalho está feito, só falta agendar a tarefa para que este scriptseja executado diariamente, ou de acordo com a sua necessidade. Mas não custa nadalembrar que da primeira acontecerá o seguinte:

1. Somente da primeira vez que você rodar o script, o rsync (ssh) pedirá para vocêaceitar a chave do host no qual está enviando os dados. Para isso basta digitar yes epronto. Esta pergunta não acontecerá novamente.

Utilizando o RSYNC para fazer backups de servidores e ... http://www.vivaolinux.com.br/artigos/impressora.php?co...

7 de 10 17-09-2012 14:02

Page 8: Utilizando o RSYNC para fazer backups de servidores e estações Windows

2. A primeira cópia é completa e dependendo da quantidade de dados irá demorar umpouco. Porém se imediatamente após a cópia você chamar o script novamente, veráque o rsync não vai fazer nada. O rsync a partir da segunda cópia só vai copiar osarquivo que foram alterados, criados ou deletará do backup o que foi deletado daorigem.

3. Para agendar a tarefa deste script rodar automaticamente diariamente ou a suaescolha vá em tarefas agendadas do Windows em:

Iniciar / Programas / Acessórios / Ferramentas / Tarefas Agendadas

Ou se preferir, use o AT do Windows, que é um agendador de tarefas semelhante ao doLinux que também roda em linha de comando. Se quiser aprender sobre o AT noWindows, visite a seguinte página:

http://support.microsoft.com/kb/313565/pt-br

Fazendo com que o script de backup não peça senha

Antes da cópia começar, o login é feito via ssh. Nesta hora o login é passado pelastring [email protected]:/media/hd_backup, porém imediatamente depois é solicitadaa senha.

Então este incomodo é gerado, ou seja, toda vez que a tarefa agendada iniciar o scriptde backup, a senha será solicitada. E se o usuário não tiver na frente do computador?Ou se esse backup for feito de madrugada?

Para resolver este problema, basta gerar as chaves pública e privada e fazer com queo cwRsync comece o backup sem intervenção humana.

Gerando as chavesNo servidor Linux, gere as chaves públicas e privadas da seguinte forma. No usuárioque você fará a conexão sem senha (vou utilizar o root como exemplo), digite noterminal:

# ssh-keygen

Quando perguntado para entrar com uma "passphrase", apenas tecle "Enter" duasvezes para que fique em branco, caso contrário esta frase precisará ser digitadaposteriormente.

A saída do comando é esta:

Utilizando o RSYNC para fazer backups de servidores e ... http://www.vivaolinux.com.br/artigos/impressora.php?co...

8 de 10 17-09-2012 14:02

Page 9: Utilizando o RSYNC para fazer backups de servidores e estações Windows

Generating public/private rsa key pair.Enter file in which to save the key(/root/.ssh/id_rsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in/root/.ssh/id_rsa.Your public key has been saved in/root/.ssh/id_rsa.pub.The key fingerprint is:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

Pronto, foram geradas suas chaves públicas e privada dentro do diretório /root/.ssh.São elas:

/root/.ssh/id_rsa (privada)/root/.ssh/id_rsa.pub (pública)

Agora faça o seguinte:

# cat /root/id_rsa.pub >> /root/.ssh/authorized_keys

É importante que a chave pública (id_rsa.pub) seja adicionada (usando o sinal demaior maior ">>") dentro do arquivo "authorized_keys", pois podem haver outrosclientes registrados neste mesmo arquivo.

Pegue o arquivo /root/.ssh/id_rsa (a sua chave privada) e copie no seguinte diretóriona sua máquina Windows:

c:\Documents and Settings\seu_usuário\.ssh

Pronto!

Agora rode novamente o backup.bat e veja que o backup é feito sem nenhumainterferência.

A chave privada está em "/root/.ssh/id_rsa" e a pública em "/root/.ssh/id_rsa.pub".

Conclusões e créditos

Bom, estou compartilhando a solução que achei em meu trabalho de fazer backups deservidores e estações Windows de forma segura e íntegra. Utilizo esta forma háalguns anos sem quaisquer tipos de problemas.

Utilizando o RSYNC para fazer backups de servidores e ... http://www.vivaolinux.com.br/artigos/impressora.php?co...

9 de 10 17-09-2012 14:02

Page 10: Utilizando o RSYNC para fazer backups de servidores e estações Windows

Existem muito mais opções que podem ser utilizadas com rsync. Para isso consulte omanual. Ele é muito bom e explicativo.

Se você tiver no Linux, digite "man rsync" ou consulte ele na web em:

http://www.samba.org/ftp/rsync/rsync.html

A introdução foi retirada do artigo de Fábio Berbert de Paula em Transferindoarquivos com o rsync/.

Geração de chaves: Conexões SSH sem senha fácil e descomplicado

Este artigo pode ser acessado a partir do meu site em:

http://www.dailson.com.br

E lembrem-se...

Flames > /dev/null!

http://www.vivaolinux.com.br/artigo/Utilizando-o-RSYNC-para-fazer-backups-de-servidores-e-estacoes-Windows

Voltar para o site

Utilizando o RSYNC para fazer backups de servidores e ... http://www.vivaolinux.com.br/artigos/impressora.php?co...

10 de 10 17-09-2012 14:02