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.