Sincronização de arquivos ou backups remotos utilizando rsync

Rsync é um programa para rápida sincronização remota de dados entre duas máquinas. 

As principais utilizações do rsync:
- Sincronizar arquivos em dois computadores (notebook/desktop ou servidor/estação)
- Realizar backups completos ou incrementais
- Sincronizar um site online, sem precisar enviar arquivo por arquivo via FTP
 
Por ter sido 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. 
 
O rsync compara não só a existência do arquivo nas duas máquinas, mas também seu conteúdo, assim, se um arquivo foi modificado será transmitida apenas a parte alterada, sem a necessidade de copiar todo o arquivo novamente.
 

Como utilizar o rsync

Certifique-se que o rsync esteja instalado em seu Linux digitando:
 
sudo apt-get install rsync
 
Com ele instalado podemos começar. Tenha certeza que a conexão está ativa e o servidor remoto acessível executando:
 
Rsync seu_login@ip_servidor:/home/seu_login/
 
Este commando irá listar todos os arquivos e pastas em /home/seu_login/. 
 
Para sincronizar uma pasta da forma mais simples utilize:
 
Rsync -a /uma_pasta_local/ seu_login@ip_servidor:/home/seu_login/uma_pasta_remota/
 
Como o processo de sincronização pode ser muito complexo, será necessário a utilizar parâmetros extras para que tudo fique como deseja. Os principais parâmetros são:
 
-a  Faz com que todas as permissões e atributos dos arquivos sejam mantidos
--delete Arquivos apagados na pasta original sejam apagados também na pasta de destino
-z, --compress Comprime os arquivos ou trechos de dados durante a cópia
-r , --recursive Modo recursivo, sincroniza todos os sub-diretórios além do principal
-p, --perms Mantem as permissões dos arquivos
-v , --verbose Modo verboso – Apresenta detalhes do processo
-u, --update Ignora os arquivo que estão mais novos no destino
-L, --copy-links Transforma symlinks em pastas e arquivos
-P --partial --progress Exibe o progresso de cópia de cada arquivo
--chmod=CHMOD Copia os arquivos aplicando a permissão informada
--exclude=PATTERN Ignora arquivos que se encaxem na expressão
      

Alguns exemplos

 
Copiar mantendo atributos, de todas as pasta e todas suas pastas, compactando durante o tráfego
 
Rsync -arz /uma_pasta_local/ seu_login@ip_servidor:/home/seu_login/uma_pasta_remota/
 
Manter a pasta idêntica no destino, inclusive sincronizando exclusão de arquivos
 
Rsync –arzp --delete /uma_pasta_local/ seu_login@ip_servidor:/home/seu_login/uma_pasta_remota/
 
  • Para inverter o sentido, trazendo para a maquina local arquivos remotos basta trocar a ordem dos parâmetros, onde o primeiro caminho é a origem e o segundo o destino. 
  • Se desejar realizar o processo de forma automática, sem digitar a senha a cada chamada, será necessário instalar uma chave de autenticação no servidor remoto.
  • Para que as tarefas de sincronização ocorram em tempos determinados, ou de tempos em tempos de forma autônoma configure um cronjob para isso.
  • Se seu caso for ainda mais complexo acesse os links abaixo para a criação de um Shell script com rotinas mais elabadoras.
 

Algo mais



Assuntos





Participe comentando!


Outros posts interessantes