Você foi contratado como técnico de laboratório por uma instituição de ensino para realizar a manutenção das máquinas de todos os laboratórios de informática. Essa instituição oferta cursos nas áreas de Web Design, Segurança da Informação e Redes de Computadores. Os laboratórios são equipados com máquinas com o Ubuntu instalado como Sistema Operacional.
O professor da disciplina de Redes de Computadores solicitou a configuração das máquinas do laboratório, para que periodicamente seja executada uma rotina de atualização dos pacotes e backup da pasta /home, de modos que a máquina sempre tenha as versões mais recentes dos principais pacotes instalados e possa ter a pasta /home restaurada, em caso de remoção de arquivos dos alunos. A atualização dos pacotes deve ocorrer no primeiro dia útil da semana, segunda-feira, as 08h da manhã; e o backup todos os dias, de 6 em 6 horas.
Com intituito de atender a solicitação do professor, você realizou uma pesquisa por soluções que permitissem o agendamento de tarefas no Linux. Você constatou que o Linux, por padrão, já possui uma solução que permite esse agendamento, chamada Cron. Seria preciso apenas construir o Shell Script para realizar as rotinas e colocar eles para rodar no Cron.
Para realizar essa tarefa, você contará com a ajuda de outro técnico de laboratório. Antes de realizar os procedimentos nas máquinas reais, vocês devem utilizar máquins virtuais com o Ubuntu, de modos a validar todo o processo de configuração da solução. As máquinas deverão ser configuradas via DHCP da rede do IFB, visto que não existe a necessidade de uma configuração de rede especifica.
As tabelas abaixo contém o resumo do contexto e a característica das máquinas:
Rotina | Periodicidade |
---|---|
Backup da pasta /home | Todos os dias, 6 em 6 horas |
Atualização dos pacotes | 08h da manhã de toda segunda-feira |
Máquina | Disco | Memória |
---|---|---|
Máquina Teste 01 | 8 GB | 512 MB |
Máquina Teste 02 | 8 GB | 512 MB |
Todas as máquinas virtuais utilizadas pela dupla poderão ser instaladas com o sistema operacional Ubuntu, utilizando qualquer esquema de particionamento. Caso ache melhor, a dupla poderá utilizar o Ubuntu no modo de teste.
Para facilitar a manutenção e deixar a solução mais elegante, será utilizado um Shell Script para cada uma das rotinas solicitadas pelo professor. O código de cada um dos scripts foi disponibilizado pelo próprio professor.
#!/bin/bash #Rotina para realizar o Backup da Pasta /home #Nome Arquivo: /root/script-backup-home.sh #Será salvo um arquivo de log na pasta /root #O Backup será salvo na pasta /var/backups #O Script deverá ser executado pelo usuário root DATA=`date +%Y-%m-%d-%H.%M` echo "Inicio do Log - $DATA" >> /root/backup-home.log tar -cvzf /var/backups/"$DATA"-backup-home.tar.gz /home/* >> /root/backup-home.log echo "Fim do Log - $DATA" >> /root/backup-home.log
#!/bin/bash #Rotina para realizar a Atualização dos Pacotes #Nome Arquivo: /root/script-atualizacao-pacotes.sh #Será salvo um arquivo de log na pasta /root #O Script deverá ser executado pelo usuário root DATA=`date +%Y-%m-%d-%H.%M` echo "Inicio do Log - $DATA" >> /root/atualizacao-pacotes.log apt-get update >> /root/atualizacao-pacotes.log apt-get upgrade -y >> /root/atualizacao-pacotes.log echo "Fim do Log - $DATA" >> /root/atualizacao-pacotes.log
O primeiro passo para realizar o agendamento das rotinas é salvar os Shell Script em arquivos, com o nome sugerido no próprio código do script. Em seguida é preciso dar permissão de execução para cada um dos arquivos, utilizando o comando abaixo:
# chmod +x nome_script
Antes de configurar o Cron, teste os scripts, executando eles diretamente no terminal:
# ./nome_script
Como ambos os scripts devem ser executados com o usuário root, a configuração do Cron deve ser feita editando o arquivo abaixo:
/etc/crontab
Coloque uma nova linha, antes da linha #, para cada um dos scripts. A linha abaixo é um exemplo e deve ser alterada de acordo com a data e hora que o script deve ser executado, bem como de acordo com o caminho do script.
* * * * * root caminho_script