Rsync: mudanças entre as edições

De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar
Linha 83: Linha 83:


O "pulo do gato" dessa situação é a omissão do diretório de destino.
O "pulo do gato" dessa situação é a omissão do diretório de destino.
== Clientes ==
O '''rsync''' possui alguns clientes gráficos, embora seu poder maior esteja na linha de comando. Entre os clientes mais famosos estão:
* Grsync
  :* http://www.opbyte.it/grsync
  :*
* GAdmin-Rsync
  :* http://freecode.com/projects/gadmin-rsync
  :* http://mange.dynalias.org/linux/gadmin-rsync
* LuckBackup
  :* http://luckybackup.sourceforge.net


== Tutoriais ==
== Tutoriais ==

Edição das 15h25min de 16 de junho de 2014

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.

Voltando ao nosso estudo de caso introdutório, 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 sniffer1 na rede capturar sua senha de FTP em plain text.

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

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

Situação Problema

Vamos imaginar um cenário onde você programou um mega portal que possui centenas de arquivos que somados ocupam cerca de 300 MB em disco rígido. Existem duas cópias do portal, uma no seu desktop de trabalho e outra no servidor Linux em produção.

Certo dia você resolve fazer uma baita reforma no site e passa uma porção enorme de tempo alterando seus scripts PHP, HTML, folhas de estilo, imagens e tudo mais que se possa imaginar e agora precisa atualizar a nova versão offline com a versão que existe no servidor em produção.

O grande problema é que você passou horas programando e já não recorda quais arquivos foram alterados. E agora, que solução te vem à cabeça? Enviar os 300 MB por FTP para o servidor? Ou passar outro bocado de horas selecionando os arquivos que você "lembra" que alterou e fazendo seu upload um a um? Que nada, isso é um mártir exclusivo para usuários de Windows. Quem programa em desktops Linux e claro, hospeda seus projetos em servidores Linux pode contar com a ferramenta dos sonhos, o rsync.


Download e instalação

Rsync é quase que um pacote default em todas as distribuições linux. Aquelas que não o instalam numa instalação do tipo básica, com certeza possuem o pacote em algum lugar em seus CDs de instalação. Consulte os mesmos para maiores informações.

No Debian, a instalação do mesmo se faz com apenas um comando:

 # apt-get install rsync 

Se você preferir, pode obter o software direto na fonte. Seu site oficial é:

E seu download pode ser obtido em:


Para a comunicação entre duas máquinas com rsync funcionar, será necessário:

  1. o programa rsync instalado em ambas as máquinas;
  2. o servidor SSH (sshd) rodando no servidor.

Nota: se a comunicação for bilateral (ambas as máquinas enviam e recebem arquivos) o serviço SSH precisará estar rodando em ambas as máquinas.

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/USUARIO/ARTIGOS para para /MEDIA/BACKUPS/ARTIGOS, executamos:

 $ rsync -Cravzp /HOME/USUARIO/ARTIGOS /MEDIA/BACKUPS/ARTIGOS

Nota: esse comando pressupoe que /MEDIA/BACKUPS/ARTIGOS está criado e tenho permissões de escrita no mesmo.

Costumo utilizar a seqüência 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:

 $ rsync -Cravzp /home/fabio/artigos/ fabio@10.0.0.5:/var/backups/artigos/ 

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:

 $ rsync -Cravzp fabio@10.0.0.5:/var/backups/artigos/ /home/fabio/artigos/ 

Listando arquivos do servidor

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.

Clientes

O rsync possui alguns clientes gráficos, embora seu poder maior esteja na linha de comando. Entre os clientes mais famosos estão:

  • Grsync
 :* http://www.opbyte.it/grsync
 :* 
  • GAdmin-Rsync
 :* http://freecode.com/projects/gadmin-rsync
 :* http://mange.dynalias.org/linux/gadmin-rsync
  • LuckBackup
 :* http://luckybackup.sourceforge.net


Tutoriais

Tutorial Backup de Computador pela rede com Rsync

Referências