O que é o rsync?

Rsync é um programa de computador, utilizado em sistemas Unix, para sincronização de arquivos e diretórios (pastas) entre duas localidades diferentes enquanto minimiza a transferência de dados.

Seu algoritmo (inventado pelo programador Andrew Tridgell) foi criado para transmissão eficiente de um arquivo através de um link de comunicação quando um outro computador que recebe os dados já tem uma versão diferente do mesmo arquivo.

Diferente de outras ferramentas disponíveis para cópia de arquivos, o rsync quebra o arquivo de origem em vários pedaços e gera uma pequena assinatura de cada pedaço. Então, envia pela rede estas assinaturas e, fazendo o mesmo do outro lado, descobre quais pedaços faltam no arquivo de destino para torná-lo igual ao de origem.

Confira 5 simples modos de usá-lo

Usando o rsync em vez de copiar com o (cp)

O uso mais simples do rsync é para copiar dados de um lugar para o outro na mesma máquina. Você pode copiar discos inteiros, diretórios ou apenas arquivos com rsync. Vamos supor que temos arquivos em um pen-drive /disco-remoto/ e que precisássemos copiar os arquivos deste pen-drive para o HD local /hd-local/. Queremos garantir que a cópia possa continuar mesmo se alguém desconectar o pen-drive da porta USB. O seguinte comando irá copiar os arquivos do pen-drive /disco-remoto/ para o disco local em /hd-local/:

rsync -av /disco-remoto/ /hd-local/

Você perdeu a conexão com o dispositivo usb ou a sincronização foi parada por algum motivo? Basta executar o mesmo comando rsync uma segunda vez. Rsync analisará os arquivos em ambos os locais e copiará a diferença.

Usando rsync sobre o ssh em vez de scp

Suponhamos que desejemos copiar todos os arquivos em nosso diretório local “/home/rodrigocalado” para a máquina “shutup” sob o diretório remoto “/backup/rodrigocalado/”. O nome do usuário na máquina remota é “fulano”. Observe que adicionamos o argumento “-z” para que todos os dados sejam comprimidos pela rede. Usaríamos o seguinte comando:

rsync -avz /home/rodrigocalado/ fulano@shutup:/backup/rodrigocalado/

E se você quiser apagar todos os arquivos na máquina remota que não estão mais na máquina de origem? Podemos usar o mesmo comando acima e basta adicionar o argumento “–del”. Este argumento vai informar ao rsync para que exclua todos os arquivos do usuário ‘fulano’, da máquina ‘shutup’ que possui o diretório “/backup/rodrigocalado” que já não estejam mais em “/home/rodrigocalado” na máquina local. Em resumo, o comando abaixo vai deixar a máquina remota exatamente igual à máquina local, adicionando novos arquivos e excluindo os arquivos que foram excluídos na máquina local:

rsync -avz --del /home/rodrigocalado/ fulano@shutup:/backup/rodrigocalado/

Usando o rsync para múltiplas cópias de diretórios

Você também pode usar o rsync para copiar vários arquivos ou diretórios utilizando uma única linha de comando. Isso é útil ao lidar na rede, você só precisa digitar sua senha ssh uma vez. Aqui vamos copiar os diretórios de origem /home/rodrigocalado e /home/renatocalado para a máquina remota “shutup” no diretório /backup/:

rsync -avz /home/rodrigocalado /home/renatocalado fulano@shutup:/backup/

Usando o rsync para copiar uma determinada extensão de arquivo a outro local ou diretório

É importante notar que o rsync também pode executar comandos no computador remoto para ajudar a gerar uma lista de cópia de arquivos. O comando shell é expandido pelo shell remoto antes de o rsync ser chamado.

Vamos agora copiar, de uma máquina remota, todos os arquivos .avi de uma determinada pasta para um diretório local:

rsync -avR fulano@shutup:'`find /home/rodrigocalado/Downloads -name "*.[avi]"`' /backup/

Explicações dos argumentos:

-a: modo arquivo
-v: modo para exprimir ou “verbalizar” resultados em texto do que está sendo executado
-r: modo recursivo aos diretórios
-R: utilizar nomes relativos nos caminhos
–del: é o mesmo que –delete-during, ou seja, deletando arquivos ou diretórios enquanto transfere

Em breve faremos um novo artigo para demonstrar mais formas úteis de usar o rsync. Abraços a todos.

Author

Rodrigo Calado é sócio-fundador e CTO do Gran Cursos Online. Graduado em Gestão da Tecnologia da Informação, pós-graduando em Governança de TI pela Universidade Católica de Brasília e cursou MBA em Gestão e Empreendedorismo pela FGV. Possui convicta paixão pela área de tecnologia, educação digital, concursos públicos e empreendedorismo.

Write A Comment