Mais recentes

Conteúdo técnico, ferramentas e experiências práticas da IceNex.

segunda-feira, 12 de outubro de 2026

Backup simples com rsync


Como copiar apenas o que mudou, simular antes de executar e deixar o backup rodando sozinho todos os dias.

Fala pessoal, tudo bem?

Hoje o post é rápido e muito útil. Seja no laboratório ou em um servidor de verdade, mais cedo ou mais tarde vamos precisar copiar arquivos de um lugar para outro — ou simplesmente garantir que temos uma cópia de segurança. Para isso, existe uma ferramenta simples e poderosa que já vem na maioria das distribuições Linux: o rsync.

A grande vantagem dele sobre um simples cp é que ele copia apenas o que mudou. Na primeira execução ele copia tudo, nas próximas só envia as diferenças. Isso economiza tempo e banda — e, em backups recorrentes, faz uma diferença enorme.

1. O comando básico

Se por algum motivo ele não estiver instalado:

sudo apt install rsync -y

Agora, o comando que você mais vai usar:

rsync -avh --progress /home/usuario/projetos/ /backup/projetos/
  • -a (archive) — copia tudo de forma recursiva e preserva permissões, donos, datas e links simbólicos. É o modo ideal para backup.
  • -v (verbose) — mostra o que está sendo copiado.
  • -h (human-readable) — exibe os tamanhos em formato legível (KB, MB, GB).
  • --progress — mostra o andamento de cada arquivo.

2. Cuidado com a barra no final

Este é o detalhe que mais confunde quem está começando. A barra (/) no final do caminho de origem muda o resultado:

# COM barra: copia o CONTEÚDO da pasta

rsync -avh /home/usuario/projetos/ /backup/

# SEM barra: copia a PASTA inteira (cria /backup/projetos)

rsync -avh /home/usuario/projetos /backup/

Na dúvida, use o teste do próximo passo antes de executar de verdade.

3. Simular antes de executar

Antes de rodar um backup importante, podemos pedir ao rsync para apenas simular, mostrando o que ele faria sem alterar nada:

rsync -avh --dry-run /home/usuario/projetos/ /backup/projetos/

O --dry-run (ou apenas -n) é o seu seguro de vida. Fica a dica de sempre usá-lo quando estiver testando um comando novo.

💡 Dica: crie o hábito de rodar --dry-run antes de qualquer rsync com --delete. É a diferença entre um backup tranquilo e um susto.

4. Enviando para outro servidor

O rsync funciona por cima do SSH, então copiar para outra máquina é tão simples quanto copiar localmente. Se você já tem as chaves e os atalhos do SSH configurados, tudo fica ainda mais fácil.

Primeiro, vamos garantir que a pasta de destino existe no servidor (o rsync cria apenas o último nível da pasta):

ssh kub-node1 "mkdir -p ~/backup"

E agora o envio:

rsync -avh --progress /home/usuario/projetos/ kub-node1:~/backup/projetos/

O formato é servidor:caminho. Para restaurar, basta inverter origem e destino:

rsync -avh kub-node1:~/backup/projetos/ /home/usuario/projetos/

5. Espelhando e ignorando arquivos

Duas opções muito usadas em backup:

  • --delete — apaga no destino o que foi apagado na origem, deixando as duas pastas idênticas (espelho). Sem ele, arquivos removidos na origem continuam no backup.
  • --exclude — ignora arquivos ou pastas que você não quer copiar.
rsync -avh --delete --exclude='*.log' --exclude='node_modules' /home/usuario/projetos/ kub-node1:~/backup/projetos/
⚠️ Atenção: o --delete é perigoso se você inverter origem e destino ou errar o caminho, porque ele apaga arquivos de verdade. Teste sempre com --dry-run antes.

6. Automatizando com script e cron

Backup só é útil se for feito sempre. Vamos criar um script simples chamado backup.sh:

#!/bin/bash

ORIGEM="/home/usuario/projetos/"

DESTINO="kub-node1:~/backup/projetos/"

LOG="/home/usuario/backup-rsync.log"

echo "=== Backup iniciado em $(date) ===" >> "$LOG"

rsync -avh --delete --exclude='*.log' "$ORIGEM" "$DESTINO" >> "$LOG" 2>&1

echo "=== Finalizado em $(date) ===" >> "$LOG"

Dê permissão de execução e teste manualmente:

chmod +x /home/usuario/backup.sh

/home/usuario/backup.sh

Funcionou? Agora vamos agendar com o cron:

crontab -e

Adicione a linha abaixo no final do arquivo:

0 2 * * * /home/usuario/backup.sh

Isso executa o backup todos os dias às 2h da manhã. Os cinco campos são, nesta ordem: minuto, hora, dia do mês, mês e dia da semana.

⚠️ Importante: o cron roda sem você estar logado, então ele não consegue digitar senha. Para o backup remoto funcionar, o acesso SSH precisa estar sem senha, usando a chave que configuramos no post anterior. Como o cron também não tem acesso ao ssh-agent, a chave usada aqui precisa ser uma sem passphrase. Neste caso, vale criar uma chave exclusiva para o backup e restringir o acesso dela.

Para conferir se está rodando, é só olhar o log:

tail -f /home/usuario/backup-rsync.log

Um lembrete sobre backup

Copiar para outra pasta no mesmo disco não é backup de verdade. Se o disco morrer, você perde tudo junto. O ideal é sempre ter uma cópia em outra máquina ou, melhor ainda, em outro local. Uma regra clássica é a 3-2-1: 3 cópias dos dados, em 2 tipos de mídia diferentes, com 1 delas fora do local principal.

💡 Regra 3-2-1: três cópias, duas mídias, um local externo. Se você só tem a cópia local, ainda não tem backup — tem uma esperança.

Considerações Finais

Hoje vimos como usar o rsync para copiar só o que mudou, simular antes de executar, enviar e restaurar arquivos por SSH e automatizar tudo com um script e o cron. Com poucos comandos você já tem um backup funcional e fácil de manter.

O rsync é uma daquelas ferramentas que parecem simples na superfície e vão ficando cada vez mais úteis conforme você aprofunda. Vale ler a man rsync com calma — tem opções para coisas que você nem imaginava que precisava.

Abs e até a próxima.

Nenhum comentário:

Postar um comentário