Como Usar Rsync para Transferir Arquivos no Linux

Entenda como o Rsync facilita a transferência de arquivos entre sistemas Linux, seja localmente ou remotamente, com dicas práticas para otimizar suas operações de sincronização

Como Usar Rsync para Transferir Arquivos no Linux

Introdução

O Rsync é uma ferramenta poderosa e versátil para transferir e sincronizar arquivos em sistemas Linux. Amplamente utilizado por administradores de sistemas e desenvolvedores, ele é especialmente útil para backups, espelhamento de arquivos e atualizações entre diretórios locais ou servidores remotos. Sua principal vantagem é a eficiência, pois transfere apenas as diferenças entre os arquivos de origem e destino, reduzindo o tráfego de dados. Neste artigo, você aprenderá a instalar e usar o Rsync para realizar transferências locais e remotas de forma prática e segura.

Pré-requisitos

Antes de começar, certifique-se de que:

  • Você tem acesso a uma estação de trabalho baseada em Linux com privilégios de sudo.
  • Há espaço em disco suficiente para transferências de arquivos grandes.

Como instalar o Rsync

O Rsync está disponível nos repositórios oficiais da maioria das distribuições Linux e frequentemente já vem pré-instalado. Caso não esteja no seu sistema, você pode instalá-lo com os seguintes comandos:

Instalação em distribuições baseadas em Debian/Ubuntu

sudo apt update
sudo apt install rsync

Instalação no FreeBSD

sudo pkg install rsync

Instalação no Arch Linux

sudo pacman -S rsync

Instalação no Fedora

sudo dnf install rsync

Instalação no CentOS/RHEL

sudo yum install rsync

Sintaxe do comando Rsync

A estrutura básica do comando Rsync é:

rsync [OPÇÕES] ORIGEM DESTINO
  • [OPÇÕES]: Flags que definem como o Rsync será executado.
  • ORIGEM: Arquivos ou diretórios que você deseja sincronizar.
    • Use USUÁRIO@HOST:ORIGEM para transferências remotas via SSH.
  • DESTINO: Local onde os arquivos ou diretórios serão copiados.
    • Use USUÁRIO@HOST:DESTINO para transferências remotas via SSH.

Opções comuns do Rsync

Aqui estão algumas das opções mais utilizadas no Rsync:

  • --help, -h: Exibe a ajuda do comando
  • --verbose, -v: Aumenta a verbosidade
  • --quiet, -q: Suprime mensagens que não sejam erros
  • --archive, -a: Preserva metadados (modo arquivo)
  • --recursive, -r: Copia diretórios recursivamente
  • --update, -u: Ignora arquivos mais novos no destino
  • --compress, -z: Comprime os dados durante a transferência
  • --delete: Remove do destino os arquivos ausentes na origem
  • --progress: Mostra o progresso da transferência
  • --dry-run, -n: Simula a execução sem realizar alterações
  • --links, -l: Copia links simbólicos como links
  • --copy-links, -L: Transforma links simbólicos em arquivos ou diretórios referenciados
  • --perms, -p: Preserva permissões
  • --times, -t: Preserva horários de modificação
  • --delete-excluded: Exclui também arquivos excluídos dos diretórios de destino
  • --backup, -b: Faz backups (veja --suffix e --backup-dir)
  • --backup-dir=DIR: Faz backups em uma hierarquia baseada em DIR
  • --max-size=TAMANHO: Não transfere arquivos maiores que TAMANHO
  • --min-size=TAMANHO: Não transfere arquivos menores que TAMANHO
  • --partial: Mantém arquivos de transferência incompletos
  • --exclude=PADRÃO: Exclui arquivos que correspondem ao PADRÃO
  • --include=PADRÃO: Não exclui arquivos que correspondem ao PADRÃO
  • --rsh=COMANDO, -e: Especifica o shell remoto a usar
  • --human-readable, -h: Mostra números em formato legível por humanos
  • --ipv4, -4: Prefere IPv4
  • --ipv6, -6: Prefere IPv6

Essas opções podem ser combinadas para atender às suas necessidades específicas.

Transferindo arquivos e diretórios com Rsync

Transferência local de arquivos

Crie um diretório de teste:

mkdir rsync-test
cd rsync-test

Crie três arquivos de exemplo:

touch file1 file2 file3

Copie os arquivos para um novo diretório chamado dest:

mkdir dest
rsync file1 file2 file3 dest/

Verifique se os arquivos foram copiados:

ls dest/

Sua saída deve ser semelhante a:

file1
file2
file3

Transferência local de diretórios

Para copiar diretórios inteiros, use a flag -a, que preserva atributos como permissões e horários:

rsync -a dest/ dest-copy/

O / ao final do diretório indica que apenas o conteúdo será copiado. Sem ele, o Rsync copia o diretório inteiro.

Excluindo arquivos ou diretórios

Use a opção --exclude para ignorar itens específicos durante a cópia:

rsync -a --exclude 'file2' --exclude 'dest*' . output/

Esse comando copia todos os arquivos e diretórios, exceto aqueles que correspondem aos padrões especificados.

Sincronizando Dados com uma Máquina Remota

Para sincronizar seus dados com um servidor remoto via SSH, utilize o seguinte comando:

rsync -hazvP --delete . usuario@192.0.2.1:/caminho/destino

Explicação das opções:

  • -h: Mostra números em formato legível por humanos.
  • -a: Preserva metadados como permissões e horários.
  • -z: Comprime os dados durante a transferência.
  • -v: Habilita saída detalhada.
  • -P: Exibe progresso e permite retomar transferências interrompidas.
  • --delete: Remove do destino os arquivos ausentes na origem.

Após a execução, você pode verificar os arquivos sincronizados conectando-se ao servidor remoto via SSH:

ssh usuario@192.0.2.1
ls /caminho/destino

Atenção

A opção --delete, embora útil, pode ser perigosa, pois remove permanentemente arquivos do destino que não existem mais na origem. Para evitar problemas, sempre execute uma simulação antes:

rsync -a --delete --dry-run ORIGEM DESTINO

Isso permite revisar as alterações antes que sejam aplicadas.

Usando Opções Avançadas

Compressão

A compressão pode ser útil para reduzir o tempo de transferência, especialmente em conexões lentas. Use a opção -z para ativar a compressão:

rsync -azvP ORIGEM DESTINO

Progresso

Para visualizar o progresso da transferência, use a opção -P:

rsync -avzP ORIGEM DESTINO

Exclusão Seletiva

Para excluir arquivos ou diretórios específicos, use a opção --exclude. Por exemplo, para excluir todos os arquivos .txt:

rsync -a --exclude '*.txt' ORIGEM DESTINO

Backups

Para fazer backups antes de substituir arquivos no destino, use a opção --backup combinada com --backup-dir:

rsync -a --backup --backup-dir=/caminho/para/backups ORIGEM DESTINO

Conclusão

Neste artigo, você aprendeu como instalar e usar o Rsync para transferir e sincronizar arquivos localmente ou remotamente em sistemas Linux. Exploramos as opções mais comuns do comando, como exclusão seletiva (--exclude) e compressão (--compress). O Rsync é uma ferramenta indispensável para quem busca eficiência na gestão de dados, mas exige cuidado ao usar opções como --delete. Sempre revise seus comandos antes da execução final para evitar perdas acidentais de dados.


FAQ

Pergunta e respostas frequentes sobre o conteúdo.

Rsync é uma ferramenta para transferir e sincronizar arquivos em sistemas Linux.

Use o comando 'sudo apt install rsync' para instalar o Rsync no Ubuntu.

A sintaxe básica é 'rsync [OPÇÕES] ORIGEM DESTINO'.

Use o comando 'rsync ORIGEM DESTINO' para copiar arquivos localmente.

Use a opção '--exclude' seguida do padrão do arquivo a ser excluído.

A opção '-a' preserva metadados e copia diretórios recursivamente.

Use o comando 'rsync -e ssh ORIGEM usuario@servidor:DESTINO'.

Remove arquivos do destino que não existem mais na origem.

Use a opção '-P' ou '--progress' para exibir o progresso.

Use a opção '-z' para ativar a compressão.

Use a opção '--dry-run' para simular a execução.

Cria backups antes de substituir arquivos no destino.

Use a opção '-l' para copiar links simbólicos como links.

Use a opção '-p' para preservar permissões.

Use a opção '--max-size=TAMANHO' para excluir arquivos maiores que o tamanho especificado.

Use a opção '-u' para ignorar arquivos mais novos no destino.

Use a opção '-e' ou '--rsh=COMANDO' para especificar o shell remoto.

Adicione uma barra '/' ao final do diretório de origem.

Use a opção '--backup-dir=DIR' para especificar o diretório de backups.

Use a opção '--exclude=PADRÃO' para excluir arquivos que correspondem ao padrão.


Giancarlo Gil Ottaviani Raduan
Me pague um café no NuBank do Giancarlo Gil Ottaviani Raduan

Especialista linux, desenvolvedor web full-stack, PHP no sangue, graduando em Direito, pai da Lais e esposo da Simone


Talvez você goste destes outros tutoriais