Rsync para Linux: sincronizar, copiar e fazer cópias de segurança de ficheiros

9 min de leitura - 24 de maio de 2025

hero section cover
Índice
  • Rsync para Linux: como sincronizar, copiar e fazer cópias de segurança de ficheiros como um profissional
  • O que é o rsync?
  • Porquê usar o rsync em vez do cp ou do scp
  • Opções comuns do rsync
  • Exemplos de Rsync
  • Automatizar o rsync com o cron
  • Considerações finais
Partilhar

Como utilizar o rsync no Linux para transferências incrementais, sincronizações remotas através de SSH, cópias de segurança agendadas com o cron e como evitar a armadilha da barra de arrastamento.

Rsync para Linux: como sincronizar, copiar e fazer cópias de segurança de ficheiros como um profissional

O Rsync é a ferramenta padrão para copiar ficheiros entre sistemas Linux. É mais rápido do que cp ou scp para qualquer coisa que execute mais de uma vez, recupera de quedas de rede e transfere apenas o que realmente mudou. Esta publicação aborda o que o rsync faz, os sinalizadores que vale a pena conhecer, os exemplos a que recorrerá com mais frequência e como agendá-lo com o cron.


 

O que é o rsync?

O rsync é um utilitário de linha de comandos para copiar e sincronizar ficheiros entre locais. Funciona localmente, através de SSH para um anfitrião remoto ou em relação a um daemon rsync. A principal diferença em relação a cp ou scp: o rsync compara primeiro a origem e o destino e, em seguida, transfere apenas as diferenças. Num diretório de 100 GB onde 200 MB foram alterados, o rsync transfere 200 MB. cp e scp movem tudo.

Vem incluído em todas as distribuições Linux modernas. Se não estiver presente: apt install rsync ou dnf install rsync.

Porquê usar o rsync em vez do cp ou do scp

Três razões pelas quais o rsync é a melhor opção para qualquer cópia não trivial:

  • É incremental. As execuções subsequentes transferem apenas os bytes alterados, não ficheiros inteiros. Para cópias de segurança e espelhos, isso transforma um trabalho que demoraria toda a noite numa tarefa de poucos minutos.
  • Resiste a interrupções. Com --partial, um ficheiro de 50 GB parcialmente transferido retoma a partir do ponto onde parou, em vez de recomeçar do início.
  • Preserva metadados. O modo de arquivo (-a) mantém permissões, propriedade, ligações simbólicas e carimbos de data/hora. É essencial para ficheiros de sistema, árvores de código-fonte e qualquer coisa em que os atributos sejam importantes.

Para cópias pontuais de ficheiros pequenos, scp é suficiente. Para qualquer coisa que se repita, que consuma muita largura de banda ou que possa precisar de ser retomada, use o rsync.

Opções comuns do rsync

As opções que irá realmente utilizar:

OpçãoO que faz
-aModo de arquivo. Preserva permissões, propriedade, ligações simbólicas e carimbos de data/hora. Equivalente a -rlptgoD.
-vVerbose. Lista os ficheiros que estão a ser transferidos.
-zComprimir durante a transferência. Útil em ligações lentas ou dispendiosas, menos útil em LAN ou para conteúdo já comprimido.
-PCombina --partial e --progress. Retoma transferências interrompidas, mostra o progresso em tempo real.
--deleteApaga ficheiros no destino que não existem na origem. Necessário para um espelho verdadeiro.
--excludeIgnora ficheiros que correspondam a um padrão.
--exclude-from=FILELê padrões de exclusão de um ficheiro. Mais simples do que encadear várias --exclude opções.
--dry-runMostrar o que aconteceria sem transferir nada.
--bwlimit=KBPSLimitar o uso de largura de banda em kilobytes por segundo. Útil para backups executados durante o horário comercial.
--checksumComparar ficheiros por checksum em vez de tamanho e data de modificação. Mais lento, mas deteta casos extremos.
-e sshUtilize SSH para a transferência. Implícito na maioria das instalações modernas.

O comportamento padrão compara o tamanho do ficheiro e a data de modificação, o que é rápido e quase sempre correto. Mude para --checksum se um processo de implementação reescrever os carimbos de data/hora sem alterar o conteúdo, ou se suspeitar de corrupção ao nível do bit.

Exemplos de Rsync

Copiar um diretório localmente:

rsync -av /source/path/ /destination/path/

Sincronizar com um servidor remoto via SSH:

rsync -avz /local/dir/ user@remote:/remote/dir/

Fazer um teste antes de realizar qualquer ação destrutiva:

rsync -avz --dry-run /local/dir/ user@remote:/dir/

Espelhar dois diretórios, incluindo eliminações no destino:

rsync -av --delete /source/ /destination/

Excluir logs e um diretório temporário:

rsync -av --exclude='*.log' --exclude='tmp/' /src/ /dest/

Retomar uma transferência de grandes dimensões que possa ser interrompida:

rsync -avP user@remote:/backups/big.img /local/

Se a sessão SSH cair, execute o mesmo comando novamente. Com -P, o rsync retoma de onde parou, em vez de começar do zero.

Limite a largura de banda a 50 MB/s para um backup fora do horário de pico, para que não sature a ligação de subida:

rsync -avz --bwlimit=50000 /local/dir/ user@remote:/dir/

A armadilha da barra final

O erro mais comum no rsync:

rsync -av /source  /destination/    # copies the 'source' directory INTO /destination
rsync -av /source/ /destination/    # copies the CONTENTS of /source into /destination

Uma barra final na fonte significa «tudo dentro deste diretório». A ausência de barra final significa «este diretório em si». Execute com --dry-run primeiro se não tiver a certeza, especialmente quando combinado com --delete.

Automatizar o rsync com o cron

Para backups agendados, são necessárias três coisas:

  1. Acesso SSH sem palavra-passe ao destino. As tarefas cron não podem digitar palavras-passe. Gerar uma chave e copiá-la para o host de backup:

    ssh-keygen -t ed25519
    ssh-copy-id user@backup-host
  2. Um script, não uma linha única no crontab. Mais fácil de testar, mais fácil de registar:

    #!/bin/bash
    LOG=/var/log/rsync-backup.log
    rsync -az --delete /etc/ user@backup:/backups/$(hostname)/etc/ >> "$LOG" 2>&1

    Torne-o executável com chmod +x.

  3. Uma entrada no cron para o executar. Edite com crontab -e:

    0 2 * * * /usr/local/bin/rsync-backup.sh

    Isso executa o script todas as noites às 02:00.

Duas melhorias que vale a pena fazer em produção: envolva o script em flock para que uma tarefa de longa duração não se sobreponha à execução da noite seguinte, e canalize a saída através de logger para que as falhas sejam registadas no diário do sistema, onde o sistema de monitorização as pode detetar.

Considerações finais

O rsync é uma das poucas ferramentas Linux em que o tempo gasto a aprender os sinalizadores compensa quase imediatamente. Os pontos principais:

  • As transferências incrementais e o suporte à retomada fazem do rsync a escolha certa para qualquer coisa que execute mais de uma vez
  • -a para o modo de arquivo, -z para compressão, -P para retomada e progresso, --delete para espelhos verdadeiros
  • Preste atenção à barra final no caminho de origem, especialmente com --delete
  • Combine-o com o cron e chaves SSH para backups agendados sem intervenção manual

Para tarefas de backup de grande porte que transferem dados entre instalações, executar o rsync num VPS com largura de banda ilimitada significa que as janelas de backup não são limitadas por restrições de transferência.

Blogue

Em destaque esta semana

Mais artigos
Fadiga ocular digital: Como proteger a sua visão num mundo dominado pelos ecrãs

Fadiga ocular digital: Como proteger a sua visão num mundo dominado pelos ecrãs

Passa o dia inteiro a olhar para ecrãs? Saiba como reduzir a fadiga ocular digital com técnicas e ferramentas comprovadas. Este guia é essencial para trabalhadores remotos, programadores e qualquer pessoa que trabalhe na área da tecnologia.

4 min de leitura - 21 de maio de 2025

Por que é importante ter um VPS potente e sem limites de tráfego

8 min de leitura - 9 de maio de 2025

Mais artigos