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.
- Pule temporariamente o desafio e continue com os Laboratórios Guiados subsequentes no caminho de aprendizado de Linux.
- 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.txtno 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:
dataconfiglogs
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
nanopara criar e editar o arquivo. - Alternativamente, você pode usar o comando
echocom 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
tarpara 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.txtque 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
-Tcom otarpara ler a lista de arquivos/diretórios a partir dobackup-list.txt. - O arquivo deve ser compactado com
gzip(use a opçãoznotar).
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
tarsãoc(create),z(compress with gzip),v(verbose, para ver o progresso) ef(especificar o nome do arquivo). - A opção
-Tdiz aotarpara 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
tarpara listar o conteúdo do arquivosystem-backup.tar.gzsem extraí-lo. - Redirecione a saída deste comando para um novo arquivo chamado
backup-contents.txtno diretório~/project.
Requisitos
- Você deve criar um arquivo chamado
backup-contents.txtem~/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
tarpossui uma opção para listar (t) o conteúdo de um arquivo. - Combine a opção
tcomz(para gzip),v(para uma lista detalhada) ef(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
- Primeiro, simule o acidente excluindo o arquivo
config/app.conf. - Em seguida, use o comando
tarpara restaurar apenas o arquivoconfig/app.confdo seu arquivosystem-backup.tar.gz. O arquivo deve ser restaurado em sua localização original.
Requisitos
- O arquivo
~/project/config/app.confdeve 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
tarusa a opçãoxpara 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
tarcompactado 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 -epara 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 -epara abrir o editor de cron jobs. Você pode ser solicitado a selecionar um editor; onanoé 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
datepara gerar um carimbo de data/hora. Por exemplo,date +%Y-%m-%d_%H-%M-%Sproduzirá um formato como2023-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 comandodate. - 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
tarpara 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.



