Você é daqueles que ainda usa FTP para copiar arquivos entre duas máquinas? Ei cara, já estamos no século XXI, este artigo nos introduz ao mundo do rsync, sinônimo de eficiência quando o assunto é cópia remota.
Para cada situação anteriormente citada, o rsync apresenta uma sintaxe
levemente diferente. Vamos dar uma conferida em cada uma delas.
Sincronizando diretórios locais
Uso: rsync [opções] origem destino
Você tem um diretório recheado com arquivos importantes e deseja manter
uma cópia fiel do mesmo em outra localidade. Para copiar
/home/fabio/artigos para para /var/backups/artigos, executamos:
Nota: supondo que /var/backups/artigos está criado e tenho permissões
de escrita no mesmo.
Costumo utilizar a seqüencia de opções Cravzp por considerar
que nelas estão inclusas todas as funcionalidades que necessito.
Você pode optar em confiar cegamente em minhas palavras ou dar uma
breve conferida na página de manual do software (man rsync)
para descobrir o significado de cada opção.
Sincronizando arquivos locais para um servidor remoto
Um pré-requisito para enviar seus arquivos para o servidor remoto
é possuir uma conta de usuário no sistema. Sendo assim, sua forma
de uso é:
rsync [opções] origem usuario@host:destino
Supondo que o diretório /var/backups/artigos está localizado no
servidor remoto cujo endereço IP é 10.0.0.5 e minha conta de usuário
possui login "fabio", executamos:
Surgirá um prompt de senha, digite-a e pronto, os arquivos serão copiados.
Sincronizando arquivos do servidor para sua máquina local
Esta situação também requer um login para autenticação no servidor,
a menos que o mesmo esteja configurado para aceitar conexões de
usuários guest, fato comum em servidores mirrors, porém este
assunto está fora do escopo do artigo. Se você entendeu como funciona
o comando anterior, basta inverter a ordem dos parâmetros:
Esta é forma de uso mais simples do rsync e seu pré-requisito é o de
possuir login de autenticação no servidor (ou guest). Sintaxe:
rsync [opções] usuario@host:diretorio
Se você deseja listar o diretório /etc do servidor, pode usar o comando:
$ rsync -Cravzp fabio@10.0.0.5:/etc/
O "pulo do gato" dessa situação é a omissão do diretório de destino.
Bom, chegamos aos finalmentes. Se o seu provedor ainda não possui
rsync instalado em seus servidores Linux, faça lobby, esperneie e
em último caso, mostre este artigo ao departamento de suporte
técnico do mesmo.
Um belo caso de grande utilidade do rsync é o próprio Viva o Linux.
Mantenho o site atualizado através deste software e se meu provedor
não tivesse rsync, com certeza eu teria procurado outro.
E o pensamento do dia: "FTP é coisa de cliqueiro, já era.
FTP = (F)oi-se o (T)empo (P)eixe!".
[5] Comentário enviado por lgustavo em 22/08/2003 - 10:39h
Muito boa essa ferramenta!!!!mas,
Como eu faço para especificar uma porta no rsync ?tentei -z --port=29922.
#rsync -Cravpe ssh /home/Admin/teste/ Admin@10.1.0.1:/home/Admin/teste/
ssh: connect to address 10.1.0.1 port 22: Connection refused
Obrigado!
[7] Comentário enviado por SirGalahad em 27/08/2003 - 12:04h
2 pontos a serem considerados.
Abordagem do Assunto : O autor inicia o artigo crucificando o FTP. O FTP é uma aplicativo excelente para transferência de arquivos. Ele realmente não sincroniza dados. O Rsync sincroniza. Portanto, é errado comparar um com o outro. O ideal seria ter iniciado a abordagem do assunto tratando apenas de uma ferramenta para sincronismo, a transferência é um mero detalhe.
Rcp encriptado? : O autor diz "Por ser baseado no antigo rcp (remote copy), o software herdou as propriedades de criptografia do protocolo SSH ...". Isso é uma inverdade. Justamente por ser antigo, o rcp, bem como todos os aplicativos da "família r" (rcp, rlogin, rshell etc.) não possuíam encriptação. Com o advento do SSH, todas as "funções r" foram assimiladas por esse novo aplicativo. Para efetuar uma cópia entre servers, utiliza-se o scp (Secure Copy), que é integrante do SSH, ao invés do rcp (Remote Copy).
Seria mais ou menos assim. Devido a alguns problemas, nao estou no exato momento com a minha maquina q tem o CONECTIVA, apenas so estou adiantando oq farei mais tarde. Por favor, responder para o email: hjromano@bol.com.br
[9] Comentário enviado por bbnasc em 21/06/2004 - 15:23h
Legal, Fábio, muito bom o artigo! Mas eu preciso tirar uma dúvida sobre o rsync. Eu tenho um servidor de backup Linux com 4 HD's IDE de 120Gb. A minha idéia é usar um desses HD's para fazer backup full do meu ambiente e os outros três pra fazer backup diferencial. Cada um desses HD's vai fazer backup diferencial em dois dias alternados (por exemplo, um deles faz de segunda e quinta, o outro de terça e sexta e outro de quarta e sábado). Já uso esse método no backup das minhas máquinas Linux, mas ainda não consegui implementar nos meus servers Windows. Isso porque o backup diferencial faz uma comparação dos dados com o último backup full... O problema é que o último backup full fica em outro HD, o rsync instalado no Windows não consegue fazer essa comparação (ao menos eu não descobri como). Você pode ajudar? Valeu!
[11] Comentário enviado por stgpereira em 06/02/2005 - 23:06h
Valeu Fábio. Parabéns e obrigado. Por que? Simples: sou inexperiente em Linux e nunca havia configurado uma rede. Aqui aprendi a configurar a rede e usar o grande RSYNC. Não aguentava mais ficar transferindo arquivos via CD ou disquete para manter em dia o desktop e notebook.Grande Site este aqui.
[14] Comentário enviado por presunto em 25/05/2006 - 12:39h
excelente!! ótimo trabalho, tava procurando um jeito de aprender rsync e não estava achando em lugar nenhum.
uma pergunta basica a respeito: um amigo meu tem um servidor FTP, nao existe um jeito de eu usar o rsync pra fazer um sistema de backup continuo?? ele tem o servidor ftp pq foi o que ele conseguiu pra botar o site dele em funcionamento, e acho que nao tem SSH lá... queria saber se existe um jeito?
[15] Comentário enviado por jeffleme em 19/07/2006 - 18:37h
Olá vou aproveitar para ver se alguém pode me ajudar tenho um servidor Windows 2000 e estou tentando copiar arquivos para um servidor red hat 9 via rsync. Ele copia quase todos os arquivos, porém quando tém acento não cópia. Alguém conhece alguma solução?
[17] Comentário enviado por sandrosms em 27/11/2006 - 16:34h
estou com um problemas usando as opcoes do rsync acima descritas no tutorial:
rsync: chown "/mnt/usbdisk2/install/setup.dll" failed: operation not permitted"
[18] Comentário enviado por dockism em 23/01/2007 - 14:43h
Show, fiz local aqui na minha maquina mesmo e funcionou blz....
mas vou testar ainda remotamete, mas assim, teria como deixar isso automatico, tipo x hora ele fazer esse backup?
[19] Comentário enviado por Dillon em 10/02/2007 - 23:07h
Lembrando aos amigos que para um sincronismo perfeito faz-se necessário incluir " --delete=excluded" ao final do comando. Desta forma o rsync apagará os arquivos do destino que não mais existem na origem.
[20] Comentário enviado por Dillon em 10/02/2007 - 23:12h
Aos colegas femartini e dockism, a resposta para vocês é o "cron". Digite crontab -e e agende o que for necessário. Para maiores informações consulte o man...
[21] Comentário enviado por Santclair em 20/04/2007 - 14:55h
Estou com uma dúvida. O rsync sincroniza o destino com a origem?: por exemplo se incluirmos um arquivo no no destino e mandarmos sincronizarmos (rsync) os arquivos incluidos no destino serão incluídos na origem.
[23] Comentário enviado por Santclair em 20/04/2007 - 15:18h
Mas no meu caso, os dois tem o rsync mas, por exemplo se eu mandar o comando numa determinada máquina destino (onde eu criei um novo arquivo) e mando o rsync rodar com as opções -r --update e outros, o que foi alterado na origem é atualizado no destino, mas o que foi alterado no destino não é alterado na origem.
[24] Comentário enviado por dockism em 20/04/2007 - 15:23h
sim, mas dai lá na origem vc tem que rodar o mesmo comando para ele enviar as atualização de lá para o destino....
porque pelo o que ta escrito no artigo funcionaria tipo um backup....
Destino > Origem
Pelo o que entendi vc quer fazer uma integração dos dois servidores, correto?
Acho que funcionaria pelo rsync sim, mas vc teria que fazer o comando no destino e na origem...assim eles variam a integração...
faz uns testes ai...
[25] Comentário enviado por Santclair em 20/04/2007 - 15:36h
Realmente, este teste eu já havia feito, e faz o que eu quero, mas eu pensei que o rsync faria isso com um simples comando em uma das duas máquinas. Mas de qualquer jeito obrigado pela ajuda.
só que surgiu um problema o root,para isso teria que ser feito com o sudo....ta problema resolvido....
mas gostaria de deixar isso automatico, como o nosso amigo Dillon disse para agendar teria que usar o comando "crontab -e" tá, o melhor seria montar um script para isso correto? alguem sabe como fazer isso, mas não esquecendo de root claro né...
[29] Comentário enviado por vanervainer em 27/12/2007 - 18:29h
Muito massa o artigo!
Só um comentário........... pelo que eu li no man do rsync se vc usar a opção -a vc não precisa usar nem a opção r nem a opção p, pois a=rlptgoD que respectivamente são:
r -> recursivo
l -> copia links simbólicos como links simbólicos
p -> preserva as permissões do arquivo
t -> atualiza a data e hora para a mais atual, porém não copia o arquivo se este não tiver sido alterado.
g -> mantém o grupo dono do arquivo
o -> mantém o dono do arquivo
D -> preserva devices
Valeu Fabio pelo artigo! Valeu galera pela atenção!
[31] Comentário enviado por Wesllay em 18/07/2008 - 15:48h
E ai cara blz? queria saber se este artigo é válido p/ freebsd tmb
tive o seguinte problema executei o comando
#rsync -Cravzp samba@10.0.0.5:/usr/dados/sistema/ /home/public/sistema/
Resultado copiou quase tudo só faltaram vários executáveis que parou meu trabalho com algumas horas. Sendo que o servidor a qual eu estava tirando os arquivos já estava dando seus ultimos suspiros quase me deu mau. existe alguma diferença deste comando p/ o freebsd?
[35] Comentário enviado por Wesllay em 16/08/2008 - 08:13h
Artigo muito bom, mas gostaria de ver se alguns tivervam o mesmo problema do que eu, ao executar o comando entre dois servidores samba, ocorreu um grande quantidade de perca de arquivos *.exe que estavam no samba, tive problema com vários executáveis e principalmente programas que rodavam do samba. Já viu uma situação como está?
[36] Comentário enviado por Jorge Kalado em 08/10/2008 - 16:34h
Ola, alguem pode me dar uma dica
Eu tenho um servidor Linux para backup e quero usar o RSYNC nele para fazer o backup das estações de trabalho de minha empresa que são Windows, só as estações de trabalho são em Windows, os servidores nosso são em Linux.
Comecei assim, criei em cada estação de trabalho (Windows) uma pasta chamada Backups que esta compartilhada para que somente o usuario administrator leia essa pasta, e nessa pasta os usuarios colocam nela arquivos que acham necessarios guardar para empresa.
E agora, eu queria saber como faço o rsync no linux, e queria que tambem fosse feito de forma que a primeira vez que fosse feito esse backup que viesse tudo e nas proximas vezes que só viesse arquivos novos ou atualizados recentemente.
As estações tem IP´s fixo, ja temos aqui o rsync rodando assim mais acho que mesmo funcionando não é a forma correta.
[39] Comentário enviado por lgguerino em 08/08/2010 - 22:56h
Olá! Preciso de uma ajuda da comunidade. Instalei o Linux Educacional 3.0 (é uma versão do KUbuntu, maiores informacões em http://linuxeducacional.com/) em diversos pcs de uma escola da minha cidade e gostaria que em cada reinicializacão o desktop fosse restaurado, assim evitando que vire uma esculhambacão nos pcs. Eu li um artigo escrito por Wesley Nascimento em http://www.donosdelanhouse.com.br/linux/deepfreeze-no-linux/ que diz o seguinte:
________________
A primeira coisa que se tem a fazer é fazer todas devidas configurações na home (papel de parede, ícones, atalhos, temas e etc), depois faça uma sincronização da pasta /home/usuário-configurado para uma pasta em que os usuários não tenham acesso:
# rsync -azv /home/aluno /mnt
No meu caso o usuário é aluno e a pasta escolhida foi a mnt.
Depois edite o arquivo /etc/init.d/bootmysc (no caso do Ubuntu, se for usar Fedora é /etc/rc.local).
# nano /etc/init.d/bootmysc
Acrescente no final do arquivo os seguintes comandos:
rm -rf /home/aluno
rsync -azv /mnt/aluno /home
(substitua o “aluno” por seu usuário a ser restaurado)
Explicando: tudo que um aluno baixa ou modifica ele estará salvando ou alterando em sua pasta de usuário, então basta apagar sua pasta de usuário e levantá-la novamente usando o rsync, você poderia usar o “cp” também, mas eu achei o rsync mais rápido.
OBS: Se você posteriormente quiser fazer qualquer alteração na home terá que sincronizá-la novamente para a pasta que foi salva, por exemplo, troquei o papel de parede e depois:
# rsync -azv /home/aluno /mnt
________________
Pois é...só que não consegui fazer os passos descritos acima...dá erro já no primeiro comando.
Eu tenho criados uma conta de administrador(root) e outra de usuário limitado(aluno).
Eu quero fazer uma sincronizacão de pastas localmente, tipo salvar os arquivos do Desktop do aluno numa pasta do administrador(onde aluno não tenha acesso) e carregar a cada inicializacão do sistema.
Desde já agradeco a ajuda e a atencão dispensada à minha dúvida. Acredito a solucão desse pequeno problema será de muita utilidade para todos que utilizam linux em pcs, principalmente em escolas.
[41] Comentário enviado por rafacosme em 16/09/2010 - 21:34h
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%
[44] Comentário enviado por UnsigneD em 05/12/2010 - 19:25h
Boas
Eu tenho uma máquina com ubuntu que serve para armazenar os backus das outras máquinas da rede, é como se fosse um servidor de backups da rede. Onde eu uso o rsync para fazer os backups das máquinas que quero. Eu gostaria de fazer com que o rsync funcionasse automaticamente durante todos os dias a hora definida por mim, utilizando o crontab e o rsync mas também queria utilizar encriptação, chaves privadas e públicas!
[45] Comentário enviado por romuleta em 12/01/2011 - 18:50h
A melhor solução de backup em disco rígido é BACKUPPC + RSYNC. Os clientes podem ter qualquer S.O. que rode rsync. Nos horários especificados por mim o BACKUPPC vai nos clientes e pega só o backup incremental, e uma vez na semana faz o FULL. Meu chefe tentou montar um servidor chamado Bacula e desistiu, por ser mto complicado. Montei o BACKUPPC no Ubuntu 10.04 LTS, sem dificuldades, e tá redondinho. Recomendo!
Quem se aventurar, pode solicitar minha ajuda, principalmente se tiver clientes Windows 64bits, pois o cliente rsync pra windows disponível no site do BACKUPPC não funciona com win64. Tive que fazer uma gambiarra de DLLs pra funfar.
[48] Comentário enviado por alexandr3 em 10/09/2012 - 09:58h
Olá bom dia a todos.
Utilezei o: rsync -Cravzp fabio@10.0.0.5:/etc/ para verificar o que tenho no servidor remoto e no servidor local(backup do remoto), agora, alguem sabe como fazer para eu comparar esses dois arquivos, para saber se todo conteudo do servidor remoto esta no servidor local de backup?
[49] Comentário enviado por rodrigo.leonel em 09/04/2013 - 15:46h
como usar o rsync em maquinas do amazon colocando a porta e a chave .pem como seria a sintaxe desse comando, fazendo backup la do servidor pra maquina local
[50] Comentário enviado por k_cesar em 10/05/2014 - 13:43h
Só ficou uma dúvida.
tenha pasta onde esta os arquivos encaminhar para server, o problema e que nesse server outro programa vai retirar o arquivo.
Com rsync
Estava pensado se toda hora coloco um arquivo rsync copia o arquivo para server, outro programa vai retirar esse arquivo e essa pasta vai ficar sem nada.
rsync vai enviar outro novamente então isso vai gerar loop.
[54] Comentário enviado por rafaelsantos2802 em 30/05/2017 - 12:02h
Excelente tutorial.
Preciso sincronizar uma partição com o rsync, porém devido ao tamanho de uma das pastas na origem quero que ela não seja copiada para o destino. Alguém Conseguiria me ajudar com esse detalhe.
[55] Comentário enviado por fabio em 30/05/2017 - 12:52h
[54] Comentário enviado por rafaelsantos2802 em 30/05/2017 - 12:02h
Excelente tutorial.
Preciso sincronizar uma partição com o rsync, porém devido ao tamanho de uma das pastas na origem quero que ela não seja copiada para o destino. Alguém Conseguiria me ajudar com esse detalhe.
[57] Comentário enviado por rafaelsantos2802 em 30/05/2017 - 15:28h
[55] Comentário enviado por fabio em 30/05/2017 - 12:52h
[54] Comentário enviado por rafaelsantos2802 em 30/05/2017 - 12:02h
Excelente tutorial.
Preciso sincronizar uma partição com o rsync, porém devido ao tamanho de uma das pastas na origem quero que ela não seja copiada para o destino. Alguém Conseguiria me ajudar com esse detalhe.