RSync

Conheça vários exemplos de uso do Rsync, esta ferramenta poderosa para sincronizar diretórios locais e remotos!


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


1. Introdução

O Rsync, abreviação de “sincronização remota”, é uma ferramenta de sincronização que pode ser utilizada para diretórios ou arquivos tanto remotos quanto locais. Ele usa um algoritmo que minimiza a quantidade de dados copiados ao mover apenas as porções de arquivos que foram alteradas, e é por essa razão que ele também é muito usado em scripts de backups.

2. Sintaxe

A sintaxe do rsync é simples e opera de uma maneira semelhante a outros comandos como ssh, scp e mv.

Vamos criar dois diretórios de teste e alguns arquivos de teste com os seguintes comandos:

cd ~
mkdir dir1
mkdir dir2
touch dir1/file{1..100}

Agora, temos um diretório chamado dir1 contendo 100 arquivos vazios.

ls dir1

Para sincronizar o conteúdo de dir1 em dir2 no mesmo sistema, digite:

$ rsync -r dir1/ dir2

A opção -r significa recursivo, que é necessário para a sincronização de diretórios.

Também podemos usar o sinalizador -a como alternativa ao -r:

$ rsync -a dir1/ dir2

A opção -a é a combinação de vários parâmetros em um. Ela representa “arquivo” e sincroniza recursivamente, preserva links simbólicos, arquivos especiais e de dispositivo, horários de modificação, grupo, proprietário e permissões. Ela é o mais popular ao lado do -v de –verbose, que é nada mais que a exibição de tudo que está sendo copiado naquele momento.

Importante

Você deve ter notado que existe uma barra à direita / no final do primeiro argumento nos comandos acima:

$ rsync -a dir1/ dir2

Isso é necessário e significa “o conteúdo em dir1”. Se o comando for realizado sem a barra à direita, o diretório dir1 é o que seria copiado, para dentro do dir2. Isso criaria uma hierarquia como esta:

$ ~/dir2/dir1/[files]

Sempre verifique duas vezes seus argumentos antes de executar um comando rsync.

O Rsync fornece um método para fazer isso passando a opção -n ou –dry-run com o já citado -v para –verbose:

$ rsync -anv dir1/ dir2

3. Usando Remotamente

Sincronizar com um sistema remoto é simples se você possuir acesso SSH à máquina remota e o rsync instalado em ambas. Depois de ter o acesso SSH verificado entre as duas máquinas, sincronize a pasta dir1 de antes, com um computador remoto usando esta sintaxe – note que vou transferir o diretório real neste caso, então omitimos a barra à direita:

$ rsync -va ~/dir1 usuario@IP_do_alvo:diretório_alvo

Isso é chamado de uma operação “push”, pois empurra um diretório do sistema local para um sistema remoto. A operação oposta é “pull”. Ela é usada para sincronizar um diretório remoto com o sistema local. Se o dir1 estivesse no sistema remoto em vez de no nosso sistema local, a sintaxe seria mais ou menos o contrário:

$ rsync -va usuario@rdiretório_alvo:/home/$USER/dir1 pasta/na/máquina/local

Assim como em ferramentas similares, a origem é sempre no primeiro argumento e o destino é sempre o segundo.

4. Opções úteis

O Rsync oferece muitas opções para alterar o comportamento padrão da ferramenta. Se estiver transferindo arquivos que ainda não foram comprimidos, como arquivos de texto, você pode reduzir a transferência de rede adicionando compressão com a opção -z:

$ rsync -avz origem destino

O sinalizador -P é muito útil: Ele combina os sinalizadores –progress e –partial. O primeiro deles lhe dá uma barra de progresso para as transferências, e o segundo, te permite retomar as transferências interrompidas:

$ rsync -vazP origem destino

Se executarmos o comando novamente, teremos um resultado mais curto e nada será copiado, pois nenhuma alteração foi feita. Isso ilustra a capacidade do rsync de usar horários de modificação para determinar se alterações já foram feitas.

4.1 Delete

Para manter dois diretórios realmente sincronizados, é necessário excluir arquivos do diretório de destino caso eles sejam removidos da fonte. Por padrão, o rsync não exclui nada do diretório de destino, ele apenas copia os dados complementando o que já existir.

Podemos alterar esse comportamento com a opção –delete.

Antes de usar essa opção, use a opção –dry-run e faça testes para evitar a perda de dados

$ rsync -va --delete origem destino

Se quiser excluir certos arquivos ou diretórios localizados dentro de um diretório que você está sincronizando, faça isso os especificando em uma lista separada por vírgulas após a opção –exclude=:

$ rsync -va --exclude=padrão_a_ser_excluido origem destino

Se especificarmos um padrão para excluir, podemos sobrescrever essa exclusão para arquivos que correspondam a um padrão diferente usando a opção –include=.

$ rsync -va --exclude=padrão_a_ser_excluido --include=padrão_a_ser_incluído origem destino

Por fim, a opção —backup do rsync pode ser usada para armazenar backups de arquivos importantes. Ela é usada em conjunto com a opção –backup-dir, que especifica o diretório onde os arquivos de backup devem ser armazenados.

$ rsync -va --delete --backup --backup-dir=/caminho/do/backup /caminho/da/origem destino

5. Conclusão

O Rsync pode simplificar as transferências de arquivos em conexões de rede e melhorar sua interação de sincronização de diretórios locais. A flexibilidade do rsync faz com que ele seja uma boa opção para muitas operações de nível de arquivos diferentes.

Inclusive, dominá-lo permite que você crie scripts .sh que automatizem backups usando o Cron!
Mas isso é assunto para outra publicação!

#UrbanCompassPony

Adaptado de: DigitalOcean

Deixe um comentário