DIA 09: O Sentinela de Backup

LinuxBeginner
Pratique Agora

Introdução

Você é o "Sentinela de Backup", o recém-nomeado administrador de sistemas de uma promissora startup de tecnologia. Um pequeno pico de energia recente 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 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 de aplicação principal da empresa, e fazê-lo hoje. A integridade dos dados dos usuários, das configurações da aplicação e dos logs vitais está 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 provará ser um guardião indispensável de sua infraestrutura digital. O sistema está no ar e o relógio está correndo. Vamos ao trabalho.

Aviso Importante
Os desafios a seguir 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 no caminho de aprendizado de Linux.
  2. Discuta com o Labby ou veja 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 é muitas vezes impraticá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 queremos incluir no backup. 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 ser nomeado exatamente como 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ê deve 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 adicionar conteúdo a ele.

Criando um Arquivo de Backup Completo 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 o gzip.

Tarefas

  • Use o comando tar para criar um arquivo de backup compactado.
  • O arquivo deve ser nomeado como 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 a partir 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ê deve 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), z (compress with gzip), v (verbose, para ver o progresso) e f (especificar o nome do arquivo).
  • A opção -T diz ao tar para obter os nomes dos arquivos a serem arquivados a partir do arquivo que a segue, em vez da linha de comando.
  • A estrutura do comando será algo como tar -czvf [archive_name] -T [list_file].

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 que você criou contenha todos os arquivos pretendidos e que esteja 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ê deve ver uma listagem detalhada de todos os arquivos no arquivo de 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 algum 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 de Backup, restaurar este arquivo crítico a partir 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ê concluir a tarefa.
  • Você deve extrair apenas o arquivo config/app.conf, não o arquivo inteiro.

Exemplos

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

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

Ao executar ls -l ~/project/config/app.conf, você deve 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 verificando se ele contém a configuração esperada:

## 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 arquivo de 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. Depender de 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 um cron job que execute automaticamente um comando de backup.
  • O trabalho deve ser executado a cada minuto (para fins deste desafio).
  • O comando deve criar um novo arquivo tar compactado dentro do diretório ~/project/backups/.
  • Para evitar sobrescrever, cada novo arquivo de backup deve ter um nome único que inclua um carimbo de data/hora (por exemplo, backup-2023-10-27_15-30-00.tar.gz).

Requisitos

  • Você deve usar crontab -e para editar seus cron jobs.
  • O agendamento do cron deve ser * * * * * para ser executado a cada minuto.
  • O comando de backup dentro do cron job deve usar caminhos absolutos para o diretório de saída e os diretórios de origem (por exemplo, /home/labex/project/backups).
  • O nome do arquivo de backup deve incluir um carimbo de data/hora.

Exemplos

Após configurar o cron job, você pode verificar se ele está funcionando verificando seu crontab e aguardando o aparecimento de backups automáticos. Ao executar crontab -l, você deve ver seu novo trabalho 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 ou dois minutos, 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 cron jobs. Você pode ser solicitado a selecionar um editor; o nano é uma boa escolha.
  • O formato para um cron job é: [minuto] [hora] [dia_do_mês] [mês] [dia_da_semana] [comando]. * * * * * significa a 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 ser parecido 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: Determinar o que precisa ser incluído no 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.
  • Execução de Restaurações: Extrair arquivos específicos para recuperar de perda de dados.
  • Automação de Tarefas: Agendar cron jobs para backups regulares e autônomos.

Essas são habilidades essenciais e reais 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