ДЕНЬ 02: Цифровой архитектор

LinuxBeginner
Практиковаться сейчас

Введение

Добро пожаловать на второй день в LabEx Corporation! После вчерашней успешной разведки системы вас повысили до роли цифрового архитектора проекта «Феникс» (Project Phoenix). Команда разработчиков была впечатлена вашей тщательной документацией и вниманием к деталям.

Однако возникла срочная проблема, требующая вашего немедленного вмешательства. Предыдущий системный администратор внезапно уволился, и файлы проекта «Феникс» находятся в полном беспорядке. Исходный код, документация и файлы конфигурации разбросаны по одному каталогу. Критически важные настройки уязвимы из-за отсутствия резервных копий, а устаревшие файлы журналов (логов) загромождают сервер разработки, который вы исследовали вчера.

Ваша задача — спроектировать чистую, логичную и эффективную структуру файлов, которая поддержит растущую команду разработчиков. Создавая правильные каталоги, упорядочивая файлы, обеспечивая резервное копирование и очищая старые данные, вы заложите фундамент, необходимый для успеха проекта «Феникс».

Ведущий разработчик Сара Чен рассчитывает на то, что вы превратите этот хаос в организованную профессиональную среду разработки. Ваша работа сегодня напрямую повлияет на продуктивность команды и сроки реализации проекта. Давайте приступим!

Настройка структуры каталогов проекта

Ваша первая задача — создать правильную структуру каталогов внутри phoenix_project. Четко определенная структура разделяет различные типы файлов, облегчая навигацию и поддержку проекта.

Задачи

  1. Перейдите в каталог ~/project/phoenix_project.
  2. Создайте три новых подкаталога: src для исходного кода, config для файлов конфигурации и docs для документации.

Требования

  • Все новые каталоги должны быть созданы внутри каталога ~/project/phoenix_project.
  • Имена каталогов должны быть строго src, config и docs.
  • Вы должны использовать одну команду для создания всех трех каталогов одновременно.

Примеры

После выполнения этого шага структура вашего каталога должна выглядеть так:

~/project/phoenix_project/
├── config/
├── docs/
├── src/
├── README.md
├── config.json
└── main_app.py

Когда вы выполните ls -F в каталоге ~/project/phoenix_project, вы должны увидеть:

README.md  config/  config.json  docs/  main_app.py  src/

Символы / после имен каталогов указывают на то, что это каталоги, а не файлы.

Подсказки

  • Используйте команду cd для смены текущего каталога.
  • Команда mkdir используется для создания новых каталогов.
  • mkdir может принимать несколько аргументов для создания нескольких каталогов за раз.
✨ Проверить решение и практиковаться

Навигация и создание файлов проекта

Теперь, когда структура каталогов готова, пришло время переместить существующие файлы проекта в отведенные им места. Это очистит корень проекта и облегчит поиск файлов.

Задачи

  1. Переместите файл main_app.py в каталог src.
  2. Переместите файл config.json в каталог config.
  3. Переместите файл README.md в каталог docs.

Требования

  • Убедитесь, что вы находитесь в каталоге ~/project/phoenix_project перед выполнением операций перемещения.
  • Используйте команду mv для перемещения каждого файла.

Примеры

После перемещения файлов структура вашего проекта должна быть организована следующим образом:

~/project/phoenix_project/
├── config/
│ └── config.json
├── docs/
│ └── README.md
└── src/
└── main_app.py

Когда вы выполните ls -F в корневом каталоге ~/project/phoenix_project, он должен показывать только каталоги:

config/  docs/  src/

Каждый файл теперь должен находиться в соответствующем подкаталоге:

  • ls src/main_app.py
  • ls config/config.json
  • ls docs/README.md

Подсказки

  • Команда mv используется для перемещения или переименования файлов и каталогов.
  • Базовый синтаксис: mv [ИСТОЧНИК] [НАЗНАЧЕНИЕ].
  • Например, чтобы переместить file.txt в каталог с именем documents, вы должны использовать mv file.txt documents/.
✨ Проверить решение и практиковаться

Резервное копирование критически важных файлов конфигурации

Файл config.json содержит критически важные настройки для проекта «Феникс». Перед внесением любых изменений крайне важно создать резервную копию. Ваша следующая задача — создать копию этого файла.

Задачи

  1. Создайте резервную копию файла config.json.

Требования

  • Резервный файл должен быть создан внутри каталога ~/project/phoenix_project/config/.
  • Резервный файл должен называться строго config.json.bak.

Примеры

После создания резервной копии ваш каталог config должен содержать оба файла:

~/project/phoenix_project/config/
├── config.json
└── config.json.bak

Когда вы выполните ls в каталоге ~/project/phoenix_project/config/, вы должны увидеть:

config.json  config.json.bak

Оба файла должны иметь идентичное содержимое, так как файл .bak является точной копией оригинала:

## Эти команды должны показать идентичный вывод
cat config.json
cat config.json.bak

Подсказки

  • Команда cp используется для копирования файлов и каталогов.
  • Синтаксис: cp [ИСТОЧНИК] [НАЗНАЧЕНИЕ].
  • Вам нужно будет указать полный путь к исходному файлу и полный путь для нового резервного файла.
✨ Проверить решение и практиковаться

Реорганизация общих ресурсов команды

Вы обнаружили еще одну часть головоломки: каталог с именем shared_docs, расположенный по адресу ~/project/shared_docs. Этот каталог содержит важные рекомендации для команды и спецификации API, которые должны находиться вместе с остальной документацией проекта. Ваша задача — интегрировать его в основную структуру проекта.

Задачи

  1. Переместите весь каталог shared_docs и все его содержимое в каталог ~/project/phoenix_project/docs/.

Требования

  • Исходный каталог — ~/project/shared_docs.
  • Целевой путь — ~/project/phoenix_project/docs/.
  • Весь каталог, а не только его содержимое, должен быть перемещен.

Примеры

После перемещения каталога shared_docs структура вашей документации должна выглядеть так:

~/project/phoenix_project/docs/
├── README.md
└── shared_docs/
├── api_spec.doc
└── team_guidelines.txt

Когда вы выполните ls в каталоге ~/project/phoenix_project/docs/, вы должны увидеть:

README.md  shared_docs/

Каталог shared_docs должен содержать все свои исходные файлы:

ls ~/project/phoenix_project/docs/shared_docs/
api_spec.doc  team_guidelines.txt

Исходное расположение ~/project/shared_docs больше не должно существовать.

Подсказки

  • Команда mv работает с каталогами так же, как и с файлами.
  • Когда вы перемещаете каталог, все его содержимое перемещается вместе с ним автоматически.
  • Команда будет выглядеть так: mv [ИСХОДНЫЙ_КАТАЛОГ] [ЦЕЛЕВОЙ_КАТАЛОГ].
✨ Проверить решение и практиковаться

Архивирование и удаление устаревших файлов журналов

Ваша последняя задача — наведение порядка. В каталоге ~/project/logs скапливаются файлы журналов, и те, что относятся к 2023 году, больше не нужны для повседневной работы. Чтобы сэкономить место и поддерживать порядок, вам нужно сжать эти старые журналы в один архивный файл, а затем удалить исходные файлы.

Понимание команды tar

Команда tar — это мощный инструмент Linux для создания и манипулирования архивными файлами. Изначально "Tar" расшифровывалось как "Tape Archive" (ленточный архив), так как он был разработан для записи данных на магнитные ленты, но сегодня он обычно используется для создания сжатых архивных файлов на диске.

Когда вы используете tar, вы по сути объединяете несколько файлов в один (называемый архивом), и вы можете дополнительно сжать этот архив, чтобы сэкономить место. Самый распространенный формат сжатия — gzip, который добавляет расширение .gz к имени файла.

Команда tar использует различные опции (флаги) для управления своим поведением:

  • c: Создать новый архив
  • z: Сжать архив с помощью gzip
  • f: Указать имя файла архива

Таким образом, tar -czf archive.tar.gz file1 file2 создает новый сжатый архив с именем archive.tar.gz, содержащий file1 и file2.

Задачи

  1. Перейдите в каталог ~/project/logs.
  2. Создайте сжатый tar-архив с именем old_logs.tar.gz, который содержит все файлы журналов за 2023 год.
  3. После успешного создания архива удалите исходные файлы журналов за 2023 год, которые вы только что заархивировали.

Требования

  • Итоговый архив должен называться строго old_logs.tar.gz.
  • Архив должен находиться в каталоге ~/project/logs.
  • Только файлы журналов с 2023 в имени должны быть заархивированы и впоследствии удалены.
  • Файл журнала за 2024 год (app_2024-05-01.log) не должен быть включен в архив и не должен быть удален.

Примеры

Перед архивированием ваш каталог журналов содержит:

~/project/logs/
├── app_2023-01-15.log
├── app_2024-05-01.log
└── db_2023-02-20.log

После завершения задачи архивирования ваш каталог журналов должен выглядеть так:

~/project/logs/
├── app_2024-05-01.log
└── old_logs.tar.gz

Когда вы выполните ls в каталоге ~/project/logs/, вы должны увидеть:

app_2024-05-01.log  old_logs.tar.gz

Подсказки

  • Используйте команду tar для создания архивов. Опции -czf — это мощная комбинация: c (создать), z (сжать с помощью gzip) и f (указать имя файла).
  • Вы можете использовать подстановочный знак (*) для выбора нескольких файлов, соответствующих шаблону. Например, *_2023-*.log будет соответствовать всем файлам, которые заканчиваются на .log и имеют _2023- в своем имени.
  • Команда rm используется для удаления файлов. Будьте осторожны при использовании ее с подстановочными знаками!
✨ Проверить решение и практиковаться

Резюме

Выдающаяся работа, цифровой архитектор! Вы успешно превратили проект «Феникс» из хаоса в хорошо организованную среду разработки. Сара Чен и вся команда разработчиков в восторге от вашей работы. Вы построили логичную структуру каталогов, организовали критически важные файлы, защитили конфигурации резервными копиями и очистили системные ресурсы, заархивировав старые журналы.

Эти фундаментальные навыки работы в командной строке Linux — mkdir, mv, cp, tar и rm — составляют основу профессионального системного администрирования. Ваша организационная работа сегодня создала прочный фундамент, который будет поддерживать проект «Феникс» на протяжении всего жизненного цикла разработки.

Команда разработчиков теперь может эффективно работать в своей правильно структурированной среде. Завтра вы возьметесь за новую задачу в качестве исследователя журналов (Log Investigator), когда команда столкнется со своими первыми техническими проблемами. Ваш систематический подход к организации сослужит вам хорошую службу при устранении неполадок!