Backup Automático no Linux com Cron: Guia para Iniciantes
Aprenda a sintaxe do crontab, monte um script de backup com rsync ou tar e agende-o pra rodar sozinho, sem precisar lembrar de fazer backup manual nunca mais.
Direto ao ponto sobre backup automático no Linux com cron:
- O cron executa comandos/scripts em horários agendados, com sintaxe de 5 campos de tempo.
- Use rsync pra rotina diária (copia só o que mudou) ou tar pra gerar arquivo compactado único.
- Sempre use caminho absoluto no crontab e salve um log da execução.
- Erro clássico:
30 * * * *roda 1x no minuto 30, não "a cada 30 minutos" (o certo é*/30). - Siga a regra 3-2-1: 3 cópias, 2 tipos de mídia, 1 cópia fora do local físico.
- Introdução
- Resposta Direta
- O Que é o Cron, de Verdade
- Entendendo a Sintaxe do Crontab
- Criando um Script de Backup com Rsync e Tar
- Agendando o Script no Crontab
- Onde Salvar e Conferir os Logs
- Erros Comuns de Sintaxe do Cron
- A Regra 3-2-1 de Backup
- Alternativas ao Cron: Systemd Timers e Ferramentas Gráficas
- Como Testar se o Backup Está Funcionando de Verdade
- Glossário Rápido
- Perguntas Frequentes
🐧🕐 Backup Automático no Linux com Cron: Guia para Iniciantes
Olá, eu sou Ronaldo Cardoso! Se você já migrou pro Linux depois do nosso guia de qual distribuição escolher e já se acostumou com os comandos básicos de terminal, chegou a hora de aprender uma das tarefas mais úteis (e mais negligenciadas) de quem administra o próprio sistema: agendar backup automático. Ninguém lembra de fazer backup manual todo dia — mas um agendador de tarefas lembra, sempre, sem exceção. No Linux, essa ferramenta se chama cron, e existe desde os primórdios do Unix, ainda usada hoje em praticamente todo servidor e desktop Linux do planeta.
✅ Resposta Direta
- Cron é o agendador de tarefas nativo do Linux — roda comandos automaticamente em horários fixos, sem precisar de nenhum programa extra além do que já vem instalado na maioria das distros.
- Pra backup, crie um script simples em bash usando
rsync(recomendado pra rotina, copia só o que mudou) outar(bom pra gerar um arquivo compactado único, ex: antes de uma atualização grande). - Agende esse script no crontab (
crontab -e) pra rodar todo dia, de madrugada, quando o PC/servidor está ocioso. - Sempre salve um log da execução — sem isso você só descobre que o backup parou de funcionar quando já for tarde demais.
- Backup no mesmo disco físico não é backup de verdade — siga a regra 3-2-1 (explicada mais abaixo).
🧩 O Que é o Cron, de Verdade
O cron é um daemon (programa que roda em segundo plano, sempre ativo) responsável por executar comandos ou scripts em horários programados, sem precisar de nenhuma interação humana. Ele lê uma lista de tarefas chamada crontab ("cron table"), onde cada linha define um horário e o comando a ser executado naquele momento. Praticamente toda distro Linux (Ubuntu, Mint, Fedora, Debian) já vem com o cron instalado e ativo por padrão — não é preciso instalar nada extra na maioria dos casos.
Cada usuário do sistema tem sua própria crontab, editável com o comando crontab -e (abre um editor de texto, geralmente o nano). Também existe uma crontab do sistema (/etc/crontab) e uma pasta /etc/cron.d/, usadas geralmente por programas instalados que precisam agendar tarefas próprias — pra backup pessoal, a crontab do seu próprio usuário já é suficiente.
📐 Entendendo a Sintaxe do Crontab
A linha de uma tarefa no crontab segue sempre o mesmo formato de 5 campos de tempo, seguidos do comando:
minuto hora dia-do-mes mes dia-da-semana comando
- minuto: 0 a 59
- hora: 0 a 23
- dia-do-mês: 1 a 31
- mês: 1 a 12
- dia-da-semana: 0 a 7 (0 e 7 são domingo, 1 é segunda...)
O asterisco (*) em qualquer campo significa "todo/toda" — por exemplo, um asterisco no campo de dia-do-mês significa "todo dia do mês". Alguns exemplos práticos:
| Linha do crontab | Quando roda |
|---|---|
0 3 * * * /home/usuario/backup.sh | Todo dia, às 3h da manhã |
30 2 * * 0 /home/usuario/backup.sh | Toda semana, domingo às 2h30 |
0 */6 * * * /home/usuario/backup.sh | A cada 6 horas |
0 0 1 * * /home/usuario/backup.sh | Todo dia 1º de cada mês, à meia-noite |
*/15 * * * * /home/usuario/backup.sh | A cada 15 minutos |
Um recurso útil pra quem não quer decorar a sintaxe de cabeça é o site crontab.guru, que traduz qualquer expressão de cron em português simples ("a cada X, no dia Y") e ajuda a validar antes de salvar.
💻 Criando um Script de Backup com Rsync e Tar
Antes de agendar qualquer coisa no cron, crie um script simples que faça o backup — assim você testa ele isoladamente (rodando na mão) antes de confiar o agendamento automático a ele. Um exemplo básico usando rsync, ideal pra rotina diária porque copia só os arquivos que mudaram desde a última vez (muito mais rápido que copiar tudo de novo):
#!/bin/bash
# backup.sh - copia a pasta Documentos pro HD externo
ORIGEM="/home/usuario/Documentos"
DESTINO="/mnt/hd-externo/backup-documentos"
DATA=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$DATA] Iniciando backup..." >> /home/usuario/backup.log
rsync -av --delete "$ORIGEM/" "$DESTINO/" >> /home/usuario/backup.log 2>&1
echo "[$DATA] Backup concluido." >> /home/usuario/backup.log
Se você prefere gerar um arquivo único compactado (bom pra levar pra nuvem ou guardar versões datadas, em vez de só espelhar a pasta), use tar:
#!/bin/bash
# backup-tar.sh - gera um .tar.gz datado da pasta Documentos
ORIGEM="/home/usuario/Documentos"
DESTINO="/mnt/hd-externo/backups"
DATA=$(date '+%Y-%m-%d')
ARQUIVO="$DESTINO/documentos-$DATA.tar.gz"
tar -czf "$ARQUIVO" -C "$(dirname $ORIGEM)" "$(basename $ORIGEM)" >> /home/usuario/backup.log 2>&1
echo "[$(date)] Backup tar gerado: $ARQUIVO" >> /home/usuario/backup.log
Depois de criar o arquivo, dê permissão de execução: chmod +x backup.sh. Rode manualmente uma vez (./backup.sh) pra confirmar que funciona antes de agendar no cron — depurar um script já dentro do cron é bem mais difícil do que testar ele direto no terminal primeiro.

⏰ Agendando o Script no Crontab
- Abra o editor da crontab do seu usuário:
crontab -e(na primeira vez, ele pode perguntar qual editor de texto usar — nano é o mais simples pra quem está começando). - Adicione uma linha no final do arquivo, por exemplo, pra rodar todo dia às 3h da manhã:
0 3 * * * /home/usuario/backup.sh - Salve e saia (no nano: Ctrl+O pra salvar, Ctrl+X pra sair).
- Confirme que a tarefa foi salva com
crontab -l(lista as tarefas agendadas do usuário atual).
/home/usuario/backup.sh, nunca só ./backup.sh ou backup.sh) dentro do crontab. O cron não roda com o mesmo diretório atual que você usa no terminal, e um caminho relativo é uma das causas mais comuns de "a tarefa não roda e eu não sei por quê".📄 Onde Salvar e Conferir os Logs
Um erro comum de quem está começando é agendar o backup e nunca mais olhar se ele realmente está funcionando — até o dia em que precisa recuperar um arquivo e descobre que o backup parou de rodar há semanas. Sempre redirecione a saída do comando/script pra um arquivo de log, como já fizemos nos exemplos acima (>> /home/usuario/backup.log 2>&1 — o 2>&1 garante que erros também sejam salvos, não só a saída normal).
Vale também conferir os logs do próprio sistema (grep CRON /var/log/syslog em distros baseadas em Debian/Ubuntu, ou journalctl -u cron em distros com systemd) pra confirmar que o cron de fato disparou a tarefa no horário esperado — útil pra diferenciar "o cron não rodou" de "o cron rodou, mas o script deu erro".
🐛 Erros Comuns de Sintaxe do Cron
- Usar caminho relativo pro script ou pros arquivos dentro dele: o cron roda com um ambiente bem mais "limpo" que o seu terminal interativo — sempre use caminhos absolutos, começando com
/. - Confundir a ordem dos campos: é minuto-hora-dia-mês-dia_da_semana, nessa ordem exata. Trocar a ordem faz a tarefa rodar num horário completamente diferente do esperado.
- Esquecer o quinto campo (dia da semana) e deixar só 4 campos: o crontab exige exatamente 5 campos de tempo antes do comando — faltando um, a tarefa é rejeitada ou interpretada errado.
- Variáveis de ambiente diferentes: o cron não carrega o mesmo
PATH(lista de pastas onde o sistema procura comandos) que o seu terminal normal usa — se o script chama um programa por nome curto (ex:rsync) e ele não é encontrado, use o caminho completo (descubra comwhich rsync) dentro do script. - Não dar permissão de execução ao script (
chmod +x) antes de agendar. - Agendar para "30 * * * *" pensando que roda a cada 30 minutos: na verdade isso roda uma vez, no minuto 30 de cada hora. Pra "a cada 30 minutos" o certo é
*/30 * * * *.
🛡️ A Regra 3-2-1 de Backup
Agendar o cron pra copiar arquivos pra outra pasta do mesmo disco não é backup de verdade — se o disco falhar, você perde tudo, original e cópia juntos. A regra clássica de backup, usada tanto por profissionais de TI quanto recomendada pra uso doméstico, é a 3-2-1:
- 3 cópias dos dados (o original + 2 backups).
- 2 tipos de mídia diferentes (ex: SSD interno + HD externo, ou HD externo + nuvem).
- 1 cópia fora do local físico (ex: na nuvem, ou num HD guardado em outro endereço) — protege contra incêndio, roubo, enchente.
Se você já tem um HD externo dedicado a backup, também vale considerar montar algo mais robusto no futuro, como explicamos no guia de como montar um NAS caseiro barato pra backup automático de fotos e documentos — o cron explicado aqui pode, inclusive, ser a mesma ferramenta usada pra agendar a sincronização entre o PC e o NAS.

🔄 Alternativas ao Cron: Systemd Timers e Ferramentas Gráficas
Em distros modernas baseadas em systemd (Ubuntu, Fedora, Mint recente), existe uma alternativa nativa chamada systemd timers — funciona de forma parecida ao cron, mas com mais recursos (como rodar a tarefa mesmo que o PC estivesse desligado no horário programado, recuperando automaticamente na próxima ligada) e log integrado ao journalctl por padrão. É mais complexo de configurar (exige 2 arquivos: um .service e um .timer), então pra quem está começando, o cron continua sendo a porta de entrada mais simples.
Se preferir uma interface gráfica em vez de editar arquivos de texto, ferramentas como Déjà Dup (já vem instalado por padrão em várias distros baseadas em GNOME/Ubuntu) ou Timeshift (focado em "pontos de restauração" do sistema inteiro, parecido com o que existe no Windows) oferecem agendamento de backup com poucos cliques, sem precisar tocar no terminal — uma boa opção pra quem só quer o resultado, sem aprender a sintaxe do cron.
🧪 Como Testar se o Backup Está Funcionando de Verdade
- Depois de agendar, espere o próximo horário programado (ou agende temporariamente pra "dentro de 2 minutos" só pra testar, e depois ajuste pro horário definitivo).
- Confira o arquivo de log (
cat /home/usuario/backup.log) pra ver se apareceu a mensagem de conclusão. - Verifique se os arquivos realmente aparecem no destino (
ls -la /mnt/hd-externo/backup-documentos). - O teste mais importante de todos: simule uma restauração de verdade — apague (ou renomeie) um arquivo de teste no original e confirme que a versão do backup consegue recuperá-lo. Um backup que nunca foi testado pra restauração não é garantia de nada.
📖 Glossário Rápido
- Cron: daemon (programa em segundo plano) do Linux que executa comandos em horários agendados.
- Crontab: arquivo de configuração onde ficam listadas as tarefas agendadas do cron.
- Rsync: ferramenta de linha de comando que copia/sincroniza arquivos, copiando só o que mudou desde a última execução.
- Tar: ferramenta que agrupa (e opcionalmente compacta) vários arquivos num único arquivo, muito usada pra backup em formato "pacote único".
- Daemon: programa que roda continuamente em segundo plano no sistema, sem interface visível.
- Systemd timer: alternativa moderna ao cron, nativa de distros com systemd, com recursos extras como recuperação de tarefa perdida.
- Regra 3-2-1: princípio de backup com 3 cópias, em 2 tipos de mídia diferentes, sendo 1 fora do local físico.
- PATH: variável de ambiente que lista as pastas onde o sistema procura por comandos executáveis pelo nome.
FAQ
O cron já vem instalado em toda distro Linux?
Na grande maioria sim — Ubuntu, Mint, Fedora e Debian já trazem o cron instalado e ativo por padrão, sem precisar de instalação extra na maioria dos casos.
Qual a diferença entre usar rsync e tar pra backup?
O rsync copia só os arquivos que mudaram desde a última execução, sendo mais rápido pra rotina diária. O tar agrupa e compacta tudo num único arquivo, sendo útil pra criar versões datadas ou levar o backup pra outro lugar (nuvem, outro disco).
Por que minha tarefa no crontab não está rodando?
As causas mais comuns são: caminho relativo em vez de absoluto, falta de permissão de execução no script (chmod +x), ou o script chamar um programa que não está no PATH restrito do cron. Sempre use caminhos completos dentro do script e no crontab.
Como faço pra rodar uma tarefa a cada 15 minutos no cron?
Use a sintaxe */15 no campo de minuto: */15 * * * * /caminho/script.sh. O asterisco com barra significa "a cada X unidades" daquele campo.
Backup no mesmo disco do PC já é suficiente?
Não é considerado backup seguro. A regra 3-2-1 recomenda pelo menos 2 tipos de mídia diferentes e uma cópia fora do local físico, protegendo contra falha de disco, incêndio ou roubo.
Existe alternativa ao cron mais moderna?
Sim, os systemd timers, nativos em distros com systemd, oferecem recursos extras como recuperar automaticamente uma tarefa perdida enquanto o PC estava desligado, mas exigem configuração um pouco mais complexa que o cron.
Como sei se meu backup automático está funcionando de verdade?
Confira o arquivo de log da execução, verifique se os arquivos aparecem no destino, e faça periodicamente um teste real de restauração — apagar um arquivo de teste no original e recuperá-lo a partir do backup.
Preciso saber programar para usar o cron?
Não é necessário conhecimento avançado. Um script de backup básico com rsync ou tar tem poucas linhas, e a sintaxe do crontab, apesar de parecer confusa no início, segue um padrão simples de 5 campos de tempo.
🎮 Que tal testar o que você aprendeu?
Assim que você escolher uma resposta, ela trava — só reabrindo a página pra tentar de novo.
1. Quantos campos de tempo tem uma linha do crontab antes do comando?
2. Qual ferramenta copia só os arquivos que mudaram desde a última execução?
3. Por que sempre usar caminho absoluto dentro de um script agendado no cron?
4. O que a regra 3-2-1 de backup recomenda?
5. Qual comando lista as tarefas já agendadas na crontab do usuário atual?
Esse conteúdo ajudou você?
Compartilha com alguém que também vai curtir — é rapidinho e ajuda muito o nosso trabalho a chegar em mais gente.
Conhecimento só tem valor quando compartilhado.
Manter essa estrutura de laboratórios funcionando e produzir conteúdos de engenharia de forma totalmente gratuita e acessível exige tempo e dedicação diária à bancada. Esse guia salvou os seus arquivos? Você pode contribuir diretamente para manter o nosso trabalho independente forte. Apoie doando qualquer valor!
Quer apoiar a nossa bancada independente?
[email protected]