Введение
Вы — «Страж резервных копий», недавно назначенный системный администратор многообещающего технологического стартапа. Недавний небольшой скачок напряжения вызвал сбой на сервере, который на мгновение повредил некритичный файл журнала. Хотя в этот раз важные данные не были потеряны, это стало серьезным сигналом к действию.
Технический директор лично поручил вам критически важную миссию: внедрить надежную стратегию резервного копирования и восстановления для основного сервера приложений компании, и сделать это сегодня. Целостность пользовательских данных, конфигураций приложений и жизненно важных журналов теперь в ваших руках.
Это ваш момент проявить себя. Успешно создав, проверив и автоматизировав процесс резервного копирования, вы не только защитите самый ценный актив компании — ее данные, — но и докажете, что являетесь незаменимым хранителем ее цифровой инфраструктуры. Система работает, время идет. Приступим к работе.
- Временно пропустите задание и продолжите выполнение последующих практических лабораторных работ в пути обучения 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),v(verbose, для отображения прогресса) иf(указать имя файла). - Опция
-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. Вы доказали, что у вас есть все необходимое, чтобы быть надежным хранителем критически важных систем.



