Vous êtes sur la page 1sur 8

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

Quem utiliza o rsync para fazer backups entre mquinas Linux, sabe como fcil manter backups centralizados e atualizados de forma fcil, 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 mquina para depois fazer o backup em fita magntica. Antigamente (ou atualmente dependendo do Administrador da Rede) quando queramos fazer backups entre servidores remotos e centraliz-los, geralmente utilizvamos o FTP, que atravs de alguns comandos possvel fazer a conexo, login e senha automtico 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 transferncia. O rsync, como o nome sugere, um programa que sincroniza remotamente os dados entre duas mquinas. Por ser baseado no antigo rcp (remote copy), o software herdou as propriedades de criptografia do protocolo SSH, o que torna sua transmisso de dados mais segura que o FTP. Alm das propriedades de segurana, o rsync utiliza o protocolo remote-update, o que aumenta assustadoramente sua velocidade e diminui a quantidade de dados transferidos, pois so trocados entre os servidores somente as diferenas entre dois grupos de arquivos. Se alteramos uma dzia de arquivos numa poro de centenas, ao executar um rsync do seu desktop para o servidor, somente os arquivos alterados sero enviados por upload e voc ainda no corre o risco de algum espertinho utilizando um sniffer na rede capturar sua senha de FTP em texto plano. Resumindo, existem pelo menos quatro situaes onde o rsync pode te ajudar: copiando (ou sincronizando) arquivos entre dois diretrios locais; copiando (ou sincronizando) arquivos de sua mquina local para um servidor remoto; copiando (ou sincronizando) arquivos de um servidor remoto para sua mquina local; listando os arquivos de um diretrio no servidor remoto (como um "remote ls").

S uma curiosidade, o rsync desenvolvido por Andrew Tridgell, o mesmo autor do SAMBA. 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 comear com o ssh e rsync no ? ESQUEA! Deixe o CYGWIN pra l, existe um aplicativo chamando cwRsync que instala apenas o necessrio para sua mquina Windows se comunicar com qualquer servidor Linux na hora, feito caldo de cana! E ainda possvel fazer um servidor, ou seja, o Windows ser um servidor rsync para sincronizao nas duas vias: Windows -> Linux e Linux -> Windows. Mas isto objeto para outro artigo. Uma dica, se voc quiser basta copiar o diretrio c:\Arquivos de Programas\cwRsync para qualquer estao que tem o mesmo efeito de usar o executvel da instalao. Bom, no Linux, j est tudo pronto, no precisa fazer nada (basicamente), pois a maioria das distribuies j trazem o ssh e rsync instalados por padro, caso no tenha na sua distribuio, instale com o gerenciador de pacotes da sua preferncia, ou baixe o cdigo fonte e compile! Rsync: http://samba.anu.edu.au/rsync/

SSH: http://www.openssh.com/ A idia O principal para mim fazer os backups dos arquivos importantes do usurio sem que ele perceba que todos os seus dados esto sendo guardados de forma segura independente da vontade dele. Por exemplo, voc quer guardar os documentos da empresa ou ainda os emails corporativos. Se voc deixar esta responsabilidade nas mos do usurio... 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 opes. Pronto! Foi criado na pasta C:\Arquivos de Programas um diretrio chamando cwRsync. L esto os binrios do ssh e rsync e um arquivo de exemplo que auto explicativo, porm vamos a alguns exemplos. Configurando o arquivo .bat ou .cmd para fazer a sincronizao O funcionamento simples, mas devem existir no cabealho do arquivo, a declarao de algumas variveis, ento deixa sempre o cabealho do arquivo desta forma: @ECHO OFF SETLOCAL SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC SET CYGWIN=nontsec SET HOME=%HOMEDRIVE%%HOMEPATH% SET CWOLDPATH=%PATH% SET PATH=%CWRSYNCHOME%\BIN;%PATH% E logo abaixo destas linhas pode comear a escrever as linhas que vo copiar seus diretrios 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 de Programas/"Microsoft Office"

Opes:

--recursive ou -r = cpia recursiva, ou seja todos os arquivos e subdiretrios abaixo do diretrio informado; -a = modo arquivo; -v = Modo detalhado (verbose). Ento vamos aos exemplos. Obs: Lembrando que todas as linhas abaixo so inteiras com enter apenas no final. Para o exemplo usaremos o servidor 192.168.0.1: Usurio do servidor: root Local: Um HD de backup montado em /media/hd_backup 1. Fazer backup dos emails do outlook do usurio Dailson: rsync -av /"Documents and Settings"/dailson/"Configuraes Locais"/"Dados de aplicativos"/Microsoft/Outlook/outlook.pst root@192.168.10.202:/media/backup 2. Fazer o backup da pasta C:\Sistema Empresa: rsync -av --recursive /"Sistema Empresa" root@192.168.0.1:/media/hd_backup 3. Guardar a pasta meus documentos do usurio dailson: rsync -av --recursive /"Documents and Settings"/dailson/"Meus documentos" root@192.168.0.1:/media/hd_backup 4. Guardar a pasta HOME inteira do usurio dailson: rsync -av --recursive /"Documents and Settings"/dailson root@192.168.0.1:/media/hd_backup 5. Fazer backup da pasta do banco de dados da empresa C:\Banco de Dados: rsync -av --recursive /"Banco de Dados" root@192.168.0.1:/media/hd_backup Obs1: Lembrando que todas as linhas abaixo so inteiras com enter apenas no final. Ento um script backup.bat completo com os exemplos acima ficaria desta forma: @ECHO OFF REM ***************************************************** REM Script de Backup REM Autor: Dailson Fernandes REM Data: 01/08/2008 REM Funo: Faz o backup das pastas importantes do usurio REM ***************************************************** SETLOCAL SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC SET CYGWIN=nontsec SET HOME=%HOMEDRIVE%%HOMEPATH%

SET CWOLDPATH=%PATH% SET PATH=%CWRSYNCHOME%\BIN;%PATH% rsync -av /"Documents and Settings"/dailson/"Configuraes Locais"/"Dados de aplicativos"/Microsoft/Outlook/outlook.pst root@192.168.10.202:/media/backup rsync -av --recursive /"Sistema Empresa" root@192.168.0.1:/media/hd_backup rsync -av --recursive /"Documents and Settings"/dailson/"Meus documentos" root@192.168.0.1:/media/hd_backup rsync -av --recursive /"Documents and Settings"/dailson root@192.168.0.1:/media/hd_backup rsync -av --recursive /"Banco de Dados" root@192.168.0.1:/media/hd_backup Opes que voc deve conhecer 1. Mantendo a imagem do backup idntica a origem Um backup feito com rsync vai ser feito de forma incremental. Porm se o usurio renomear um arquivo, apagar ou mover da origem (por exemplo da pasta Meus Documentos), o rsync ir copi-lo novamente e ficar um fantasma no destino, ou seja, se o usurio apagar alguns arquivo, eles continuaram no backup e o efeito colateral disso que o backup crescer sem parar. A idia fazer o seguinte, quando o usurio apagar um arquivo, o arquivo deve ser apagado do backup tambm. A opo do rsync que faz isso : --delete Ento a linha correta para o backup da pasta meus documentos do exemplo anterior seria: rsync -av --recursive --delete /"Documents and Settings"/dailson/"Meus documentos" root@192.168.0.1:/media/hd_backup 2. Evitando backup de alguns arquivos Voc no deseja detonar seu espao em disco com as msicas e filmes do seu usurio no ? Voc pode dizer ao rsync para evitar alguns tipos de arquivos, bastando para isso usar a seguinte opo: --exclude="O que se quer evitar" Exemplo: Vou evitar que v para o backup os seguintes arquivos: Arquivos de msica (MP3, OGG, WAV, WMA...) Arquivos de Filme (AVI, MPEG, MPG, FLV, MP4, WMV, AMV ...) Programas e arquivos temporrios (EXE, COM, TMP) Fotos e imagens (JPG, JPEG, BMP ...)

Basta voc separar com espao e colocar quantas excees quiser. E ainda pode utilizar coringas. Por exemplo: --exclude=*.jpg --exclude=*.avi --exclude=*.mp3 ...

O nosso exemplo da pasta Meus Documentos j com estas opes tratadas neste tpico 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 and Settings"/dailson/"Meus documentos" root@192.168.0.1:/media/hd_backup Neste caso o script completo ficaria desta forma: Obs: Lembrando que todas as linhas abaixo so inteiras com enter apenas no final. Grave ele na raiz do C:\ e chame de backup.bat: @ECHO OFF REM ***************************************************** REM Script de Backup REM Autor: Dailson Fernandes REM Data: 01/08/2008 REM Funo: Faz o backup das pastas importantes do usurio REM ***************************************************** SETLOCAL SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC SET CYGWIN=nontsec SET HOME=%HOMEDRIVE%%HOMEPATH% SET CWOLDPATH=%PATH% SET PATH=%CWRSYNCHOME%\BIN;%PATH% rsync -av /"Documents and Settings"/dailson/"Configuraes Locais"/"Dados de aplicativos"/Microsoft/Outlook/outlook.pst root@192.168.10.202:/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" root@192.168.0.1:/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/"Meus documentos" root@192.168.0.1:/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 root@192.168.0.1:/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" root@192.168.0.1:/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 script seja executado diariamente, ou de acordo com a sua necessidade. Mas no custa nada lembrar 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 e pronto. Esta pergunta no acontecer novamente. 2. A primeira cpia completa e dependendo da quantidade de dados ir demorar um pouco. Porm se imediatamente aps a cpia voc chamar o script novamente, ver que o rsync no vai fazer nada. O rsync a partir da segunda cpia s vai copiar os arquivo que foram alterados, criados ou deletar do backup o que foi deletado da origem. 3. Para agendar a tarefa deste script rodar automaticamente diariamente ou a sua escolha v em tarefas agendadas do Windows em: Iniciar / Programas / Acessrios / Ferramentas / Tarefas Agendadas Ou se preferir, use o AT do Windows, que um agendador de tarefas semelhante ao do Linux que tambm roda em linha de comando. Se quiser aprender sobre o AT no Windows, visite a seguinte pgina: http://support.microsoft.com/kb/313565/pt-br

Fazendo com que o script de backup no pea senha Antes da cpia comear, o login feito via ssh. Nesta hora o login passado pela string root@192.168.0.1:/media/hd_backup, porm imediatamente depois solicitada a senha. Ento este incomodo gerado, ou seja, toda vez que a tarefa agendada iniciar o script de backup, a senha ser solicitada. E se o usurio no tiver na frente do computador? Ou se esse backup for feito de madrugada? Para resolver este problema, basta gerar as chaves pblica e privada e fazer com que o cwRsync comece o backup sem interveno humana. Gerando as chaves No servidor Linux, gere as chaves pblicas e privadas da seguinte forma. No usurio que voc far a conexo sem senha (vou utilizar o root como exemplo), digite no terminal: # ssh-keygen Quando perguntado para entrar com uma "passphrase", apenas tecle "Enter" duas vezes para que fique em branco, caso contrrio esta frase precisar ser digitada posteriormente. A sada do comando esta: 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 pblicas e privada dentro do diretrio /root/.ssh. So elas: /root/.ssh/id_rsa (privada) /root/.ssh/id_rsa.pub (pblica) Agora faa o seguinte: # cat /root/id_rsa.pub >> /root/.ssh/authorized_keys importante que a chave pblica (id_rsa.pub) seja adicionada (usando o sinal de maior maior ">>") dentro do arquivo "authorized_keys", pois podem haver outros clientes registrados neste mesmo arquivo. Pegue o arquivo /root/.ssh/id_rsa (a sua chave privada) e copie no seguinte diretrio na sua mquina Windows: c:\Documents and Settings\seu_usurio\.ssh Pronto! Agora rode novamente o backup.bat e veja que o backup feito sem nenhuma interferncia. A chave privada est em "/root/.ssh/id_rsa" e a pblica em "/root/.ssh/id_rsa.pub". oncluses e crditos Bom, estou compartilhando a soluo que achei em meu trabalho de fazer backups de servidores e estaes Windows de forma segura e ntegra. Utilizo esta forma h alguns anos sem quaisquer tipos de problemas. Existem muito mais opes que podem ser utilizadas com rsync. Para isso consulte o manual. 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 introduo foi retirada do artigo de Fbio Berbert de Paula em Transferindo arquivos com o rsync/. Gerao de chaves: Conexes SSH sem senha fcil e descomplicado Este artigo pode ser acessado a partir do meu site em:

http://www.dailson.com.br E lembrem-se... Flames > /dev/null!