Comando rsync: Copie e Sincronize Pastas e Arquivos

Compartilhe:

comando rsync transferindo arquivos do desktop para o servidor

Já precisou copiar localmente arquivos de forma rápida ou sincronizar arquivos entre hosts em uma rede sem perder seus atributos (permissões, data/hora e etc) ?

O comando rsync atende exatamente esse tipo de necessidade, sendo uma ferramenta rápida, flexível e extremamente confiável para sincronização local e remota de arquivos e pastas.

Seja para transferir arquivos para um servidor em produção, automatizar rotinas de backup ou migrar dados entre dispositivos de armazenamento, o uso do rsync linux vai ajuda-lo.

Neste artigo, você vai aprender desde a instalação do rsync, sua sintaxe e como usa-lo na prática com 10 exemplos práticos que podem ser utilizados no dia a dia de um administrador linux.

Entendendo o comando rsync

O rsync (remote sync) é uma ferramenta utilizada para copiar e sincronizar arquivos e diretórios localmente ou entre computadores através da rede.

Uma de suas principais vantagens é identificar o que precisa ser atualizado, evitando transferências desnecessárias. Após a primeira copia, em vez de copiar novamente todos os arquivos, o comando rsync pode transferir somente aquilo que foi alterado.

Outro ponto importante é que o rsync consegue preservar atributos dos arquivos, como permissões, proprietário, grupo, timestamps e links simbólicos, dependendo das opções utilizadas.

Em distribuições linux baseadas no Debian ou Ubuntu, utilize o apt para instala-lo:

No Red Hat, AlmaLinux e Rocky Linux, instale o comando rsync com o gerenciador de pacotes dnf:

Como usar o comando rsync

Para utilizar o comando rsync é necessário saber sua sintaxe, que é:

Explicação:

rsync – O programa que copia e/ou sincroniza arquivos e pastas localmente ou remotamente.

opções – São as opções do comando rsync que modificam o que ele faz por padrão.

origem – Arquivo ou diretório que será copiado/sincronizado.

destino – Local para onde os dados serão enviados.

Veja um exemplo de uso:

Nesse caso, “/dados/” é a origem e “/backups/” é o destino.

Um detalhe importante é a barra/” no final do diretório de origem. “rsync -a /pasta1/ /pasta2/” copia o conteúdo de “pasta1” para “pasta2”, enquanto “rsync -a /pasta1 /pasta2/” cria o diretório “pasta1” dentro de “pasta2”.

Abaixo, veja as principais opções do comando rsync para transferências:

OpçãoDescriçãoExemplos de uso
-aModo arquivo, copia recursivamente preservando permissões, links e outras informações.rsync -a /data/ /copy/
-vExibe detalhes sobre os arquivos sendo transferidos durante o processo.rsync -av /origem/ /destino/
-zComprime os dados durante a transferência.rsync -az /data usuario@servidor:/copy
-PExibe a barra de progresso e permite retomar transferências interrompidas.rsync -avP /origem/ /destino/
-nSimula a operação sem executar qualquer cópia ou modificação.rsync -an /origem/ destino/

Se você está começando a estudar linux, também vale consultar o nosso guia de comandos linux para conhecer outras ferramentas importantes do terminal.

1. Copiar arquivos localmente

Para copiar o conteúdo de uma pasta para outra no mesmo servidor:

Este exemplo copia todo o conteúdo do diretório “/srv/app1” para a pasta “/backup/app1”, a opção “-v” mostra detalhes do que está sendo copiado e a opção “-a” é o modo archive que reúne as seguintes opções do comando rsync:

OpçõesDescrição
-rFaz uma cópia recursiva, incluindo seus arquivos e subdiretórios.
-lCopia links simbólicos como links simbólicos, em vez de copiar o arquivo para o qual apontam.
-pPreserva as permissões dos arquivos e diretórios copiados.
-tPreserva a data e hora de modificação dos arquivos e diretórios copiados.
-gPreserva o grupo proprietário dos arquivos e diretórios.
-oPreserva o proprietário (owner) dos arquivos e diretórios. Precisa executar o rsync como root.
-DCaso exista arquivos especiais de dispositivos, eles são copiados.

Se você alterar qualquer arquivo na origem e executar novamente o comando rsync, ele copia somente o que foi alterado, veja o exemplo:

Veja na imagem acima que foi feita somente a cópia de um arquivo (no exemplo: cron), o rsync evita copiar novamente aquilo que já está atualizado no destino. Isso torna o processo mais rápido.

2. Simular a execução do comando rsync

Antes de uma operação, você pode fazer uma simulação utilizando a opção “--dry-run” ou “-n” do comando rsync:

ou

O comando mostra o que seria feito sem alterar o destino. É uma prática que pode ser adotada antes de utilizar a opção “--delete” que será abordada a seguir.

3. Mantendo dois diretórios sincronizados

Quando você quer que a pasta de destino (local ou remota) seja uma réplica exata da origem, utilize a opção “--delete” para qualquer arquivo apagado na origem também seja removido no destino.

Assim, é assegurado que pastas e arquivos que não existem mais na origem sejam apagados no destino, mantendo a estrutura de diretórios e arquivos iguais em ambos os lados, como feito, por exemplo, com SYSVOL de um domínio active directory com mais de um servidor samba AD.

4. Copiando diretório local para servidor remoto

Se está precisando transferir arquivos do servidor local para um servidor remoto, o comando rsync executa a tarefa com a segurança do ssh, mas é necessário ter o rsync instalado no sistema remoto, veja o exemplo:

No exemplo, “/srv/app2/logs” é a origem (servidor local) e o comando rsync interpreta “[email protected]:/srv/app2/logs/” como um destino remoto e, por padrão, executa o ssh para transferir os arquivos e pastas.

O uso da opção “-z” garante que os arquivos sejam comprimidos durante o envio pela rede para acelerar o processo de transferência para o servidor remoto.

Caso o serviço SSH do servidor remoto não utilize a porta padrão, você pode especificar uma porta SSH diferente:

A opção “-e” serve para especificar ou alterar o comando de transporte.

5. Transferir arquivos de um servidor remoto para o servidor local

Para transferir arquivos do host remoto para a máquina local, por exemplo, fazer backup dos logs do servidor remoto em produção localmente:

O comando rsync do exemplo, busca no IP “122.200.201.2” os logs do diretório “/var/log” e cria uma cópia na pasta local “/backup/server/logs”.

6. Excluir arquivos ou diretórios específicos da cópia

Muitas vezes, você não deseja copiar pastas temporárias ou arquivos específicos. Por exemplo, para ignorar os arquivos “fastcgi-php.conf” e “snakeoil.conf” da lista de arquivos copiados execute:

A opção “--exclude” instrui o rsync a ignorar arquivos ou diretórios especificados, podendo usar caracteres especiais do shell bash, como o “*” (asterisco), para representar vários arquivos.

7. Lista de pastas e arquivos excluídos da cópia

Quando a lista de exclusões for muito grande, colocá-la diretamente na linha de comando torna o processo confuso e propenso a erros. Para essa necessidade o rsync tem a opção “--exclude-from” seguido da localização do arquivo.

Para o exemplo, foi criado um arquivo chamado “ignorar.txt” com o seguinte:

Dentro do arquivo tem a lista do que está dentro da origem e deve ser ignorado, sendo um item por linha.

Em seguida é executado o comando rsync para criar uma cópia de “/var/log” para “/backup”, ignorando os arquivos e diretórios de “/var/log” especificados em “ignorar.txt”:

No exemplo, ao utilizar “--exclude-from”, o comando rsync lê o arquivo de texto “ignorar.txt” e ignora todas as pastas e arquivos listados linha por linha.

8. Copiar apenas a estrutura de diretórios

Já precisou duplicar a estrutura de diretórios sem precisar copiar os arquivos dessa estrutura ? O comando rsync resolve esse problema, com a opção “-f” para adicionar um filtro.

Este comando utiliza filtros avançados para incluir todas as pastas “+ */” incluindo a pasta raiz (app2) e rejeitar todos os arquivos “- *”, criando uma réplica dos diretórios.

9. Excluir arquivos da origem automaticamente após a transferência

Já precisou criar uma cópia de arquivos de um servidor remoto e ao fim apagar os arquivos do diretório de origem ? O rsync com a opção “--remove-source-files” faz isso.

Por exemplo, após copiar os arquivos de “/srv/app1/logs/antigos” para outro servidor (122.200.201.2), somente os arquivos são limpos da máquina local.

A opção “--remove-source-files” apaga os arquivos na origem logo após confirmar a transferência para o destino especificado.

10. Não substitua arquivos atualizados no destino

Se você precisa copiar arquivos de um diretório de origem, evitando que arquivos mais novos do diretório de destino sejam sobrescritos por uma versão mais antiga ou igual que esteja na origem, utilize a opção “-u” do rsync.

A opção “-u” (update) impede a gravação sobre arquivos que já existam no destino e que possuam uma data de modificação mais recente que o arquivo da origem, ou seja, somente copia se a origem for mais atual que o destino.

Evite erros ao usar o comando rsync

Um dos erros mais comuns é confundir a origem com o destino. Lembre-se: no rsync, a origem vem primeiro e o destino depois.

Outro problema frequente é não prestar atenção à barra “/” no final do diretório. “/origem/” significa conteúdo de origem, enquanto “/origem” faz com que o próprio diretório seja criado dentro do destino, se houver permissões.

Também tenha cuidado com “--delete”. Nunca utilize essa opção em produção sem antes testar com “--dry-run” do rsync, principalmente quando os dados forem importantes.

Por fim, em transferências remotas, verifique se o SSH funciona corretamente e se o usuário utilizado possui permissões suficientes para ler a origem e gravar no destino.

Conclusão

O comando rsync é uma ferramenta indispensável para quem busca replicação e/ou sincronização de arquivos no mesmo servidor ou entre servidores na rede.

Ao usar o rsync linux com opções como “-a”, “-z”, “--exclude” e “--delete”, é possível adaptar a transferência para diferentes necessidades.

Para quem está começando, recomendo praticar os exemplos simples, utilize “--dry-run” do rsync antes de operações importantes e só depois automatize suas rotinas.

Para aprender mais sobre o comando rsync recomendo a leitura da documentação do projeto.

Ficou com alguma dúvida sobre os exemplos ou tem alguma sugestão de uso do comando rsync ? Deixe seu comentário abaixo e participe da discussão!

Perguntas Frequentes (FAQ) sobre o comando rsync

O que acontece se a conexão de rede cair durante a transferência ?

O comando rsync interrompe o envio de dados. Ao executar o mesmo comando novamente utilizando a opção “-P” (ou --partial), a transferência será retomada exatamente do ponto em que parou.

Qual a diferença real entre usar rsync com e sem a barra no final do diretório ?

A barra ao final do diretório de origem (/origem/) instrui a ferramenta a copiar apenas o conteúdo interno do diretório. Sem a barra (/origem), a pasta de origem inteira é criada dentro do destino.

É possível preservar as ACLs e os atributos estendidos com o comando rsync ?

Sim. Para preservar as ACLs dos arquivos e diretórios copiados utilize a opção “-A” do rsync, já para manter os atributos estendidos use a opção “-X” do comando rsync.

O comando rsync é seguro para transferências através da rede ?

Sim. Por padrão, ao realizar conexões remotas, a ferramenta utiliza o túnel criptografado do SSH, garantindo a proteção e integridade dos dados durante todo o tráfego de rede.

O rsync consome muita memória RAM durante o processo ?

Em diretórios contendo milhões de arquivos pequenos, a ferramenta pode consumir uma quantidade razoável de memória para construir a lista inicial de arquivos. Para mitigar isso em versões modernas, utiliza-se a opção de varredura incremental habilitada por padrão.

Navegue por tópicos:

Foto de Edson Oliveira
Edson Oliveira

Especialista em Linux, trabalhando com TI tem experiência no gerenciamento, solução de problemas e suporte de servidores linux em ambientes corporativos.

Professor de cursos voltados a linux, tecnologias open source e certificações LPI. Possui as certificações LPIC-1, LPIC-2 e LPIC-3 (Mixed Environment).

Navegue por tópicos:

Você também pode gostar:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Valorizamos sua privacidade

Utilizamos cookies para aprimorar sua experiência de navegação, exibir anúncios ou conteúdo personalizado e analisar nosso tráfego. Ao clicar no botão “Aceitar todos”, você concorda com nosso uso de cookies.

Para mais informações leia nossa Política de Privacidade.