Backup Sentinel (Страж резервных копий)

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

Введение

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

Технический директор (CTO) лично поручил вам критически важную миссию: внедрить надежную стратегию резервного копирования и восстановления для основного сервера приложений компании, и сделать это сегодня. Целостность пользовательских данных, конфигураций приложений и жизненно важных журналов теперь в ваших руках.

Это ваш момент проявить себя. Успешно создав, проверив и автоматизировав процесс резервного копирования, вы не только защитите самый ценный актив компании — ее данные, — но и докажете, что являетесь незаменимым хранителем ее цифровой инфраструктуры. Система работает, время идет. Приступим к работе.

Важное примечание
Предстоящие задания могут выходить за рамки курса Quick Start with Linux.
Если вы столкнулись с трудностями во время выполнения задания:
  1. Временно пропустите задание и продолжите выполнение последующих практических лабораторных работ в пути обучения Linux.
  2. Обсудите проблему с Labby или посмотрите решение.

Определение критически важных данных для резервного копирования

Прежде чем создавать резервную копию, ваша первая задача — определить, какие данные являются критически важными. Полное резервное копирование системы часто непрактично. Для нашего сервера приложений наиболее важными активами являются каталоги data, config и logs.

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

Задачи

  • Создайте файл с именем backup-list.txt в каталоге ~/project.
  • Этот файл должен содержать относительные пути к трем критически важным каталогам, причем каждый путь должен быть на новой строке.

Требования

  • Файл должен называться именно backup-list.txt.
  • Файл должен находиться в каталоге ~/project.
  • Файл должен содержать следующие три записи, каждая на отдельной строке:
    • data
    • config
    • logs

Примеры

После создания файла 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. Приложение теперь не работает. Ваша задача, как Стража резервных копий, — восстановить этот критически важный файл из вашей резервной копии и спасти положение.

Задачи

  1. Сначала имитируйте аварию, удалив файл config/app.conf.
  2. Затем используйте команду 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. Вы доказали, что у вас есть все необходимое, чтобы быть надежным хранителем критически важных систем.

✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться