system-backup.sh — это инструмент полного резервного копирования и восстановления Linux-систем (Fedora / CentOS / Alma / Rocky и др.) на основе tar-архивов.
Скрипт предназначен для:
- создания консистентных архивов системных разделов
- восстановления системы на новый диск
- разметки и форматирования диска
- проверки доступных бэкапов
- работы как в LIVE-режиме, так и в rescue-среде
Поддерживаемые разделы
Скрипт работает с фиксированным набором разделов:
- efi
- boot
- rootfs
- home
- var
- swap
Режимы работы
- LIVE (multi-user.target)
Работа в запущенной системе.
Корневой раздел уже смонтирован, архивирование выполняется «на горячую». - OFFLINE / RESCUE
Работа из rescue-режима или Live-носителя.
Разделы монтируются вручную в $SYS_DIR, после чего производится восстановление.
Основные параметры
- -b —Создание бэкапа
- -r — Восстановление системы
- -c — Разметка и форматирование диска
- -i — Информация о доступных бэкапах
- -v — Проверка целостности последнего архива
- -V — Проверка целостности всех бэкапов
- -h — Справка
При создании бэкапа:
- Для каждого раздела создаётся отдельный tar-архив.
- Архивы размещаются в каталоге вида: /mnt/BACKUP/<HOST>/<DATE_TIME>
- Используется последовательная обработка разделов согласно PARTS_ORDER.
Восстановление
Процесс восстановления включает:
- Разметку диска (если выбран режим -m)
- Форматирование файловых систем
- Монтирование разделов
- Распаковку архивов в установленном порядке
- Установку и конфигурацию загрузчика
- Восстановление SELinux-контекстов
- Код: выделить все
restorecon -Rv /
для корректного применения контекстов безопасности.
Особенности chroot
При работе в rescue-режиме:
- Временная корректировка /etc/resolv.conf внутри chroot для обеспечения работы dnf и сетевых операций.
- После завершения конфигурации оригинальное состояние восстанавливается.
MAKE_PART (разметка диска)
Функция разметки:
- использует parted
- создаёт таблицу разделов
- форматирует разделы через mkfs.*
- создаёт swap при необходимости
Логирование
Скрипт реализует многоуровневое логирование:
- START / END сессии
- INFO / WARN / ERROR
- лог-файл
- вывод в консоль
- поддержка syslog
Особенности:
- Корректная обработка Ctrl+C (INT)
- Обработка SIGTERM
- Гарантированное завершение сессии через trap EXIT
- Отсутствие дублирования END-блока
- Восстановление состояния терминала (stty echoctl)
Обработка прерываний
- Ctrl+C → статус FAILED
- штатное завершение → статус SUCCESS
- исключены двойные вызовы log_session_end
- корректное восстановление терминала
Поведение при неполных бэкапах
Если какой-либо архив отсутствует:
- выводится предупреждение
- процесс продолжается
- критическая ошибка возникает только при невозможности восстановления ключевых разделов
Требования
- bash 4+
- tar
- parted
- mkfs.*
- grub2
- systemd
- restorecon (SELinux)
Назначение
Скрипт предназначен для:
- быстрого переноса системы на новый диск
- восстановления после сбоя
- создания аварийных бэкапов
- администрирования Fedora-подобных систем
