Como usar o comando rsync Linux para otimizar a sincronização remota de arquivos

Como usar o comando rsync Linux para otimizar a sincronização remota de arquivos

Copiar arquivos de um dispositivo para outro pode ser bem chato — mas, no Linux, você pode tornar o processo bem mais fácil com o comando rsync.

O rsync, acrônimo de remote sync, serve para transferir e sincronizar arquivos ou pastas entre dispositivos locais e servidores remotos com Linux. Não importa se você já é craque no sistema ou está começando agora — aprender a usar o rsync vai deixar a gestão de arquivos no seu Linux muito mais tranquila.

E é para isso que estamos aqui: neste artigo, vamos explicar tudo sobre o comando rsync no Linux e como ele funciona, com exemplos práticos para você aprender de forma simples e direta.

rsync é um comando Linux usado para transferir e sincronizar arquivos entre dispositivos locais e remotos. Diferente dos comandos tradicionais de cópia, o rsync usa um algoritmo de transferência delta, que envia apenas as diferenças entre os arquivos de origem e destino. Isso ajuda a reduzir significativamente o uso da banda e acelera as transferências.

O rsync também possui recursos avançados para transferir arquivos para um servidor de backup e realizar tarefas de espelhamento. Ele preserva os atributos dos arquivos e suporta transferências seguras via SSH, o que o torna ideal tanto para transferências locais quanto remotas.

Você também pode usar cron jobs para para que o rsync envie notificações por e-mail em caso de erros ou falhas durante a transferência de arquivos. Isso garante que você esteja sempre informado sobre o status de suas operações de sincronização, sem precisar monitorar manualmente o processo.

Como o rsync funciona?

Agora, vamos explorar diversas opções do rsync e sua sintaxe básica para diferentes finalidades.

Opções e parâmetros do rsync

O rsync tem várias opções de linha de comando, parâmetros e arquivos de configuração para adaptar seu comportamento. Aqui estão alguns dos mais usados:

  • -v ou -verbose – Aumenta a verbosidade, fornecendo uma saída mais detalhada durante a transferência.
  • -a ou -archive – Modo de arquivamento, que inclui cópia recursiva e preservação de permissões de arquivos, carimbos de data/hora, links simbólicos e arquivos de dispositivos.
  • -r ou -recursive – Copia diretórios de forma recursiva.
  • -delete – Exclui os arquivos excluídos do diretório de origem no destino.
  • -exclude=PATTERN – Exclui arquivos ou diretórios que correspondam ao padrão especificado.
  • -include=PATTERN – Inclui arquivos ou diretórios que correspondem ao padrão especificado.
  • -z ou -compress – Comprime os dados do arquivo durante a transferência para reduzir o uso da largura de banda.
  • -s ou -sparse – Gera um resumo dos arquivos e diretórios sincronizados, inclusive arquivos esparsos, após uma operação de sincronização.
  • -dry-run – Realiza uma execução de teste sem fazer nenhuma alteração real.
  • -temp-dir – Especifica um diretório para armazenar arquivos temporários.
  • -u ou -update – Ignora os arquivos no destino que são mais recentes do que os arquivos de origem, de modo que somente os arquivos mais antigos sejam atualizados.
  • -h ou -human-readable – Emite números em um formato legível por humanos.
  • -i ou -itemize-changes – Emite uma file list das alterações feitas durante a transferência.
  • -progress – Mostra o progresso durante a transferência.
  • -stats – Fornece estatísticas de transferência de arquivos após a conclusão.
  • -e ou -rsh=COMMAND – Especifica o shell remoto a ser usado.
  • -bwlimit=RATE – Limita a largura de banda para aumentar a eficiência da rede.
  • -P ou -partial -progress – Mantém arquivos parcialmente transferidos e mostra o progresso.

Para obter uma lista completa de todas as opções disponíveis no rsync, execute o comando abaixo:

man rsync

Você verá informações detalhadas sobre cada opção e parâmetro.

Sintaxe básica

A sintaxe básica de um comando rsync é a seguinte:

rsync [OPTIONS] SOURCE DESTINATION
  • [OPTIONS] – Esta é a seção em que você pode incluir opções do rsync. Você pode adicionar mais de uma opção.
  • SOURCE – Esse é o diretório ou arquivo de origem que você deseja copiar ou sincronizar. Especifique aqui o caminho para os dados de origem.
  • DESTINATION – O diretório de destino em que os dados de origem serão copiados ou sincronizados. Especifique aqui o caminho para o diretório ou arquivo de destino.

Sintaxe básica para o shell remoto

Ao usar o rsync para transferir dados de um computador local para um servidor virtual privado (VPS) Linux, a comunicação depende do daemon rsync. A sintaxe do rsync para o shell remoto é a seguinte:

rsync [OPTIONS] -e "SSH_COMMAND" SOURCE DESTINATION

A opção -e é usada para especificar o shell remoto. Na maioria dos casos, você usará o ssh para se conectar ao host remoto usando o protocolo de atualização remota rsync.

Vamos explorar dois cenários comuns.

Use o seguinte comando para extrair dados de um sistema remoto para seu computador local:

rsync -avz -e ssh user@remote_host:/path/to/source/ /path/to/local/destination/

Por outro lado, use o seguinte comando para enviar dados do seu sistema de arquivos local para um diretório remoto usando o protocolo CVS:

rsync -avz /path/to/local/source/ user@remote_host:/path/to/remote/destination/

Como verificar a versão do rsync

O rsync é normalmente incluído por padrão em muitas distribuições Linux. Vamos verificar se o rsync já está instalado em seu sistema.

Para usuários do Windows que trabalham com hospedagem VPSuse o PuTTY SSH para fazer login. Se estiver usando o macOS ou o Linux, acesse o Terminal.

Uma vez conectado, execute o comando abaixo:

rsync --version

Você verá um resultado semelhante ao seguinte:

rsync version 3.2.7 protocol version 31

Como instalar o rsync

Se o rsync não estiver pré-instalado em seu sistema local ou remoto, instale-o manualmente. Aqui estão os comandos de instalação para diferentes sistemas operacionais:

Para distribuições Linux baseadas no Debian, incluindo o Ubuntu:

sudo apt-get install rsync

Para distribuições baseadas no Fedora, como o CentOS:

sudo dnf install rsync

Para macOS:

brew install rsync

Como usar os comandos rsync

Antes de aprender a usar o rsync, vamos preparar dois diretórios de teste denominados original duplicate. O diretório original conterá três arquivos de amostra, enquanto o diretório duplicate começará vazio.

Para criar esses diretórios, siga estes comandos:

cd
mkdir original
mkdir duplicate

Em seguida, crie três arquivos de amostra dentro da pasta original usando o comando touch:

touch original/file{1..3}

Para garantir que todos os arquivos de amostra sejam criados, liste todos os arquivos no diretório original e verifique o sistema de arquivos usando este comando:

rsync original/

Comandos rsync mais comuns

Um dos cenários de uso mais comuns do rsync é replicar dados entre dois diretórios no mesmo sistema. Para fazer isso, use o seguinte comando:

rsync original/* duplicate/

O conteúdo do diretório original será espelhado no diretório duplicate. Se você adicionar um novo arquivo ou atualizar os arquivos existentes no diretório original, somente os arquivos novos ou alterados serão transferidos. No entanto, se a pasta duplicate não existir, isso resultará em um erro.

Para sincronizar arquivos e criar uma nova pasta simultaneamente, use este comando:

rsync original/ duplicate/

Como usar os comandos rsync com subdiretórios

Para sincronizar pastas e subdiretórios entre dois locais, use o comando rsync copy directory:

rsync -r original/*/ duplicate/

Para sincronizar um subdiretório específico, digite o comando abaixo:

rsync -r original/subdirectory_name/ duplicate/

Substitua subdirectory_name pelo nome da subpasta que você deseja sincronizar.

Talvez você queira excluir um subdiretório específico da sincronização. Nesse caso, digite o seguinte comando para fazer isso:

rsync -r --exclude=subdirectory_name original/ duplicate/

Como sincronizar arquivos

Para sincronizar ou atualizar arquivos entre duas pastas, use este comando:

rsync -av original/ duplicate/

Para copiar os arquivos do diretório original para um servidor remoto, digite este comando:

rsync -av -e ssh original/ username@remote_host:/path/to/destination/

Substitua username, remote_host /path/to/destination/ pelos valores apropriados.

Como combinar comandos rsync

À medida que você se familiarizar mais com o rsync, vamos explorar sua capacidade de combinar vários comandos para tarefas mais complexas de gerenciamento de arquivos.

Você pode combinar os recursos de sincronização e exclusão para obter resultados precisos.

O exemplo abaixo mostra como você pode sincronizar todos os arquivos do diretório original, exceto os arquivos TXT:

rsync -av --exclude='*.txt' original/ duplicate/

Combine a opção -r com comandos de sincronização para garantir que os diretórios rsync e seus conteúdos sejam sincronizados recursivamente.

rsync -av -r original/ duplicate/

Antes de sincronizar uma pasta rsync pra valer, você pode usar a opção -dry-run para visualizar as alterações que o rsync faria sem fazer nenhuma modificação real.

rsync -av --dry-run original/ duplicate/

Outras opções para comandos rsync

A opção -delete permite excluir arquivos do diretório de destino que não existem mais no diretório de origem. Para usar essa opção, inclua-a em seu comando rsync da seguinte forma:

rsync -av --delete original/ duplicate/

O rsync suporta a sincronização de arquivos ou tipos de arquivos especificados usando padrões e wildcards. Por exemplo, para sincronizar apenas arquivos TXT, digite:

rsync -av original/*.txt duplicate/

Você também pode excluir arquivos com base em padrões específicos em seus nomes. Para excluir um arquivo chamado example.txt, digite o seguinte comando:

rsync -av --exclude=example.txt original/ duplicate/

Combine as opções -include -exclude para incluir vários arquivos ou diretórios e excluir outros. Aqui está um exemplo para incluir arquivos que começam com a letra e excluir todos os outros arquivos:

rsync -av --include='L*' --exclude='*' original/ duplicate/

Para limitar a sincronização a arquivos menores do que um tamanho pré-especificado, use a opção -max-size seguida do limite de tamanho. Por exemplo, o comando rsync para sincronizar apenas arquivos menores que 10 MB é o seguinte:

rsync -av --max-size=10M original/ duplicate/

Como adicionar uma barra de progresso

Monitorar o progresso da sincronização pode ser útil, especialmente para transferências de arquivos grandes. O rsyncpermite incluir uma barra de progresso usando a opção -progress. Aqui está o comando que você pode usar:

rsync -av --progress original/ duplicate/

O resultado será parecido com o seguinte:

file1.txt
    5,120,000 100%   50.00MB/s 0:00:00 (xfr#1, to-chk=2/3)
file2.txt
    5,345,678 100%   55.67MB/s 0:00:00 (xfr#2, to-chk=1/3)

Para adicionar uma barra de progresso e manter os arquivos parcialmente transferidos em vez de excluí-los após a interrupção, use a opção -P:

rsync -av -P original/ duplicate/

Como criar um backup rsync

Por fim, o rsync oferece uma maneira conveniente de criar arquivos de backup usando a opção -backup. Essa opção permite fazer uma cópia de segurança dos seus arquivos em um servidor, evitando que eles sejam substituídos durante a sincronização.

Para criar um backup remoto e especificar seu diretório, use o seguinte comando:

rsync -av --backup --backup-dir=/path/to/backup/ original/ duplicate/

Quando executada, a opção de backup rsync gera uma lista de arquivos incremental e acrescenta um til (~ ) ao nome do arquivo original, como important.txt. Com isso, as cópias se diferenciam dos originais sem maiores problemas.

Conclusão

O rsync é uma poderosa ferramenta de sincronização remota, transferência de dados e espelhamento de arquivos. Neste guia, cobrimos tudo o que você precisa para começar a usar a ferramenta, desde a instalação até exemplos práticos de rsync que você pode aplicar via linha de comando. Dominar o rsync vai melhorar a gestão de arquivos no seu Linux, tornando-a mais eficiente e confiável.

Perguntas frequentes sobre o comando rsync Linux

Esta seção responderá às perguntas mais comuns sobre o rsync.

Quais sistemas operacionais são compatíveis com o rsync?

O rsync foi projetado principalmente para sistemas operacionais do tipo Unix, incluindo Linux e macOS. No entanto, ele também pode ser usado em sistemas Windows com a ajuda de aplicativos clientes rsync de terceiros, como o Cygwin ou o Windows Subsystem for Linux (WSL). Isso torna rsync uma opção versátil para a sincronização de arquivos em vários sistemas operacionais.

Qual é a diferença entre o rsync e outros métodos de transferência de arquivos?

Em vez de transferir sistemas de arquivos inteiros, o rsync envia apenas as diferenças entre os arquivos de destino e de origem, reduzindo o uso da largura de banda. Ele pode funcionar em conexões SSH seguras, oferecer compactação flexível de arquivos e retomar transferências interrompidas. Ele é particularmente útil ao lidar com um grande número de arquivos em um sistema remoto.

Quais são as desvantagens do rsync?

Embora o rsync seja uma ferramenta poderosa, ele tem algumas limitações. Primeiro, ele pode não ser adequado para sincronização em tempo real, pois opera em modo de lote. Além disso, ele não oferece criptografia nativa, pois os usuários geralmente dependem do SSH para transferências seguras. Por fim, o Linux rsync pode ser complexo para iniciantes, exigindo uma curva de aprendizado para dominar suas amplas opções. 

Author
O autor

Ariane G.

A Ariane é SEO Team Leader com experiência em conteúdo, localização e SEO. Seu desafio é levar a Hostinger ao topo dos resultados no Brasil, França e Reino Unido. Eventualmente ela compartilha seu conhecimento no blog e nos tutoriais da Hostinger e no tempo livre ela gosta de explorar lugares novos e viver intencionalmente.