Rsync para Linux: sincronizar, copiar e fazer cópias de segurança de ficheiros
9 min de leitura - 24 de maio de 2025

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ção | O que faz |
|---|---|
-a | Modo de arquivo. Preserva permissões, propriedade, ligações simbólicas e carimbos de data/hora. Equivalente a -rlptgoD. |
-v | Verbose. Lista os ficheiros que estão a ser transferidos. |
-z | Comprimir durante a transferência. Útil em ligações lentas ou dispendiosas, menos útil em LAN ou para conteúdo já comprimido. |
-P | Combina --partial e --progress. Retoma transferências interrompidas, mostra o progresso em tempo real. |
--delete | Apaga ficheiros no destino que não existem na origem. Necessário para um espelho verdadeiro. |
--exclude | Ignora ficheiros que correspondam a um padrão. |
--exclude-from=FILE | Lê padrões de exclusão de um ficheiro. Mais simples do que encadear várias --exclude opções. |
--dry-run | Mostrar o que aconteceria sem transferir nada. |
--bwlimit=KBPS | Limitar o uso de largura de banda em kilobytes por segundo. Útil para backups executados durante o horário comercial. |
--checksum | Comparar ficheiros por checksum em vez de tamanho e data de modificação. Mais lento, mas deteta casos extremos. |
-e ssh | Utilize 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 /destinationUma 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:
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-hostUm 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>&1Torne-o executável com
chmod +x.Uma entrada no cron para o executar. Edite com
crontab -e:0 2 * * * /usr/local/bin/rsync-backup.shIsso 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
-apara o modo de arquivo,-zpara compressão,-Ppara retomada e progresso,--deletepara 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.

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