Введение
Добро пожаловать в LabEx Corporation, день 2! После успешного вчерашнего обследования системы вас повысили до должности цифрового архитектора проекта Phoenix. Команда разработки высоко оценила вашу подробную документацию и внимание к деталям.
Однако возникла срочная проблема, требующая вашего немедленного внимания. Предыдущий системный администратор внезапно ушёл, и файлы проекта Phoenix оказались в полном беспорядке. Исходный код, документация и конфигурационные файлы разбросаны по одному каталогу. Критически важные настройки не защищены резервными копиями, а устаревшие файлы журналов загромождают сервер разработки, который вы обследовали вчера.
Ваша задача — создать чистую, логичную и эффективную структуру файлов, которая поддержит растущую команду разработки. Создав нужные каталоги, упорядочив файлы, защитив резервные копии и удалив устаревшие данные, вы заложите основу для успешного развития проекта Phoenix.
Ведущий разработчик Sarah Chen рассчитывает, что вы превратите этот хаос в организованную профессиональную среду разработки. Ваша сегодняшняя работа напрямую повлияет на производительность команды и сроки проекта. Начнём!
Создание структуры каталогов проекта
Сначала создайте правильную структуру каталогов внутри каталога phoenix_project. Чётко заданная структура отделяет разные типы файлов друг от друга, поэтому проект становится удобнее для навигации и обслуживания.
Задания
- Перейдите в каталог
~/project/phoenix_project. - Создайте три новых подкаталога:
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принимает несколько аргументов, поэтому с её помощью можно создать несколько каталогов за один раз.
Навигация и перемещение файлов проекта
Теперь, когда новая структура каталогов создана, переместите существующие файлы проекта в предназначенные для них каталоги. Это очистит корневой каталог проекта и упростит поиск файлов.
Задания
- Переместите файл
main_app.pyв каталогsrc. - Переместите файл
config.jsonв каталогconfig. - Переместите файл
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.pyls config/→config.jsonls docs/→README.md
Подсказки
- Команда
mvиспользуется для перемещения или переименования файлов и каталогов. - Базовый синтаксис:
mv [SOURCE] [DESTINATION]. - Например, чтобы переместить
file.txtв каталогdocuments, выполнитеmv file.txt documents/.
Создание резервной копии критически важного конфигурационного файла
Файл config.json содержит критически важные настройки проекта Phoenix. До внесения любых изменений необходимо создать его резервную копию. Ваша следующая задача — скопировать этот файл.
Задание
- Создайте резервную копию файла
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 является точной копией исходного файла:
## These commands should show identical output
cat config.json
cat config.json.bak
Подсказки
- Команда
cpиспользуется для копирования файлов и каталогов. - Синтаксис:
cp [SOURCE] [DESTINATION]. - Укажите полный путь к исходному файлу и полный путь к новому файлу резервной копии.
Реорганизация общих ресурсов команды
Вы обнаружили ещё одну часть проекта: каталог shared_docs, расположенный по пути ~/project/shared_docs. В нём находятся важные рекомендации для команды и спецификации API, которые должны быть частью документации проекта. Ваша задача — встроить этот каталог в основную структуру проекта.
Задание
- Переместите весь каталог
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 [SOURCE_DIRECTORY] [DESTINATION_DIRECTORY].
Архивирование и удаление устаревших файлов журналов
Последняя задача связана с наведением порядка. В каталоге ~/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.
Задания
- Перейдите в каталог
~/project/logs. - Создайте сжатый tar-архив с именем
old_logs.tar.gz, включив в него все файлы журналов за 2023 год. - После успешного создания архива удалите исходные файлы журналов за 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удаляет файлы. Будьте осторожны при использовании подстановочных знаков!
Итоги
Отличная работа, цифровой архитектор! Вы успешно превратили проект Phoenix из хаотичного набора файлов в хорошо организованную среду разработки. Sarah Chen и вся команда разработки довольны результатом. Вы создали логичную структуру каталогов, упорядочили важные файлы, защитили конфигурации резервными копиями и навели порядок в системных ресурсах, заархивировав старые журналы.
Эти базовые навыки работы с командной строкой Linux — mkdir, mv, cp, tar и rm — составляют основу профессионального системного администрирования. Благодаря вашей сегодняшней работе проект получил прочный фундамент, который будет поддерживать его на протяжении всего жизненного цикла разработки.
Теперь команда разработки может эффективно работать в правильно организованной среде. Завтра вас ждёт новая задача в роли исследователя журналов: команда столкнётся с первыми техническими проблемами. Системный подход к организации файлов пригодится вам при поиске и устранении неполадок!



