Em ambientes Linux, manter cópias atualizadas dos seus dados é essencial para garantir segurança e integridade das informações. Ferramentas como rsync, SSHFS e o agendador cron permitem criar rotinas de backup e sincronização de forma eficiente, automatizada e segura. Este artigo apresenta conceitos básicos e exemplos práticos para iniciantes.
1. Rsync Avançado
O rsync é uma das ferramentas mais poderosas para sincronizar diretórios localmente ou via rede. Ele transfere apenas as partes dos arquivos que mudaram, economizando tempo e banda.
1.1 Principais opções
-a
(archive): habilita recursão, preserva permissões, data de modificação, links simbólicos, etc.-v
(verbose): modo detalhado.-z
(compress): comprime dados em trânsito.-h
(human-readable): tamanho de arquivos em formato legível (KB, MB).--delete
: remove no destino arquivos que foram excluídos na origem.--exclude
/--include
: define padrões para ignorar ou incluir certos arquivos.
1.2 Exemplo de comando
rsync -avzh --delete \
--exclude='*.tmp' \
/home/usuario/Documentos/ \
backup@servidor:/mnt/backups/documentos/
Neste exemplo:
- Faz backup de Documentos/ para um servidor remoto.
- Exclui arquivos com extensão
.tmp
. - Remove do destino arquivos apagados na origem.
2. Montagens Remotas via SSHFS
O SSHFS permite montar um diretório remoto via SSH como se fosse local, facilitando operações de leitura e escrita transparently.
2.1 Instalação
No Debian/Ubuntu:
sudo apt update
sudo apt install sshfs
2.2 Uso básico
- Crie um ponto de montagem:
mkdir -p ~/mnt/servidor_backup
Monte o diretório remoto:
sshfs usuario@servidor:/caminho/remoto ~/mnt/servidor_backup
Ao terminar, desmonte:
fusermount -u ~/mnt/servidor_backup
2.3 Automação via /etc/fstab
Para montar automaticamente na inicialização, adicione ao /etc/fstab
:
usuario@servidor:/caminho/remoto /home/usuario/mnt/servidor_backup fuse.sshfs defaults,_netdev,allow_other,reconnect,IdentityFile=/home/usuario/.ssh/id_rsa 0 0
_netdev
: aguarda rede estar disponível.
allow_other
: permite acesso a outros usuários locais.
reconnect
: tenta reconectar em caso de queda.
3. Rotinas com Cron
O cron é o agendador padrão do Linux, ideal para executar scripts em horários regulares.
3.1 Editando o crontab
Abra o crontab do seu usuário:
crontab -e
A sintaxe de cada linha é:
* * * * * comando
│ │ │ │ │
│ │ │ │ └─ dia da semana (0–7, sendo 0 e 7 domingo)
│ │ │ └─── mês (1–12)
│ │ └───── dia do mês (1–31)
│ └─────── hora (0–23)
└───────── minuto (0–59)
3.2 Exemplo de rotina diária de backup
Supondo um script /home/usuario/scripts/backup.sh
que executa rsync:
0 2 * * * /home/usuario/scripts/backup.sh >> /home/usuario/logs/backup.log 2>&1
- Roda todo dia às 02:00.
- Redireciona saída padrão e erros para um arquivo de log.
3.3 Exemplo de backup.sh
#!/bin/bash
# Script de backup
ORIGEM="/home/usuario/Documentos/"
DESTINO="backup@servidor:/mnt/backups/documentos/"
LOG="/home/usuario/logs/backup-$(date +%F).log"
rsync -avzh --delete \
--exclude='*.tmp' \
"$ORIGEM" "$DESTINO" \
&>> "$LOG"
# Envia notificação por e-mail em caso de erro
if [ $? -ne 0 ]; then
mail -s "Erro no backup diário" usuario@dominio.com < "$LOG"
fi
- Use
$(date +%F)
para nomear logs por data (ex.:backup-2025-05-03.log
). - Testa código de saída (
$?
) para detectar falhas e notificar.
4. Boas Práticas
- Chaves SSH sem senha com
ssh-keygen
essh-copy-id
para automatizar sem digitar senha. - Testes manuais: execute scripts manualmente antes de automatizar no cron.
- Logs rotativos: use
logrotate
para evitar acúmulo de arquivos de log. - Monitoramento: configure alertas por e-mail ou ferramentas como Zabbix para falhas.
- Permissões: scripts e diretórios de backup devem ter permissões restritas (ex.:
chmod 700
).
Conclusão
Com rsync avançado, SSHFS e cron, é possível montar um sistema de backup robusto e automatizado em poucos passos. Comece criando scripts simples, teste manualmente e então agende via cron. Assim, você garante que seus dados estarão sempre sincronizados e disponíveis para restauração em caso de falhas.