Проверочная работа №2 ИТ-2
Формат проведения проверочной работы
Проверочная работа будет проходить в удалённом режиме. Всем студентам будет одновременно выдано проверочное задание. Время выполнение задания — 1.5 часа с момента начала.
Задание для всех студентов выдаётся одинаковое. Совместное решение задач запрещено. При наличии признаков совместного решения всем участникам будет зачтена оценка 0.
Для каждого задания необходимо разработать Bash-скрипт, решающий поставленную задачу. Все скрипты необходимо объединить в архив и загрузить в качестве ответа на Moodle.
Проверяемые знания
- Базовое использование командного интерфейса.
- Понятие текущего рабочего каталога. Знание особенностей использования абсолютных и относительных путей. Изменение текущего рабочего каталога.
- Манипулирование структуры каталогов файловой системы. Копирование, перемещение и удаление файлов и каталогов.
- Понятие о типах команд в Bash. Чтение руководств и встроенной помощи в зависимости от типа команды.
- Знание структуры файловой системы Linux: назначение каталогов и их структура.
- Перенаправление потоков ввода-вывода, использование конвееров. Знание типичных фильтров для обработки данных.
- Расширение строк в Bash: расширение пути, расширение скобок, арифметическое расширение, расширение параметров, подстановка команд.
- Права доступа к файлам в Linux, изменение прав текстовым и буквенным способом, изменение владельца и группы файлов.
- Написание скриптов на языке Bash.
- Проверка качества исходного кода с помощью ShellCheck.
- Поиск файлов с помощью приложений find и fd-find.
- Установка приложений с помощью пакетного менеджера APT в Debian.
- Настройка списка APT-репозиториев.
- Переход между версиями дистрибутива.
- Управление состоянием служб с помощью команд systemd.
- Создание описания собственных служб systemd.
Задача
Необходимо разработать систему, позволяющую автоматизировать задачу выполнения резервного копирования данных. Данные, которые необходимо сохранить, лежат в каталоге. Каталог может содержать другие подкаталоги и т.д.
Необходимо разработать следующие скрипты:
- Скрипт, создающий резервную копию всех данных из целевого каталога.
- Скрипт, создающий резервную копию данных, которые изменились с момента создания последней копии. Так называемая инкрементальная копия. Например, мы сделали резервную копию в понедельник. А во вторник в каталог добавили 10 файлов. В архив с инкрементальной копией должны войти только эти 10 файлов. Удаление файлов учитывать не надо.
- Конфигурация systemd для запуска первого скрипта один раз в неделю.
- Конфигурация systemd для запуска второго скрипта каждый день ночью.
Желательно вынести пути к каталогу с исходными данными и с каталогом для хранения резервных копий в отдельный файл, который подгружался в скриптах для создания полной и инкрементальной резервных копий. Самый простой вариант — использовать отдельный bash-скрипт, в котором определить пару переменных и который подключать к целевым скриптам с помощью команды source
.
В создаваемых архивах иерархия целевого каталога должна быть сохранена.
Вместе со скриптами разместите файл readme.txt
, описывающий как следует использовать каждый из предоставленных файлов. Если для работы скриптов необходимо установить какие-то зависимости, то эту информацию также надо разместить в данном файле.
Реализованные скрипты не должны содержать ошибок с точки зрения ShellCheck.