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 incumbiu 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 fazer isso 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, 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 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/criar), z (compress/compactar com gzip), v (verbose/detalhado, para ver o progresso) e f (specify filename/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 a segue, em vez da linha de comando.
  • A estrutura do comando será algo como tar -czvf [nome_do_arquivo] -T [arquivo_de_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 que você criou contenha todos os arquivos pretendidos e 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 tem 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 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 seu caminho (como aparece no arquivo de backup) ao final do comando tar -x.
  • O caminho completo para o arquivo dentro do arquivo de 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 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 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 suas tarefas cron.
  • O agendamento do cron deve ser * * * * * para executar 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 (por exemplo, /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 ela está funcionando verificando seu crontab e aguardando o aparecimento de backups automáticos. Ao executar crontab -l, você deve 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 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 tarefas cron. Você pode ser solicitado a selecionar 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 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 estão agora 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 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 tarefas cron para backups regulares e autônomos.

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