Введение
Вы — «Страж резервных копий» (Backup Sentinel), недавно назначенный системный администратор многообещающего технологического стартапа. Недавний небольшой скачок напряжения вызвал сбой на сервере, из-за чего на мгновение повредился некритичный файл журнала. Хотя в этот раз важные данные не были потеряны, это стало серьезным сигналом к действию.
Технический директор (CTO) лично поручил вам критически важную миссию: внедрить надежную стратегию резервного копирования и восстановления для основного сервера приложений компании, и сделать это сегодня. Целостность пользовательских данных, конфигураций приложений и жизненно важных журналов теперь в ваших руках.
Это ваш момент проявить себя. Успешно создав, проверив и автоматизировав процесс резервного копирования, вы не только защитите самый ценный актив компании — ее данные, — но и докажете, что являетесь незаменимым хранителем ее цифровой инфраструктуры. Система работает, время идет. Приступим к работе.
- Временно пропустите задание и продолжите выполнение последующих практических лабораторных работ в пути обучения Linux.
- Обсудите проблему с Labby или посмотрите решение.
Определение критически важных данных для резервного копирования
Прежде чем создавать резервную копию, ваша первая задача — определить, какие данные являются критически важными. Полное резервное копирование системы часто непрактично. Для нашего сервера приложений наиболее важными активами являются каталоги data, config и logs.
Чтобы сделать процесс резервного копирования чистым и управляемым, мы создадим файл, в котором будут перечислены все каталоги, которые мы хотим сохранить. Этот список послужит манифестом для нашего скрипта резервного копирования.
Задачи
- Создайте файл с именем
backup-list.txtв каталоге~/project. - Этот файл должен содержать относительные пути к трем критически важным каталогам, причем каждый путь должен быть на новой строке.
Требования
- Файл должен называться именно
backup-list.txt. - Файл должен находиться в каталоге
~/project. - Файл должен содержать следующие три записи, каждая на отдельной строке:
dataconfiglogs
Примеры
После создания файла backup-list.txt ваш каталог проекта должен содержать новый файл манифеста наряду с существующими каталогами:
~/project/
├── backup-list.txt
├── backups/
├── config/
├── data/
└── logs/
Когда вы выполните cat backup-list.txt, вы должны увидеть список из трех критически важных каталогов:
data
config
logs
Подсказки
- Вы можете использовать текстовый редактор, например
nano, для создания и редактирования файла. - Альтернативно, вы можете использовать команду
echoс перенаправлением вывода (>) для создания файла и>>для добавления данных в него.
Создание архива резервной копии всей системы
Когда список критически важных каталогов готов, пришло время создать архив резервной копии. Стандартный инструмент Linux для этой задачи — tar (Tape Archive). Он позволяет объединить несколько файлов и каталогов в один файл. Мы также сожмем архив, чтобы сэкономить место, используя gzip.
Задачи
- Используйте команду
tarдля создания сжатого архива резервной копии. - Архив должен называться
system-backup.tar.gz. - Архив должен быть помещен в каталог
~/project/backups/. - Содержимое архива должно определяться файлом
backup-list.txt, который вы создали на предыдущем шаге.
Требования
- Итоговый архив должен находиться по адресу
~/project/backups/system-backup.tar.gz. - Вы должны использовать команду
tar. - Вы должны использовать опцию
-Tсtarдля чтения списка файлов/каталогов изbackup-list.txt. - Архив должен быть сжат с помощью
gzip(используйте опциюzвtar).
Примеры
После создания архива резервной копии ваш каталог backups должен содержать новый сжатый архив:
~/project/backups/
└── system-backup.tar.gz
Когда вы выполните ls -lh ~/project/backups/, вы должны увидеть файл архива с указанием его размера:
-rw-rw-r-- 1 labex labex 1.2K Sep 11 15:08 system-backup.tar.gz
Подсказки
- Общие опции для создания сжатого архива с помощью
tar:c(create — создать),z(compress with gzip — сжать с помощью gzip),v(verbose — подробный вывод, чтобы видеть прогресс) иf(specify filename — указать имя файла). - Опция
-Tуказываетtarбрать имена файлов для архивации из следующего за ней файла, а не из командной строки. - Структура команды будет выглядеть примерно так:
tar -czvf [имя_архива] -T [файл_списка].
Проверка целостности резервной копии
Резервная копия бесполезна, если она повреждена или неполна. Важнейшим шагом в любой стратегии резервного копирования является проверка. Вы должны убедиться, что созданный вами архив содержит все необходимые файлы и пригоден для чтения.
Задачи
- Используйте команду
tarдля вывода списка содержимого архиваsystem-backup.tar.gzбез его извлечения. - Перенаправьте вывод этой команды в новый файл с именем
backup-contents.txtв каталоге~/project.
Требования
- Вы должны создать файл с именем
backup-contents.txtв~/project. - Этот файл должен содержать список всех файлов и каталогов, хранящихся в
system-backup.tar.gz. - Не извлекайте файлы; только выведите их список.
Примеры
После создания файла проверки ваш каталог проекта должен содержать новый файл backup-contents.txt:
~/project/
├── backup-contents.txt
├── backup-list.txt
├── backups/
├── config/
├── data/
└── logs/
Когда вы выполните cat backup-contents.txt, вы должны увидеть подробный список всех файлов в архиве:
drwxrwxr-x labex/labex 0 2025-09-11 15:08 data/
-rw-rw-r-- labex/labex 46 2025-09-11 15:08 data/transactions.csv
drwxrwxr-x labex/labex 0 2025-09-11 15:08 config/
-rw-rw-r-- labex/labex 72 2025-09-11 15:08 config/app.conf
drwxrwxr-x labex/labex 0 2025-09-11 15:08 logs/
-rw-rw-r-- labex/labex 49 2025-09-11 15:08 logs/app.log
Подсказки
- У команды
tarесть опция для вывода списка (t) содержимого архива. - Объедините опцию
tсz(для gzip),v(для подробного списка) иf(чтобы указать файл). - Используйте оператор перенаправления вывода
>для сохранения вывода команды в файл.
Восстановление файлов из резервной копии
Случилась катастрофа! Младший разработчик, пытаясь освободить немного места, случайно удалил основной файл конфигурации приложения app.conf. Приложение теперь не работает. Ваша задача, как Стража резервных копий, — восстановить этот критически важный файл из вашей резервной копии и спасти положение.
Задачи
- Сначала имитируйте аварию, удалив файл
config/app.conf. - Затем используйте команду
tarдля восстановления только файлаconfig/app.confиз вашего архиваsystem-backup.tar.gz. Файл должен быть восстановлен в свое исходное местоположение.
Требования
- Файл
~/project/config/app.confдолжен присутствовать после завершения задачи. - Вы должны извлечь только один файл
config/app.conf, а не весь архив целиком.
Примеры
После восстановления файла app.conf ваш каталог config должен содержать восстановленный файл:
~/project/config/
├── app.conf
└── ...
Когда вы выполните ls -l ~/project/config/app.conf, вы должны увидеть восстановленный файл:
-rw-rw-r-- 1 labex labex 72 Sep 11 15:08 /home/labex/project/config/app.conf
Вы можете убедиться, что содержимое файла правильное, проверив, содержит ли он ожидаемую конфигурацию:
## Это должно показать настройки базы данных и API-ключа
cat ~/project/config/app.conf
Подсказки
- Команда
rmиспользуется для удаления файлов. - Команда
tarиспользует опциюxдля извлечения файлов. - Чтобы извлечь конкретный файл, вы можете добавить его путь (как он отображается в архиве) в конец команды
tar -x. - Полный путь к файлу внутри архива —
config/app.conf.
Планирование автоматических задач резервного копирования
Вы спасли положение, но работа героя никогда не заканчивается. Полагаться на ручное резервное копирование рискованно. Последний шаг — автоматизировать процесс, чтобы резервные копии создавались регулярно без вмешательства человека. Для этого мы будем использовать cron, стандартный планировщик задач Linux.
Задачи
- Создайте задание cron, которое автоматически запускает команду резервного копирования.
- Задание должно выполняться каждую минуту (для целей этого задания).
- Команда должна создавать новый сжатый архив
tarвнутри каталога~/project/backups/. - Чтобы предотвратить перезапись, каждый новый файл резервной копии должен иметь уникальное имя, включающее временную метку (например,
backup-2023-10-27_15-30-00.tar.gz).
Требования
- Вы должны использовать
crontab -eдля редактирования своих заданий cron. - Расписание cron должно быть
* * * * *, чтобы выполняться каждую минуту. - Команда резервного копирования внутри задания cron должна использовать абсолютные пути для выходного каталога и исходных каталогов (например,
/home/labex/project/backups). - Имя файла резервной копии должно включать временную метку.
Примеры
После настройки задания cron вы можете проверить его работу, просмотрев свой crontab и дождавшись появления автоматических резервных копий. Когда вы выполните crontab -l, вы должны увидеть свое новое задание резервного копирования:
## Пример вывода (ваша точная команда может отличаться)
* * * * * tar -czf /home/labex/project/backups/backup-$(date +\%Y-\%m-\%d_\%H-\%M-\%S).tar.gz -C /home/labex/project data config logs
Через минуту или две в вашем каталоге backups начнут появляться файлы резервных копий с временными метками:
~/project/backups/
├── backup-2025-09-11_15-30-00.tar.gz
├── backup-2025-09-11_15-31-00.tar.gz
├── backup-2025-09-11_15-32-00.tar.gz
└── system-backup.tar.gz
Подсказки
- Выполните
crontab -e, чтобы открыть редактор заданий cron. Вас могут попросить выбрать редактор;nano— хороший выбор. - Формат задания cron:
[минута] [час] [день_месяца] [месяц] [день_недели] [команда].* * * * *означает каждую минуту каждого часа каждого дня. - Вы можете использовать команду
dateдля генерации временной метки. Например,date +%Y-%m-%d_%H-%M-%Sсоздаст формат типа2023-10-27_15-30-00. - Чтобы использовать вывод команды внутри другой команды, используйте
$(команда). - Важно: В crontab знак процента (
%) имеет особое значение (он рассматривается как новая строка). Вы должны экранировать его обратной косой чертой (\%) при использовании с командойdate. - Ваша итоговая команда в crontab может выглядеть так:
* * * * * tar -czf /path/to/backup-$(date +\%F_\%T).tar.gz -C /path/to/source dir1 dir2
Резюме
Поздравляем, Страж! Вы успешно спроектировали и внедрили полную автоматизированную стратегию резервного копирования и восстановления. Данные компании теперь в безопасности благодаря вашему усердию и мастерству. Вы не только предотвратили потенциальный кризис, но и создали систему, которая будет защищать компанию в будущем.
В этом задании вы освоили несколько фундаментальных навыков системного администрирования:
- Определение критически важных данных: Выявление того, что необходимо сохранить.
- Создание архивов: Использование команды
tarдля создания сжатых резервных копий. - Проверка целостности: Обеспечение того, что резервные копии действительны и полны.
- Выполнение восстановления: Извлечение конкретных файлов для восстановления после потери данных.
- Автоматизация задач: Планирование заданий cron для регулярного резервного копирования без участия человека.
Это важные, реальные навыки для любого системного администратора Linux, разработчика или инженера DevOps. Вы доказали, что у вас есть все необходимое, чтобы быть надежным хранителем критически важных систем.



