Введение
Вы — «Страж резервного копирования», недавно назначенный системный администратор в перспективном технологическом стартапе. Недавний небольшой скачок напряжения вызвал сбой сервера, что привело к кратковременному повреждению второстепенного лог-файла. Хотя на этот раз важные данные не пострадали, это стало серьезным тревожным звонком.
Технический директор лично поручил вам критически важную миссию: внедрить надежную стратегию резервного копирования и восстановления для основного сервера приложений компании, и сделать это сегодня. Целостность пользовательских данных, конфигураций приложений и жизненно важных логов теперь в ваших руках.
Это ваш шанс проявить себя. Успешно создав, проверив и автоматизировав процесс резервного копирования, вы не только защитите самый ценный актив компании — её данные, но и докажете, что являетесь незаменимым хранителем её цифровой инфраструктуры. Система запущена, время пошло. Приступаем к работе.
- Временно пропустите это испытание и продолжите обучение в последующих практических руководствах в пути обучения 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(создать),z(сжать с помощью gzip),v(подробно, для отображения процесса) и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 /путь/к/backup-$(date +\%F_\%T).tar.gz -C /путь/к/источнику папка1 папка2
Резюме
Поздравляем, Страж! Вы успешно разработали и внедрили полную автоматизированную стратегию резервного копирования и восстановления. Данные компании теперь в безопасности благодаря вашему усердию и мастерству. Вы не только предотвратили возможный кризис, но и создали систему, которая будет защищать компанию в будущем.
В этом испытании вы освоили несколько фундаментальных навыков системного администрирования:
- Определение критических данных: Точное понимание того, что именно нуждается в защите.
- Создание архивов: Использование команды
tarдля создания сжатых копий. - Проверка целостности: Гарантия того, что резервные копии валидны и полны.
- Выполнение восстановления: Извлечение конкретных файлов для устранения последствий потери данных.
- Автоматизация задач: Настройка задач cron для регулярного резервного копирования без участия оператора.
Это важные практические навыки для любого системного администратора Linux, разработчика или инженера DevOps. Вы доказали, что обладаете всем необходимым, чтобы быть надежным хранителем критически важных систем.



