Introdução
Boas-vindas ao segundo dia na LabEx Corporation! Depois do reconhecimento bem-sucedido do sistema ontem, você foi promovido ao cargo de Arquiteto Digital do Project Phoenix. A equipe de desenvolvimento ficou impressionada com sua documentação detalhada e sua atenção aos detalhes.
No entanto, há um problema urgente que precisa da sua atenção imediata. O administrador de sistemas anterior saiu repentinamente, e os arquivos do Project Phoenix estão completamente desorganizados. O código-fonte, a documentação e os arquivos de configuração estão espalhados em um único diretório. Configurações críticas estão vulneráveis por não terem backups, e arquivos de log antigos estão ocupando espaço no servidor de desenvolvimento que você examinou ontem.
Sua missão é criar uma estrutura de arquivos limpa, lógica e eficiente para dar suporte ao crescimento da equipe de desenvolvimento. Ao criar diretórios adequados, organizar os arquivos, proteger as configurações com backups e limpar dados antigos, você estabelecerá a base necessária para o sucesso do Project Phoenix.
A líder de desenvolvimento, Sarah Chen, conta com você para transformar esse caos em um ambiente de desenvolvimento organizado e profissional. O trabalho de hoje afetará diretamente a produtividade da equipe e o cronograma do projeto. Vamos começar!
Configurando a estrutura de diretórios do projeto
Sua primeira tarefa é criar uma estrutura de diretórios adequada dentro do diretório phoenix_project. Uma estrutura bem definida separa os diferentes tipos de arquivo, tornando o projeto mais fácil de navegar e manter.
Tarefas
- Navegue até o diretório
~/project/phoenix_project. - Crie três novos subdiretórios:
srcpara o código-fonte,configpara os arquivos de configuração edocspara a documentação.
Requisitos
- Todos os novos diretórios devem ser criados dentro do diretório
~/project/phoenix_project. - Os nomes dos diretórios devem ser exatamente
src,configedocs. - Você deve usar um único comando para criar os três diretórios simultaneamente.
Exemplos
Após concluir esta etapa, a estrutura de diretórios deverá ser semelhante a esta:
~/project/phoenix_project/
├── config/
├── docs/
├── src/
├── README.md
├── config.json
└── main_app.py
Ao executar ls -F no diretório ~/project/phoenix_project, você deverá ver:
README.md config/ config.json docs/ main_app.py src/
Os símbolos / após os nomes indicam que eles são diretórios, não arquivos.
Dicas
- Use o comando
cdpara alterar o diretório atual. - O comando
mkdirserve para criar novos diretórios. mkdiraceita vários argumentos para criar vários diretórios de uma só vez.
Navegando e criando arquivos do projeto
Com a nova estrutura de diretórios pronta, é hora de mover os arquivos existentes do projeto para seus diretórios correspondentes. Isso deixará a raiz do projeto organizada e facilitará a localização dos arquivos.
Tarefas
- Mova o arquivo
main_app.pypara o diretóriosrc. - Mova o arquivo
config.jsonpara o diretórioconfig. - Mova o arquivo
README.mdpara o diretóriodocs.
Requisitos
- Verifique se você está no diretório
~/project/phoenix_projectantes de executar as operações de movimentação. - Use o comando
mvpara mover cada arquivo.
Exemplos
Após mover os arquivos, a estrutura do projeto deverá estar organizada assim:
~/project/phoenix_project/
├── config/
│ └── config.json
├── docs/
│ └── README.md
└── src/
└── main_app.py
Ao executar ls -F no diretório raiz ~/project/phoenix_project, a saída deverá mostrar apenas os diretórios:
config/ docs/ src/
Cada arquivo deverá estar em seu subdiretório correspondente:
ls src/→main_app.pyls config/→config.jsonls docs/→README.md
Dicas
- O comando
mvserve para mover ou renomear arquivos e diretórios. - A sintaxe básica é
mv [SOURCE] [DESTINATION]. - Por exemplo, para mover
file.txtpara um diretório chamadodocuments, usemv file.txt documents/.
Fazendo backup de arquivos de configuração críticos
O arquivo config.json contém configurações críticas do Project Phoenix. Antes de fazer qualquer modificação, é essencial criar uma cópia de backup como medida de segurança. Sua próxima tarefa é criar uma cópia desse arquivo.
Tarefas
- Crie uma cópia de backup do arquivo
config.json.
Requisitos
- O arquivo de backup deve ser criado dentro do diretório
~/project/phoenix_project/config/. - O nome do arquivo de backup deve ser exatamente
config.json.bak.
Exemplos
Depois de criar o backup, o diretório config deverá conter os dois arquivos:
~/project/phoenix_project/config/
├── config.json
└── config.json.bak
Ao executar ls no diretório ~/project/phoenix_project/config/, você deverá ver:
config.json config.json.bak
Os dois arquivos deverão ter conteúdo idêntico, pois o arquivo .bak é uma cópia exata do original:
## These commands should show identical output
cat config.json
cat config.json.bak
Dicas
- O comando
cpserve para copiar arquivos e diretórios. - A sintaxe é
cp [SOURCE] [DESTINATION]. - Você precisará informar o caminho completo do arquivo de origem e o caminho completo do novo arquivo de backup.
Reorganizando os recursos compartilhados da equipe
Você descobriu outra parte do problema: um diretório chamado shared_docs, localizado em ~/project/shared_docs. Esse diretório contém diretrizes importantes da equipe e especificações de API que devem ficar junto com o restante da documentação do projeto. Sua tarefa é integrá-lo à estrutura principal do projeto.
Tarefas
- Mova o diretório
shared_docsinteiro, incluindo todo o seu conteúdo, para o diretório~/project/phoenix_project/docs/.
Requisitos
- O diretório de origem é
~/project/shared_docs. - O caminho de destino é
~/project/phoenix_project/docs/. - O diretório inteiro, e não apenas seu conteúdo, deve ser movido.
Exemplos
Depois de mover o diretório shared_docs, a estrutura da documentação deverá ser semelhante a esta:
~/project/phoenix_project/docs/
├── README.md
└── shared_docs/
├── api_spec.doc
└── team_guidelines.txt
Ao executar ls no diretório ~/project/phoenix_project/docs/, você deverá ver:
README.md shared_docs/
O diretório shared_docs deverá conter todos os arquivos originais:
ls ~/project/phoenix_project/docs/shared_docs/
api_spec.doc team_guidelines.txt
O local original ~/project/shared_docs não deverá mais existir.
Dicas
- O comando
mvfunciona com diretórios da mesma forma que com arquivos. - Ao mover um diretório, todo o seu conteúdo é movido automaticamente com ele.
- O comando terá o formato
mv [SOURCE_DIRECTORY] [DESTINATION_DIRECTORY].
Arquivando e removendo arquivos de log antigos
Sua tarefa final envolve uma pequena limpeza. O diretório ~/project/logs está acumulando arquivos de log, e os arquivos de 2023 não são mais necessários para as operações diárias. Para economizar espaço e manter tudo organizado, você precisa compactar esses logs antigos em um único arquivo de arquivamento e depois remover os arquivos originais.
Entendendo o comando tar
O comando tar é uma ferramenta poderosa do Linux para criar e manipular arquivos de arquivamento. Originalmente, “Tar” significava “Tape Archive”, pois a ferramenta foi criada para gravar dados em fitas magnéticas. Atualmente, ela é usada principalmente para criar arquivos de arquivamento compactados em disco.
Ao usar tar, você reúne vários arquivos em um único arquivo, chamado arquivo de arquivamento, e pode compactá-lo opcionalmente para economizar espaço. O formato de compactação mais comum é o gzip, que acrescenta a extensão .gz ao nome do arquivo.
O comando tar usa diferentes opções (flags) para controlar seu comportamento:
c: cria um novo arquivo de arquivamentoz: compacta o arquivo de arquivamento usando gzipf: especifica o nome do arquivo de arquivamento
Assim, tar -czf archive.tar.gz file1 file2 cria um novo arquivo compactado chamado archive.tar.gz, contendo file1 e file2.
Tarefas
- Navegue até o diretório
~/project/logs. - Crie um arquivo tar compactado chamado
old_logs.tar.gzcontendo todos os arquivos de log de 2023. - Depois que o arquivo de arquivamento for criado com sucesso, exclua os arquivos de log originais de 2023 que você acabou de arquivar.
Requisitos
- O arquivo de arquivamento final deve se chamar exatamente
old_logs.tar.gz. - O arquivo de arquivamento deve estar localizado no diretório
~/project/logs. - Apenas os arquivos de log que tenham
2023no nome devem ser arquivados e depois removidos. - O arquivo de log de 2024 (
app_2024-05-01.log) não deve ser incluído no arquivo de arquivamento nem excluído.
Exemplos
Antes do arquivamento, o diretório de logs contém:
~/project/logs/
├── app_2023-01-15.log
├── app_2024-05-01.log
└── db_2023-02-20.log
Depois de concluir a tarefa de arquivamento, o diretório de logs deverá estar assim:
~/project/logs/
├── app_2024-05-01.log
└── old_logs.tar.gz
Ao executar ls no diretório ~/project/logs/, você deverá ver:
app_2024-05-01.log old_logs.tar.gz
Dicas
- Use o comando
tarpara criar arquivos de arquivamento. As opções-czfformam uma combinação importante:c(criar),z(compactar com gzip) ef(especificar o nome do arquivo). - Você pode usar um caractere curinga (
*) para selecionar vários arquivos que correspondam a um padrão. Por exemplo,*_2023-*.logcorresponde a todos os arquivos que terminam com.loge contêm_2023-no nome. - O comando
rmserve para remover arquivos. Tenha cuidado ao usá-lo com caracteres curinga!
Resumo
Excelente trabalho, Arquiteto Digital! Você transformou com sucesso o Project Phoenix, que estava caótico, em um ambiente de desenvolvimento bem organizado. Sarah Chen e toda a equipe de desenvolvimento estão muito satisfeitas com seu trabalho. Você criou uma estrutura lógica de diretórios, organizou arquivos críticos, protegeu as configurações com backups e liberou recursos do sistema ao arquivar logs antigos.
Essas habilidades fundamentais de linha de comando do Linux — mkdir, mv, cp, tar e rm — formam a base da administração profissional de sistemas. O trabalho de organização realizado hoje criou uma base sólida para apoiar o Project Phoenix durante todo o seu ciclo de desenvolvimento.
Agora a equipe de desenvolvimento pode trabalhar com eficiência em um ambiente devidamente estruturado. Amanhã, você enfrentará um novo desafio como Investigador de Logs, quando a equipe encontrar seus primeiros problemas técnicos. Sua abordagem sistemática de organização será muito útil na solução de problemas!



