Posts Profissionais

Sincronização com rsync de arquivos ou backups remotos

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

Quando utilizar o 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