O rsync é daquelas ferramentas que todo o utilizador Linux terá de dominar mais cedo ou mais tarde. Efetivamente trata-se de um importante software que permite sincronizar pastas no mesmo sistema ou em sistemas diferentes.
O nome rsync deriva da expressão “Remote Syncronization”, ou seja, Sincronização Remota. Esta ferramenta permite copiar ficheiros de forma rápida, versátil e segura.
Ao nível do seu funcionamento, em termos mais concretos, o rsync consegue replicar ficheiros localmente, na mesma máquina, ou através de máquinas remotas, ligadas entre si por uma sessão em shell. Para além deste aspeto o rsync oferece uma variadíssima gama de opções que permitem controlar o seu comportamento de uma forma muito versátil. Um dos aspetos mais valorizados do rsync deriva da utilização de um algoritmo próprio que permite perceber e otimizar a quantidade de dados a serem transferidos. Este aspeto tem um impacto profundo no rendimento do rsync. O que o software faz é verificar rapidamente que ficheiros se alteraram desde a última sincronização e transferir apenas os que se alteraram.
Detalhe: O algoritmo utilizado pelo rsync é o delta-transfer. Este algoritmo determina os dados a serem enviados da origem para o destino, mediante um check entre ambos. Sempre que é ordenada uma cópia, o delta-transfer averigua rapidamente se os ficheiros a copiar já existem no destino e, quando existem, averigua quais são as diferenças entre ambos os ficheiros, enviando apenas os dados necessários para que o ficheiro de destino seja igual ao original.
Tentando fornecer uma visão mais prática sobre o funcionamento deste software, vamos estabelecer que temos o “diretório_fonte” em nosso sistema e que queremos replicá-lo para outra localização no nosso sistema, por uma questão de segurança, sob o nome de “diretório_destino”. Então, para sincronizar o nosso conteúdo fazemos:
rsync diretorio_fonte -r diretorio_destino
Com este comando estamos simplesmente a dizer ao rsync para copiar o diretorio_fonte para o diretorio_destino. A opção
-r indica que a cópia seja recursiva, ou seja, será copiado o diretorio_fonte e todo o seu conteúdo.
Se retirarmos a opção
-r podemos fazer o seguinte:
rsync diretorio_fonte -d diretorio_destino
Desta vez estamos igualmente a dizer ao rsync para copiar o diretorio_fonte para o diretorio_destino, no entanto, com a opção
-d estamos a indicar que não seja copiado o conteúdo do diretório. Ou seja, apenas o diretório será copiado.
Uma das vantagens do rsync é a capacidade de fazer mirroring. Vejamos como podemos fazer um mirror de nosso diretório fonte:
rsync –a diretorio_fonte diretorio_destino
Simples não? Na realidade ao passar a opção
–a estamos a dizer ao programa para executar uma sincronização completa dos ficheiros a copiar.
Detalhe: Numa tradução à letra, Mirroring significa “espelhar”. Trata-se de uma técnica de cópia, na qual, os ficheiros ou diretórios são replicados exatamente como existem na origem. Ou seja, fazemos uma duplicação exata de um ficheiro, copiando inclusive as suas propriedades, proprietários ou permissões. Esta modalidade é muito utilizada em backups de sistemas pois permite duplicar fielmente sistemas inteiros.
Vejamos também como podemos fazer um mirror de nosso diretório fonte através de uma rede para um sistema remoto. Vamos utilizar ssh por razões de segurança e iremos contactar com o sistema
testes.linuxando.com, no qual existe um utilizador de nome
aprendiz :
rsync –a –e ssh diretorio_fonte aprendiz@testes. linuxando.com: diretorio_destino
Note-se que, desta vez, para além da opção de mirroring, introduzimos a opção
-e ssh a qual instrui o programa para estabelecer uma conexão pela rede para o sistema e utilizador fornecidos.
A favor:
Rapidez, derivada da utilização do algoritmo delta-transfer e da compressão dos dados transmitidos;
Capacidade para copiar links;
Capacidade para copiar ficheiros, informação de donos, grupos e suas permissões;
Capacidade de replicação seletiva de diretórios;
Capacidade de transferir dados por meio de diferentes shell remotas, por exemplo o ssh ou rsh;
Não exige ser executado pelo super utilizador;
Excelente adaptação a funcionalidades de mirroring com capacidades de conexão anónima ou autenticada.
Contra:
O único ponto negativo que encontramos para o rsync é a existência de uma curva de aprendizagem mais acentuada, ou seja, leva algum tempo até um utilizador dominar esta ferramenta.
Esta é apenas uma visão geral do comando rsync, uma vez que este integra inúmeras opções de utilização, por exemplo:
–o os ficheiros a copiar irão manter os proprietários de origem;
–g os ficheiros a copiar irão manter os grupos de origem;
–p os ficheiros a copiar irão manter as permissões de origem;
–v o programa irá imprimir informação sobre a execução da sincronização à medida que esta é realizada.
Pelas razões explicadas, o rsync é uma ferramenta obrigatória para administradores de sistemas Linux, sendo mesmo uma ferramenta predileta para backups/cópias de segurança, replicação de sistemas completos/mirroring, replicação de estruturas de pastas, ou mesmo para cópias simples de ficheiros, tal é a sua versatilidade.
Terminamos aqui a nossa abordagem inicial ao comando rsync. Veja também como poderá combinar a utilização do rsync com os cronjobs, com vista a automatizar suas tarefas de manutenção de sistemas.
Divirta-se!
A equipa Linuxando