DIA 09: O Sentinela do Backup

LinuxBeginner
Pratique Agora

Introdução

Você é o "Sentinela do Backup", o recém-nomeado administrador de sistemas de uma promissora startup de tecnologia. Recentemente, um pequeno surto de energia causou uma falha no servidor, corrompendo momentaneamente um arquivo de log não crítico. Embora nenhum dado importante tenha sido perdido desta vez, foi um sério sinal de alerta.

O CTO encarregou você pessoalmente de uma missão crítica: implementar uma estratégia robusta de backup e recuperação para o servidor principal da aplicação da empresa, e fazer isso hoje. A integridade dos dados dos usuários, as configurações da aplicação e os logs vitais estão agora em suas mãos.

Este é o seu momento de brilhar. Ao criar, verificar e automatizar com sucesso o processo de backup, você não apenas protegerá o ativo mais valioso da empresa — seus dados — mas também se provará como um guardião indispensável de sua infraestrutura digital. O sistema está ativo, o tempo está correndo. Vamos ao trabalho.

Aviso Importante
Os próximos desafios podem exceder o escopo do curso Quick Start with Linux.
Se você encontrar dificuldades durante o desafio:
  1. Pule temporariamente o desafio e continue com os Laboratórios Guiados subsequentes na trilha de aprendizado Linux.
  2. Discuta com o Labby ou visualize a solução.

Identificando Dados Críticos para Backup

Antes de criar um backup, sua primeira tarefa é identificar quais dados são críticos. Um backup completo do sistema costuma ser inviável. Para o nosso servidor de aplicação, os ativos mais importantes estão nos diretórios data, config e logs.

Para tornar nosso processo de backup limpo e gerenciável, criaremos um arquivo que lista todos os diretórios que desejamos salvar. Esta lista servirá como um manifesto para o nosso script de backup.

Tarefas

  • Crie um arquivo chamado backup-list.txt no diretório ~/project.
  • Este arquivo deve conter os caminhos relativos para os três diretórios críticos, com cada caminho em uma nova linha.

Requisitos

  • O arquivo deve se chamar exatamente backup-list.txt.
  • O arquivo deve estar localizado no diretório ~/project.
  • O arquivo deve conter as três entradas a seguir, cada uma em sua própria linha:
    • data
    • config
    • logs

Exemplos

Após criar o arquivo backup-list.txt, seu diretório de projeto deve conter o novo arquivo de manifesto ao lado dos diretórios existentes:

~/project/
├── backup-list.txt
├── backups/
├── config/
├── data/
└── logs/

Ao executar cat backup-list.txt, você deverá ver os três diretórios críticos listados:

data
config
logs

Dicas

  • Você pode usar um editor de texto como o nano para criar e editar o arquivo.
  • Alternativamente, você pode usar o comando echo com redirecionamento de saída (>) para criar o arquivo e >> para anexar conteúdo a ele.

Criando um Arquivo de Backup do Sistema

Com a lista de diretórios críticos pronta, é hora de criar o arquivo de backup. A ferramenta padrão do Linux para este trabalho é o tar (Tape Archive). Ele pode agrupar vários arquivos e diretórios em um único arquivo. Também compactaremos o arquivo para economizar espaço usando gzip.

Tarefas

  • Use o comando tar para criar um arquivo de backup compactado.
  • O arquivo deve se chamar system-backup.tar.gz.
  • O arquivo deve ser colocado no diretório ~/project/backups/.
  • O conteúdo do arquivo deve ser determinado pelo arquivo backup-list.txt que você criou na etapa anterior.

Requisitos

  • O arquivo final deve estar localizado em ~/project/backups/system-backup.tar.gz.
  • Você deve usar o comando tar.
  • Você deve usar a opção -T com o tar para ler a lista de arquivos/diretórios do backup-list.txt.
  • O arquivo deve ser compactado com gzip (use a opção z no tar).

Exemplos

Após criar o arquivo de backup, seu diretório backups deve conter o novo arquivo compactado:

~/project/backups/
└── system-backup.tar.gz

Ao executar ls -lh ~/project/backups/, você deverá ver o arquivo de backup com seu tamanho:

-rw-rw-r-- 1 labex labex 1.2K Sep 11 15:08 system-backup.tar.gz

Dicas

  • As opções comuns para criar um arquivo compactado com tar são c (create/criar), z (compactar com gzip), v (verbose/detalhado, para ver o progresso) e f (file/especificar nome do arquivo).
  • A opção -T diz ao tar para obter os nomes dos arquivos a serem arquivados a partir do arquivo que vem a seguir, em vez da linha de comando.
  • A estrutura do comando será algo como tar -czvf [nome_do_arquivo] -T [arquivo_lista].

Verificando a Integridade do Backup

Um backup é inútil se estiver corrompido ou incompleto. Um passo crucial em qualquer estratégia de backup é a verificação. Você deve garantir que o arquivo criado contenha todos os arquivos pretendidos e seja legível.

Tarefas

  • Use o comando tar para listar o conteúdo do arquivo system-backup.tar.gz sem extraí-lo.
  • Redirecione a saída deste comando para um novo arquivo chamado backup-contents.txt no diretório ~/project.

Requisitos

  • Você deve criar um arquivo chamado backup-contents.txt em ~/project.
  • Este arquivo deve conter a lista de todos os arquivos e diretórios armazenados dentro de system-backup.tar.gz.
  • Não extraia os arquivos; apenas liste-os.

Exemplos

Após criar o arquivo de verificação, seu diretório de projeto deve conter o novo arquivo backup-contents.txt:

~/project/
├── backup-contents.txt
├── backup-list.txt
├── backups/
├── config/
├── data/
└── logs/

Ao executar cat backup-contents.txt, você deverá ver uma listagem detalhada de todos os arquivos no backup:

drwxrwxr-x labex/labex       0 2025-09-11 15:08 data/
-rw-rw-r-- labex/labex      46 2025-09-11 15:08 data/transactions.csv
drwxrwxr-x labex/labex       0 2025-09-11 15:08 config/
-rw-rw-r-- labex/labex      72 2025-09-11 15:08 config/app.conf
drwxrwxr-x labex/labex       0 2025-09-11 15:08 logs/
-rw-rw-r-- labex/labex      49 2025-09-11 15:08 logs/app.log

Dicas

  • O comando tar possui uma opção para listar (t) o conteúdo de um arquivo.
  • Combine a opção t com z (para gzip), v (para uma lista detalhada) e f (para especificar o arquivo).
  • Use o operador de redirecionamento de saída > para salvar a saída do comando em um arquivo.

Restaurando Arquivos de um Backup

O desastre aconteceu! Um desenvolvedor júnior, ao tentar liberar espaço, excluiu acidentalmente o arquivo de configuração principal da aplicação, app.conf. A aplicação está fora do ar. Cabe a você, o Sentinela do Backup, restaurar este arquivo crítico do seu backup e salvar o dia.

Tarefas

  1. Primeiro, simule o acidente excluindo o arquivo config/app.conf.
  2. Em seguida, use o comando tar para restaurar apenas o arquivo config/app.conf do seu arquivo system-backup.tar.gz. O arquivo deve ser restaurado em sua localização original.

Requisitos

  • O arquivo ~/project/config/app.conf deve estar presente após você completar a tarefa.
  • Você deve extrair apenas o arquivo individual config/app.conf, não o backup inteiro.

Exemplos

Após restaurar o arquivo app.conf, seu diretório config deve conter o arquivo recuperado:

~/project/config/
├── app.conf
└── ...

Ao executar ls -l ~/project/config/app.conf, você deverá ver o arquivo restaurado:

-rw-rw-r-- 1 labex labex 72 Sep 11 15:08 /home/labex/project/config/app.conf

Você pode verificar se o conteúdo do arquivo está correto checando se ele contém as configurações esperadas:

## Isso deve mostrar as configurações de banco de dados e chave de API
cat ~/project/config/app.conf

Dicas

  • O comando rm é usado para excluir arquivos.
  • O comando tar usa a opção x para extrair arquivos.
  • Para extrair um arquivo específico, você pode adicionar o caminho dele (como aparece no backup) ao final do comando tar -x.
  • O caminho completo para o arquivo dentro do backup é config/app.conf.

Agendando Tarefas de Backup Automatizadas

Você salvou o dia, mas o trabalho de um herói nunca termina. Confiar em backups manuais é arriscado. O passo final é automatizar o processo para que os backups sejam criados regularmente sem qualquer intervenção humana. Para isso, usaremos o cron, o agendador de tarefas padrão do Linux.

Tarefas

  • Crie uma tarefa cron que execute automaticamente um comando de backup.
  • A tarefa deve ser executada a cada minuto (para fins deste desafio).
  • O comando deve criar um novo arquivo tar compactado dentro do diretório ~/project/backups/.
  • Para evitar sobreposição, cada novo arquivo de backup deve ter um nome exclusivo que inclua um carimbo de data/hora (ex: backup-2023-10-27_15-30-00.tar.gz).

Requisitos

  • Você deve usar crontab -e para editar suas tarefas cron.
  • O agendamento do cron deve ser * * * * * para rodar a cada minuto.
  • O comando de backup dentro da tarefa cron deve usar caminhos absolutos para o diretório de saída e os diretórios de origem (ex: /home/labex/project/backups).
  • O nome do arquivo de backup deve incluir um carimbo de data/hora.

Exemplos

Após configurar a tarefa cron, você pode verificar se está funcionando checando seu crontab e esperando que os backups automáticos apareçam. Ao executar crontab -l, você deverá ver sua nova tarefa de backup:

## Exemplo de saída (seu comando exato pode variar)
* * * * * tar -czf /home/labex/project/backups/backup-$(date +\%Y-\%m-\%d_\%H-\%M-\%S).tar.gz -C /home/labex/project data config logs

Após um minuto ou dois, seu diretório backups deve começar a mostrar arquivos de backup com carimbo de data/hora:

~/project/backups/
├── backup-2025-09-11_15-30-00.tar.gz
├── backup-2025-09-11_15-31-00.tar.gz
├── backup-2025-09-11_15-32-00.tar.gz
└── system-backup.tar.gz

Dicas

  • Execute crontab -e para abrir o editor de tarefas cron. Pode ser solicitado que você selecione um editor; o nano é uma boa escolha.
  • O formato para uma tarefa cron é: [minuto] [hora] [dia_do_mês] [mês] [dia_da_semana] [comando]. * * * * * significa cada minuto de cada hora de cada dia.
  • Você pode usar o comando date para gerar um carimbo de data/hora. Por exemplo, date +%Y-%m-%d_%H-%M-%S produzirá um formato como 2023-10-27_15-30-00.
  • Para usar a saída de um comando dentro de outro comando, use $(comando).
  • Importante: Em um crontab, o sinal de porcentagem (%) tem um significado especial (é tratado como uma nova linha). Você deve escapá-lo com uma barra invertida (\%) ao usá-lo com o comando date.
  • Seu comando final no crontab pode parecer com: * * * * * tar -czf /caminho/para/backup-$(date +\%F_\%T).tar.gz -C /caminho/para/origem dir1 dir2

Resumo

Parabéns, Sentinela! Você projetou e implementou com sucesso uma estratégia completa e automatizada de backup e recuperação. Os dados da empresa agora estão seguros, graças à sua diligência e habilidade. Você não apenas evitou uma crise potencial, mas também estabeleceu um sistema que protegerá a empresa no futuro.

Neste desafio, você dominou várias habilidades fundamentais de administração de sistemas:

  • Identificação de Dados Críticos: Identificar exatamente o que precisa de backup.
  • Criação de Arquivos: Usar o comando tar para criar backups compactados.
  • Verificação de Integridade: Garantir que os backups sejam válidos e completos.
  • Realização de Restaurações: Extrair arquivos específicos para se recuperar de perda de dados.
  • Automatização de Tarefas: Agendar tarefas cron para backups regulares e automáticos.

Estas são habilidades essenciais do mundo real para qualquer administrador de sistemas Linux, desenvolvedor ou engenheiro de DevOps. Você provou que tem o que é preciso para ser um guardião confiável de sistemas críticos.

✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar✨ Verificar Solução e Praticar