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

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. Mas que tal você portar esta facilidade para estações e servidores Windows? Este artigo lhe ensina a fazer esta integração de forma rápida e fácil.

[ Hits: 282.265 ]

Por: Dailson Fernandes (fofão) - http://www.dailson.com.br em 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:
  • copiando (ou sincronizando) arquivos entre dois diretórios locais;
  • copiando (ou sincronizando) arquivos de sua máquina local para um servidor remoto;
  • copiando (ou sincronizando) arquivos de um servidor remoto para sua máquina local;
  • 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 do SAMBA. Veja em: http://samba.anu.edu.au/rsync/

    Próxima página

Páginas do artigo
   1. Introdução
   2. Como usar o RSYNC e SSH no Windows
   3. Obtendo e instalando o cwRsync
   4. Exemplos
   5. Opções que você deve conhecer
   6. Usando a tarefa agendada ou o AT do Windows
   7. Fazendo com que o script de backup não peça senha
   8. Conclusões e créditos
Outros artigos deste autor

Eu cavo, tu cavas, ele cava... tutorial de DIG

Instalando a nova versão do HLBR - IPS invisível

Gerenciando logs do Linux pela WEB com o PHPSYSLOG-NG (parte 1)

Personalizando o HLBR - IPS invisível

Glances - Monitoramento de Processos e Perfomance

Leitura recomendada

Gerando em tempo real efeito de voz robotizada

XFree86 - Um pouco da história deste poderoso ambiente gráfico para UNIX

Um pouco da história do Debian GNU/Linux

Monitorando a temperatura do computador com lm_sensors + MRTG

Reaproveitamento e meio ambiente

  
Comentários
[1] Comentário enviado por andrade.ti em 08/08/2008 - 11:08h

Excelente artigo. Objetivo e bem didático. Eu utilizava o TAR e o SCP com chave publica,
porém, o negócio era copiado full e não incremental.

Vou experimentar o RSYNC, o qual nunca tive vontade de me aprofundar...

Valeu,
Leandro Andrade.

[2] Comentário enviado por removido em 08/08/2008 - 11:15h

Era o que eu precisa!!!

Muito bom!!!

[3] Comentário enviado por grandmaster em 08/08/2008 - 18:40h

Vou testar.

Realmente o fato de não passar a senha em texto na rede e a velocidade por não copiar todo os arquivos é bem interessante.

Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br

[4] Comentário enviado por y2h4ck em 09/08/2008 - 03:48h

Bom, como eu ja havia comentado em um artigo que foi publicado à algum tempo sobre backup com Rsync, vou deixar aqui avisado a todos os leitores os perigos do uso do Rsync de forma indiscriminada.

O Rsync não possui autenticação sendo assim, uma vez que você permitir que determinada pasta do sistema o qual irá ser feito o backup, qualquer outro host que esteja na rede pode e conseguirá efetuar a copia destes arquivos remotos. Sendo assim deve-se tormar o cuidado de definir em um /etc/hosts.allow os hosts que podem acessar a porta do rsync remotamente.

Desta forma evitamos que algum host copie arquivos, databases e etc.

[]s

Anderson

[5] Comentário enviado por mofo em 09/08/2008 - 09:58h

muito bom, mas e a clonagem do HD da estação é possível também ? abraço

[6] Comentário enviado por dailson em 11/08/2008 - 10:26h

Mofo

Clonar HD eu acho que não dá não.
Mas vc pode usar o G4U ou o UDPCAST para isso.
São excelentes para fazer backups de servidores e restaurar nos momentos mais difíceis.

y2h4ck

Bom lembrete!!!!

Um dica que foi postada em meu site www.dailson.com.br vale a pena ser colocada aqui.
Ao invés de passar as opções via linha de comando como falei no artigo, basta passar todas elas em uma variável desta forma:

set opcoes=-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

E usar assim em todas as linhas:

rsync %opcoes% /"Banco de Dados" root@192.168.0.1:/media/hd_backup

Em relação a opção "ssh -p 16117", deixei escapar dos meus scritps de backup da rede local. É pq tirei o ssh da porta padrão e coloquei nesta ai acima. Neste caso vcs podem ignorar esta opção.

A galera que achou bom o artigo, muito obrigado, mas nada aqui sai sem a ajuda da comunidade então... Vida longa ao SL !!

Dailson Fernandes
www.dailson.com.br

[7] Comentário enviado por rafael.gumiero em 16/08/2008 - 21:13h

O seu artigo esta otimo comessei a usar hoje na empresa esse modo de backup.Mais tenho uma duvida tenho alguns usuarios que salvam suas informações em maquinas ruwindows no D: como eu coloco no .bat para copiar arquivos de outra unidade sem ser a default.

Desde já obrigado!!!

[8] Comentário enviado por angel.torres em 06/09/2008 - 11:30h

Caro rsl_13,

Com relação a sua duvida de como copiar arquivos que estão em outra unidade é só adicionar a palavra /cygdrive/ como no exemplo abaixo:
rsync.exe" -rav /cygdrive/unidade/pasta_origem/ root@IP_Destino:/pasta_destino

"C:\Program Files\cwRsync\bin\rsync.exe" -rav /cygdrive/d/Arquivos_Importantes/ root@10.0.1.1:/media/usbdisk/backup/

Eu utilizo essa regra para sincronizar imagens de um site no qual eu trabalho e funciona perfeitamente.

Espero ter ajudado.

Angel Torres

[9] Comentário enviado por brgsousa em 07/10/2008 - 11:34h

Muito bom o artigo.
Eu estava na duvida de como automatizar a atividade de backup sem precisar digitar a senha todas as vezes. Só que no meu caso é um servidor windows com um drive de fita dat pegando arquivos de varios servidores linux. o que eu faço com o id_rsa do servidor linux para que aceite chaves de varios servidores ao mesmo tempo?

[10] Comentário enviado por dailson em 07/10/2008 - 13:46h

A sua chave privada vai ficar no servidor windows (id_rsa) e em todos os servidores linux você vai colocar a chave pública em /root/.ssh/authorized_keys. Lembre-se que authorized_keys é o mesmo arquivo id_rsa.pub, basta você renomear.

[11] Comentário enviado por brgsousa em 08/10/2008 - 14:46h

Para cada servidor linux existe uma chave privada gerada de acordo com os passos do artigo.

Pelo que eu entendi a sua sugestão é de que a mesma chave privada que estiver no servidor windows vai ser a mesma do servidor linux1 que vai ser a mesma do servidor linux2 etc . É isso?

[12] Comentário enviado por dailson em 08/10/2008 - 16:49h

Quase isso.
A chave privada fica só no windows.
No linux1, linux2 ... ficam as públicas. Ai vai ter o efeito que vc quer.

[13] Comentário enviado por agimenez em 27/10/2008 - 11:51h

Dailson,

Estou seguindo seu manual e mesmo assim estou com problema, criei duas pastas no meu c:\

c:\moc
c:\teste

Onde quero enviar os dados destas pastas para meu servidor de backup em linux veja o resultado:

C:\>bkp.bat

C:\>rem @ECHO OFF

C:\>REM *****************************************************

C:\>REM Script de Backup

C:\>REM Autor: Dailson Fernandes

C:\>REM Data: 01/08/2008

C:\>REM FunþÒo: Faz o backup das pastas importantes do usußrio

C:\>REM *****************************************************

C:\>SETLOCAL

C:\>SET CWRSYNCHOME=C:\Arquivos de programas\CWRSYNC

C:\>SET CYGWIN=nontsec

C:\>SET HOME=C:\Documents and Settings\Alexandre

C:\>SET CWOLDPATH=C:\Arquivos de programas\Windows Resource Kits\Tools\;C:\WINDO
WS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Arquivos de programas\Arquivo
s comuns\GTK\2.0\bin;C:\Arquivos de programas\ESTsoft\ALZip\;C:\MSSQL7\BINN;C:\A
rquivos de programas\Microsoft SQL Server\80\Tools\Binn\;C:\Arquivos de programa
s\Microsoft SQL Server\90\Tools\binn\;C:\Arquivos de programas\Microsoft SQL Ser
ver\90\DTS\Binn\;C:\Arquivos de programas\Microsoft SQL Server\90\Tools\Binn\VSS
hell\Common7\IDE\;C:\Arquivos de programas\Microsoft Visual Studio 8\Common7\IDE
\PrivateAssemblies\;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\Arquivos de pr
ogramas\Java\jdk1.6.0_02\bin;C:\Arquivos de programas\SSH Communications Securit
y\SSH Secure Shell

C:\>SET PATH=C:\Arquivos de programas\CWRSYNC\BIN;C:\Arquivos de programas\Windo
ws Resource Kits\Tools\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;
C:\Arquivos de programas\Arquivos comuns\GTK\2.0\bin;C:\Arquivos de programas\ES
Tsoft\ALZip\;C:\MSSQL7\BINN;C:\Arquivos de programas\Microsoft SQL Server\80\Too
ls\Binn\;C:\Arquivos de programas\Microsoft SQL Server\90\Tools\binn\;C:\Arquivo
s de programas\Microsoft SQL Server\90\DTS\Binn\;C:\Arquivos de programas\Micros
oft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\;C:\Arquivos de programas\Micro
soft Visual Studio 8\Common7\IDE\PrivateAssemblies\;C:\WINDOWS\system32\WindowsP
owerShell\v1.0;C:\Arquivos de programas\Java\jdk1.6.0_02\bin;C:\Arquivos de prog
ramas\SSH Communications Security\SSH Secure Shell

C:\>rsync -av --recursive /teste root@192.168.0.3:/home
root@192.168.0.3's password:
building file list ... rsync: link_stat "/teste" failed: No such file or directo
ry (2)
done

sent 29 bytes received 20 bytes 8.91 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 2
3) at main.c(1040) [sender=3.0.4]

C:\>rsync -av --recursive /Moc root@192.168.0.3:/home
root@192.168.0.3's password:
building file list ... rsync: link_stat "/Moc" failed: No such file or directory
(2)
done

sent 29 bytes received 20 bytes 10.89 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 2
3) at main.c(1040) [sender=3.0.4]

C:\>pause
Pressione qualquer tecla para continuar. . .

C:\>


Está dando erro: failed: No such file or directory

ou seja, não está achando minha pasta que está no meu C:\teste e C:\Moc.

O que deve ser?

Obrigado e ótimo artigo.


[14] Comentário enviado por dailson em 28/10/2008 - 14:01h

Olá Agimenez

Não consigo ver por que ele não acha a pasta.
Escreva dentro do .bat a pasta do jeito que está no C:\ com maiúsculas e minúsculas. (acho que vc já fez isso).
Uma pergunta: A pasta está vazia? Se tiver, coloque algo dentro.

[15] Comentário enviado por agimenez em 29/10/2008 - 05:12h

Dailson,

Obrigado pela resposta.

Exatamente, as pastas tem conteúdo, e descrevi exatamente o nome que elas tem - teste (com tudo minusculo) e Moc (apenas com o M maiúsculo).

Não consigo entender....

O script (.bat) é esse:

rem @ECHO OFF
REM *****************************************************
REM Script de Backup
REM Autor: Dailson Fernandes
REM Data: 01/08/2008
REM Função: Faz o backup das pastas importantes do usuário
REM *****************************************************
SETLOCAL
SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC
SET CYGWIN=nontsec
SET HOME=%HOMEDRIVE%%HOMEPATH%
SET CWOLDPATH=%PATH%
SET PATH=%CWRSYNCHOME%\BIN;%PATH%

rem rsync -av --recursive /teste/ root@192.168.0.3:/home

rsync -av --recursive /"teste" root@192.168.0.3:/home/bkp
rsync -av --recursive /"Moc" root@192.168.0.3:/home/bkp

rem pause

[16] Comentário enviado por dailson em 29/10/2008 - 10:40h

Faz o Seguinte

Substitua estas linhas

rem rsync -av --recursive /teste/ root@192.168.0.3:/home
rsync -av --recursive /"teste" root@192.168.0.3:/home/bkp
rsync -av --recursive /"Moc" root@192.168.0.3:/home/bkp

Por


rsync -av --recursive /teste root@192.168.0.3:/home/bkp
rsync -av --recursive /Moc root@192.168.0.3:/home/bkp


[17] Comentário enviado por agimenez em 29/10/2008 - 18:45h

Nada! :(

Como eu posso enviar essa pasta para um outro servidor, mas Windows?

Vou tentar o mesmo de outro lugar, mas aí não tenho máquina linux para enviar, terá que ser Windows...

Obrigado pela ajuda.

[18] Comentário enviado por dailson em 30/10/2008 - 11:10h

Acho que dá para fazer, mas tem que ser outro pacote e ainda mais tem que montar o servidor rsync no windows. Nunca fiz isso :(
Veja só. Você está rodando este script como usuário comum? Ou como administrador?
Só por desencargo de consciência, posta aqui o resultado do comando dir c:\
Outra coisa, vai nestas pastas testes e Moc e libera geral. Usuário todos com todas as permissões (Controle total).


[19] Comentário enviado por thiago1202 em 28/11/2008 - 16:58h

Boa Tarde

Eu quero saber se alguem tem algum tutorial de como instalar o RSYNC no windows e fazer o linux fazer os backup's dos arquivos do windows em um hd do servidor linux

[20] Comentário enviado por dailson em 01/12/2008 - 18:59h

Thiago

Este tutorial contempla exatamente isso. estações Windows fazendo backup em servidores linux.

Dailson

[21] Comentário enviado por calaff2 em 06/12/2008 - 16:40h

Ae galera tou com um seguinte problema não utilizo a porta 22 do sh quero adicionar uma porta como faço?

rsync -av --recursive /"Documents and Settings"/Idalmo/Favoritos root@192.168.2.62:/media/hd_backup

ja coloquei assim : rsync -av --recursive "ssh -p 222" /"Documents and Settings"/Idalmo/Favoritos root@192.168.2.62:/media/hd_backup

não funcionou.

[22] Comentário enviado por calaff2 em 06/12/2008 - 17:08h

ja conseguir coloca o parametro -e
ex: rsync -av --recursive -e "ssh -p 222" /"Documents and Settings"/Idalmo/Favoritos root@192.168.2.62:/media/hd_backup

[23] Comentário enviado por lflavio_sp em 23/02/2009 - 22:31h

Parabens excelente matéria, funcionou perfeitamente, agora tenho uma duvida talvez possa me ajudar. Tenho na empresa um servidor Windows 2003 com SQL Server teria como criar um sincronismo com esse sem parar o banco de dados ou d repente vc conheça outra solução ??
Grato

[24] Comentário enviado por italog em 02/07/2009 - 18:00h

Olá, aqui mostra como fazer p/ sincronizar arquivos do windows para o linux...

Mas eu gostaria saber como se faz o caminho inverso, do Linux p/ o Windows.

Já instalei o rsync e o cwRsync.

Podem me ajudar?

Obrigado

[25] Comentário enviado por dailson em 06/07/2009 - 15:32h

Oi Italog

Eu sinceramente nunca fiz este tipo de sincronização. Mas tenho uma ótima dica para lhe dar.
Você pode compartilhar sua pasta linux via samba e fazer a sincronização com um software gratuito da própria Microsoft. É o Sync Toy. É mais uma imitação do concorrente ;)
Veja detalhes em: http://technet.microsoft.com/pt-br/magazine/2007.03.utilityspotlight.aspx

Dailson

[26] Comentário enviado por italog em 06/07/2009 - 15:49h

Opa Dailson,

Obrigado pela dica, mas por enquanto tenho que continuar na tentativa do rsync, pois ele tem mais opções(como controle de banda de rede) que o synctoy. Trabalho na Caixa onde a criticidade do nível de banda é levada à sério, por isso me foi solicitado fazer essas sincronizações utilizando um software capaz de gerenciar o uso da banda, o único que encontrei p/ uso no entre linux e windows foi o rsync. Mas obrigado pela dica, vou ficar com ela na mente como uma opção.

Na real o que tá pegando é que não consigo conectar na máquina windows via ssh, sempre dá o erro:
ssh: connect to host port 22: connection refused

e o ssh server (opensshd) está rodando, firewall desligado. Caso tenha uma sugestão será bem vinda.

Abraços

Ítalo

[27] Comentário enviado por italog em 14/07/2009 - 17:34h

Opa Galera,

Consegui fazer o servidor linux "empurrar" arquivos para o windows. Tudo funfando lindamente!!!

Mas agora vem a parte boa... Quero que ele faça isso não p/ uma, mas para várias máquinas e até agora só consegui fazer uma por vez.

Como faço para que ele enviar para várias ao mesmo tempo simultaneamente? tipo broadcast...

abraços

[28] Comentário enviado por rafaelpitrovski em 29/07/2009 - 18:25h

Ótimo artigo, Dailson!

Não sei se isso soma ou não, mas segue um pequeno problema que tive e a solução.
Os arquivos que precisei enviar para o servidor estavam em uma segunda partição (D:). Dessa forma, ao enviar utilizando as chaves RSA, precisei colocar o id_rsa dentro da pasta "D:\.ssh" e não dentro do Documents And Settings do usuário.

Gostei muito do conteúdo do teu site também.

Abraço.

Rafael.

[29] Comentário enviado por rafaelpitrovski em 30/07/2009 - 10:29h

Complementando o meu comentário acima:

Fiz o mesmo procedimento em uma outra máquina e o .ssh foi criado dentro da pasta do usuário, em 'Documents and Settings'. Não sei porque essa diferenciação. Mas no comentário acima eu realizei a operação como administrador em uma máquina Windows 2003 Server e agora foi com uma usuário "normal" em uma máquina com Windows XP Pro.

De qualquer forma, fica a dica, caso ocorra algum problema de pedir senha mesmo com a chave RSA, basta confirmar a "adição" de confiabilidade da máquina, que o SSH criará uma pasta .ssh em algum lugar, basta procurá-la e adicionar o arquivo id_rsa lá.

[30] Comentário enviado por dailson em 30/07/2009 - 11:03h

Olá Rafael

Eu também já passei por esse problema e não sei quando ele faz em um local ou em outro.
Ai nas minhas imagens de máquinas aqui do trabalho, eu coloco a pasta nos dois locais, e sempre dá certo.
De qualquer forma agradeço os elogios e fico feliz em saber que este solução tem ajudado pessoas !!!
Um abraço !

Dailson Fernandes
http://www.dailson.com.br

[31] Comentário enviado por mrneto23 em 08/09/2009 - 16:43h

Olá Dailson,

Gostei muito do seu artigo e gostaria de tirar uma dúvida com você.
Tenho uma maquina com XP e uso uma partição separada para meus dados (unidade D), como fazer o back-up de uma pasta que se encontra nessa partição?

Grato.

[32] Comentário enviado por mrneto23 em 08/09/2009 - 17:01h

Ops! Me desculpem pelo comentário anterior. Li todos os comentários e vi que a resposta que eu estava procurando está um pouco acima.

Obrigado.

[33] Comentário enviado por dailson em 08/09/2009 - 18:28h

Ok Neto!!

Um abraçao

[34] Comentário enviado por jassato em 28/09/2009 - 15:28h

Ola Dailson,

E quando o arquivo para ser salvo estiver no E:\ ao inves de C:\
Grato.

[35] Comentário enviado por dailson em 29/09/2009 - 10:39h

Segue a Dica de Angelo Torres (acima)

Com relação a sua duvida de como copiar arquivos que estão em outra unidade é só adicionar a palavra /cygdrive/ como no exemplo abaixo:
rsync.exe" -rav /cygdrive/unidade/pasta_origem/ root@IP_Destino:/pasta_destino

"C:\Program Files\cwRsync\bin\rsync.exe" -rav /cygdrive/d/Arquivos_Importantes/ root@10.0.1.1:/media/usbdisk/backup/

Eu utilizo essa regra para sincronizar imagens de um site no qual eu trabalho e funciona perfeitamente.

Espero ter ajudado.

Angel Torres

Valeu!

Dailson Fernandes

[36] Comentário enviado por jassato em 29/09/2009 - 12:21h

Ok Dailson
Muito obrigado!!!

[37] Comentário enviado por fernandotrilha em 01/10/2009 - 16:10h

Dailson...
Parabens pelo artigo.
O meu caso, ele sempre pede a senha, ja copiei o id_rsa e o id_rsa.pub , mas mesmo assim ele pede senha.
Oque eu posso estar fazendo de errado?

[38] Comentário enviado por donabuba em 27/10/2009 - 09:21h

Nao funcionou.
Agendei a tarefa como Administrador e ela chega a entrar no status "Em execução". Mas nada acontece.

Segue meu teste.bat

================================

@ECHO OFF
SETLOCAL
SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC
SET CYGWIN=nontsec
SET HOME=%HOMEDRIVE%%HOMEPATH%
SET CWOLDPATH=%PATH%
SET PATH=%CWRSYNCHOME%\BIN;%PATH%

rsync -av -recursive /"PASTA_DE_TESTE_RSYNC" root@192.168.10.153:/backup

[39] Comentário enviado por dailson em 28/10/2009 - 14:42h

D. Buba

Se você rodar o Script diretamente na linha de comando ele executa normalmente?

[40] Comentário enviado por fabiowi em 06/11/2009 - 12:42h

Olá Dailson, primeiro parabéns pelo artigo, testei aqui e funciona perfeitamente, só tive um problema, tenho um servidor Windows 2003 e dele não consigo autenticar no linux sem senha, segui os procedimentos gerando as chaves e ele continua pedindo a senha. Você tem alguma dica prá isso? No winxp funcionou certinho.
Obrigado

[41] Comentário enviado por dailson em 06/11/2009 - 14:23h

Obrigado Fabio

Veja só. Eu uso normalmente aqui no Windows 2003 da empresa.
Tente o seguinte.
Faça uma cópia da pasta .ssh e coloque na raiz do disco e na pasta c:\documents and settings\seu-usuario
Depois faça o teste.
E posta aqui o resultado.
Um abraço

Dailson

[42] Comentário enviado por lalla_br em 10/12/2009 - 18:55h

Olá Dailson
Parabéns pelo artigo. Tenho uma dúvida qto ao Rsync. Ele consegue verificar mudanças e atualizar qualquer tipo de arquivo? Por exemplo, bancos *.gdb (InterBase, Firebird) nem sempre sofreram mudanças aparentemente (tamanho, data de modificação, etc). Mas na verdade sofreram sim. Tenho uma pasta com vários arquivos de um sistema integrado que não conheço o tipo de arquivo que eles usam. Tenho medo de usar o rysnc e ele não atualizar tudo direito. Você saberia me dizer se o Rysnc serve para todo tipo de arquivo? Ou seja, é possível confiar numa atualização de cópias feitas por ele para qquer tipo de arquivo?

[43] Comentário enviado por phls em 25/01/2010 - 19:51h

Olá,

Primeiramente parabéns pelo tutorial! Realmente bastante úitl!
Vou deixar um comentário para talvez ajudar outra pessoas que possam ter o mesmo problema.

Eu tinha feito o meu script conforme inficado assim:
@ECHO OFF
SETLOCAL
SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC
SET CYGWIN=nontsec
SET HOME=%HOMEDRIVE%%HOMEPATH%
SET CWOLDPATH=%PATH%
SET PATH=%CWRSYNCHOME%\BIN;%PATH%

rsync -av --recursive /cygdrive/c/"Documents and Settings"/paulo/"Meus documentos" phls@192.168.1.2:/home/phls/backup

E dava o seguinte erro:

C:\>backup
phls@192.168.1.2's password:
sending incremental file list
rsync: change_dir "/Documents and Settings/paulo" failed: No such file or directory (2)

sent 12 bytes received 12 bytes 2.82 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 2
3) at main.c(1042) [sender=3.0.7]

Então lendo o arquivo de exemplo, achei a solução, que foi incluir a parte: /cygdrive/c

Então o script ficou:
rsync -av --recursive /cygdrive/c/"Documents and Settings"/paulo/"Meus documentos" phls@192.168.1.2:/home/phls/backup

E agora funcionou perfeitamente!

Abraços.

[44] Comentário enviado por removido em 18/02/2010 - 15:26h

Senhores,
Duas questões:
- Como seria o sincronismo, ao contrário, ou seja, do Server LINUX DEBIAN Lenny enviando arquivos para o Windows Server 2003?
- É possível utilizar Certificado Digital padrão ICP-Brasil para eliminar a questão de senha?

RUBENS SOUZA

[45] Comentário enviado por thiagods em 25/06/2010 - 17:27h

Boa Tarde a todos

Estou com um dos problemas que o rubenssouza esta

fazer o rsync de um servidor LInux -> Windows, eh quaze a mesma situação do italog

Na real o que tá pegando é que não consigo conectar na máquina windows via ssh, sempre dá o erro:
ssh: connect to host port 22: connection refused


se algem puder ajudar fiko grato


[46] Comentário enviado por rafacosme em 16/09/2010 - 19:24h

Gostaria de fazer o BACKUP do SUSE LINUX 10 para o WINDOWS XP. Já instalei o RSYNC mas o script abaixo não funcionou:

@ECHO OFF
REM *****************************************************
REM Script de Backup
REM Autor: Dailson Fernandes
REM Data: 16/09/2010
REM Função: Faz o backup das pastas importantes do usuário
REM *****************************************************
SETLOCAL
SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC
SET CYGWIN=nontsec
SET HOME=%HOMEDRIVE%%HOMEPATH%
SET CWOLDPATH=%PATH%
SET PATH=%CWRSYNCHOME%\BIN;%PATH%

rsync -av --recursive root@200.144.13.12:/tmp/y2logs.tgz /cygdrive/d/"teste"

rem pause


ALGUMA DICA?
Obrigado, Rafael.

[47] Comentário enviado por dailson em 27/09/2010 - 12:30h

Oi Rafa,

Este script que você está usando é do WINDOWS p/ o LINUX.
E pela sua pergunta você está usando do Linux para o Windows. Ai de todo jeito vai dar errado.

Dailson

[48] Comentário enviado por lsilveira em 18/11/2010 - 17:20h

Muito bom o tutorial ,
gostaria de saber como eu posso acresentar arquivos de log para ver se houve falhas ?

[49] Comentário enviado por dailson em 19/11/2010 - 12:26h

Lsilveira.

Obrigado!!!

Tente usar o redirecionador e gravar em um arquivo

Ex:

backup.bat > log.txt

[50] Comentário enviado por lsilveira em 01/12/2010 - 11:42h

Daison ,

segue a dica para que precisar , dessa forma que vc disse ele não registrava os erros , então fiz da seguinte forma

SET LOGFILE=/"program Files"/cwRsync/rsync_local.log
e acrecetei a linha a seguir

--log-file=/"program Files"/cwRsync/rsync_local.log

então no meu ficou assim

SET opcoes= -e "ssh -i /.ssh/id_rsa" --log-file=/"program Files"/cwRsync/rsync_local.log --recursive --progress --partial --delete --exclude=*.avi --exclude=*.mp3 --exclude=*.mp4 --exclude=*.wav --exclude=*.flv --exclude=*.wma --exclude=*.mpeg --exclude=*.mpg --exclude=*.wmv --exclude=*.amv


rsync -ru %opcoes% /cygdrive/E/PROFILES/ /cygdrive/E/Backups/cw/

[51] Comentário enviado por Thiagoqm em 04/01/2011 - 13:56h

Execelente Tutorial!

Mas tô com uma dúvida. é possível utilizar o RSYNC para fazer o backup (cópia) de bases de dados do SQL Server?? Tentei executar e deu "Erro de Compartilhamento", como o serviço estava do SQL Server estava ativo e consumindo a base de dados, não conseguindo copiá-la, tem como colocar nbo script para antes de copiar os arquivos *.mdf e *.ldf, ele parar o serviço do SQL Server, ou ainda, uma outra solução?

Abraço e parabéns!

[52] Comentário enviado por nelio123 em 05/05/2011 - 14:35h

pessoal no meu trabalho é só plataforma windows eu queria uma maneira de fazer backups do outlook automaticas de forma incremental alguem pode me dar alguma ideia ae, ja tentei usar o Bacula mais estou apanhando dele.

[53] Comentário enviado por rogeriofox em 18/11/2011 - 16:15h

Excelente artigo. Funcionou muito bem. Mas precisei fazer algumas adaptações, talvez seja por causa de versões do rsync que foram atualizadas, pois esse artigo é de 2008 e agora estamos em 2011.

Funcionou apenas com a seguinte sintaxe:

@ECHO OFF
REM **************************************************************************
REM Script para Backup Automático
REM Autor: Rogerio Fernandes Pereira
REM Data: 18/11/2011
REM Funcao: Faz copias de seguranca do servidor rWindows para o servidor Linux de backup
REM **************************************************************************
SETLOCAL
SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC
SET CYGWIN=nontsec
SET HOME=%HOMEDRIVE%%HOMEPATH%
SET CWOLDPATH=%PATH%
SET PATH=%CWRSYNCHOME%\BIN;%PATH%
SET OPCOES=-av --recursive -e "ssh -p 2958"
rsync %OPCOES% /cygdrive/c/sets bkp@192.168.1.15:/home/bkp/w2k3-1
rsync %OPCOES% /cygdrive/c/"Documents and Settings"/Sistema/"Meus documentos" bkp@192.168.1.15:/home/bkp/w2k3-1

O /cygdrive precisou vir na frente acompanhado com o nome da unidade de disco.

Obrigado pelo artigo Dailson!

Abraço!

[54] Comentário enviado por rickchbz em 21/05/2012 - 15:10h

então quer dizer que se eu intalar o cwrsync no xp, ele vira maquina cliente do servidor debian, mas preciso adicionar o script (cabeçalho e os path) é isso?
mas em qual diretório eu deixo o script??????????

[55] Comentário enviado por adrianoti10 em 25/10/2012 - 15:49h

tem como compactar o backup ???

[56] Comentário enviado por jacksonsantana em 01/08/2014 - 11:07h

bom dia,
até postei essa dúvida em um outro artigo..
rsync para backup local.

Uso Rsync para backup, até então tudo ok.
Na otimização de um script... precisei do --include, mas nao funcionou no modo backup.

Backup do diretorio compartilhado, para outro local...
onde aqui nesse comando, ele sincroniza tudo, e salva em pastas separadas as modificacoes em arquivos.

rsync --backup --backup=$DATA -a /dados_cliente /dados_bkpeados

eu uso o seguinte comando para sincronizar o diretorio com o hd externo.
rsync -a /dados_bkpeados /hd_montado.


Agora, preciso usar o include...que é um arquivo, com varios diretorios diferentes.
nao quero e nem tem a necessidade de clonar linhas do mesmo comando.
ou seja, melhorando o primeiro comando acima, mas que nao é somente um diretorio de dados, e sim, vários.

tentei assim:

rsync --backup --backup=$DATA --include --include-from=/root/diretorios.list /dados_bkpeados

teria alguma sugestao?

[57] Comentário enviado por gregoryderner em 08/07/2015 - 14:43h

Olá pessoal. Estou tendo um problema com o cwrsync ao tentar fazer o sync com o servidor ec2 da aws.

Tenho cwrsync funcionando para sincronizar algumas pastas locais. Está funcionando 100%;
O Problema é quando tento fazer o sync dessas pastas locais para o servidor do aws.

Estou passando os seguintes parâmetros: rsync -Cravzpt --progress --delete -e "ssh -v -v -v -i rsyncprivatekey" "pasta" ubuntu@ec2xx-xxx-xx-xxx.sa
-east-1.compute.amazonaws.com:/var/www/html/sync

O retorno do debug ssh:
----------------------------------------------
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug2: ssh_connect: needpriv 0
debug1: Connecting to ec2-xx-xxx-xx-xxx.sa-east-1.compute.amazonaws.com [xx.xxx.xx.xxx] port 22.
debug1: Connection established.
debug3: Not a RSA1 key file rsyncprivatekey.ppk.
debug2: key_type_from_name: unknown key type 'PuTTY-User-Key-File-2:'
debug3: key_read: missing keytype
debug2: key_type_from_name: unknown key type 'Encryption:'
debug3: key_read: missing keytype
debug2: key_type_from_name: unknown key type 'Comment:'
debug3: key_read: missing keytype
debug2: key_type_from_name: unknown key type 'Public-Lines:'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug2: key_type_from_name: unknown key type 'Private-Lines:'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug2: key_type_from_name: unknown key type 'Private-MAC:'
debug3: key_read: missing keytype
debug1: identity file rsyncprivatekey.ppk type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.6
debug2: fd 3 setting O_NONBLOCK
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: kex_parse_kexinit: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: mac_init: found hmac-md5
debug1: kex: server->client aes128-cbc hmac-md5 none
debug2: mac_init: found hmac-md5
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug2: dh_gen_key: priv key bits set: 120/256
debug2: bits set: 492/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug3: check_host_in_hostfile: filename /c/Users/Gregory/.ssh/known_hosts
debug3: check_host_in_hostfile: match line 1
debug3: check_host_in_hostfile: filename /c/Users/Gregory/.ssh/known_hosts
debug3: check_host_in_hostfile: match line 1
debug1: Host 'ec2-xx-xxx-xx-xxx.sa-east-1.compute.amazonaws.com' is known and matches the RSA host key.
debug1: Found key in /c/Users/Gregory/.ssh/known_hosts:1
debug2: bits set: 551/1024
debug1: ssh_rsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: rsyncprivatekey.ppk (0x0)
debug1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: rsyncprivatekey.ppk
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key 'rsyncprivatekey.ppk':
debug2: no passphrase given, try next key
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(235) [sender=3.1.1]
----------------------------------------------

Obs. Eu consigo conectar normalmente via ssh -i minhakey normalmente. Utilizando essa mesma key do log. E ela não tem senha apesar de mostrar ai no log que pediu.
Obs2. Criei uma key nova também e mesmo assim não vai.

Fiz um teste dentro do servidor conectado via ssh e consegui rodar o rsync...

----------------------------------RESOLVIDO-----------------------------------------

Executei o cmd como adm e foi. ¬¬

[58] Comentário enviado por alencarjr99 em 14/06/2017 - 16:10h

Sei que o topico e antigo, desinterrando aqui
Gostaria de uma ajuda
Seria possivel criar uma rotina usando o rsync
para puxar o backup do meu servidor de banco sql server

[59] Comentário enviado por dailson em 15/06/2017 - 19:25h


[58] Comentário enviado por alencarjr99 em 14/06/2017 - 16:10h

Sei que o topico e antigo, desinterrando aqui
Gostaria de uma ajuda
Seria possivel criar uma rotina usando o rsync
para puxar o backup do meu servidor de banco sql server


Quer uma maneira rápida? Compartilhe a pasta do backup, monte no linux e use RSYNC.
Você pode montar via SAMBA ou NFS.

[60] Comentário enviado por Pernilongo em 07/09/2022 - 18:27h

Boa noite pessoal, sou iniciante então desculpem qq coisa ae, mas vamos la,
eu já consegui usar de forma bem facil até o rsync entre servidores linux com ssh tudo maravilhoso, porem,
me surgiu uma questão, então procurei e encontrei esse topico, a duvida é a seguinte, eu tenho um server linux que faz backup de outros servers linux,
no entanto surgiu 2 maquinas que estao com windows server na rede e pastas com dados compartilhados na rede, como eu faço para que eu consiga realizar o backup das maquinas windows?
tipo no linux estou usando assim o comando rsync fazendo o backup incremental => rsync -azvh --progress root@192.168.40.200:/srv1/dados /BKP-DADOS/srv1/
dessa forma funciona perfeitamente já, minha duvida é, como informar a origem no caso quando a origem é um windows? seria o nome de admin da maquina e depois @ip:/pasta ?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts