About Backup | GNU/Linux

14 Created on 27 March 2025 at 10:26
  It     Linux  

RTO (Recovery Time Objective) — допустимое время восстановления после сбоя.

RPO (Recovery Point Objective) — допустимый уровень потери данных.

  • Насколько свежими будут данные после восстановления.

Существует 3-2-1 стратегия для организации бекапов:

  • 3 копии данных — оригинал и два бекапа;

  • 2 разных типа носителей (например, локально и в облаке);

  • 1 копия вне основной инфраструктуры (например, в облаке).

Подготовка раздела

Перед тем как сделать бекап текущего состояния системы, нужно позаботиться о том, что есть отдельный раздел на диске.

  • Рекомендуется создавать разделы сразу при начальной установке системы.
  • Если же требуется создать раздел уже после установки системы, нужно помнить, что при сужении раздела потребуется загрузиться с LiveUSB, чтобы раздел не был смонтирован на момент манипуляций.
  • После создания раздела, он становится доступен в директории /dev: например, /dev/sdb.

Если раздел /dev/sdb ещё не отформатирован, следует создать файловую систему (ext4) на этом разделе:

sudo mkfs.ext4 /dev/sdb

Затем нужно смонтировать раздел в каталог /mnt текущего раздела, чтобы хранить снимки:

sudo mkdir /mnt/backup

sudo mount /dev/sdb /mnt/backup

df -h — проверить, что раздел смонтирован правильно.

Чтобы раздел оставался смонтированный после перезагрузки системы, нужно прописать его в конфигурацию /etc/fstab:

vim /etc/fstab

Добавить строку в конце файла:

/dev/sdb /mnt/backup ext4 defaults 0 0

rsync

rsync — это удобный инструмент для копирования и синхронизации данных, который хорошо подходит для создания резервных копий системных файлов.

Он будет копировать только измененные файлы, что делает процесс бэкапа эффективным.

sudo rsync -aPv --exclude={"/mnt/","/proc/","/sys/","/dev/","/run/","/tmp/","/var/*"} / /mnt/backup/

-a (или --archive) — основной параметр, который включает в себя несколько параметров:

  • -r — рекурсивное копирование директорий (копирует папки и их содержимое).
  • -l — копирует символические ссылки как ссылки.
  • -p — сохраняет права доступа (permissions).
  • -t — сохраняет временные метки файлов (timestamps).
  • -g — сохраняет группу файлов.
  • -o — сохраняет владельца файлов.
  • -D — сохраняет устройства (в основном полезно для копирования с устройств, но может быть полезно для других случаев).

--exclude — параметр исключает каталоги, которые не нужно копировать (например, виртуальные файловые системы или временные каталоги).

-v — осуществляет подробный вывод.

--delete — удаляет файлы, которые не совпадают с целевой директорией

В случае аварии в системе, нужно будет переустановить систему.

Затем смонтировать раздел, где хранятся бекапы.

Чтобы восстановить файлы после аварии достаточно обратно скопировать их в корень системного раздела:

sudo rsync -aAXPv /mnt/backup/ /

sudo reboot

Авария

Чтобы протестировать восстановление системы из бэкап хранилища, рекомендуется развернуть виртуальную машину с целевой операционной системой.

Простейший способ имитировать аварию это переименовать файл init, чтобы система не запустилась:

sudo mv /sbin/init /sbin/init.bak

sudo reboot

Теперь нужно загрузиться с установочного диска с образом системы.

  • Перед этим изменить порядок boot в виртуальной машине, чтобы загрузка пошла с привода.
  • В оптический диск виртуальной машины нужно добавить установочный образ.

После загрузки установочного диска, нужно войти в тестовый режим или войти в консоль системы из диска.

  • Например, на серверных системах загрузчик может сразу начать установку и не будет предложено войти в тестовый режим без установки.
  • В таких случаях, нужно нажать ESC или одну из F — обычно это F1.

Когда откроется консоль системы загрузочного диска, нужно смонтировать два раздела:

  • Системный, который поврежден.
  • Бекап раздел, с рабочей копией системы.

lsblk — посмотреть названия разделов.

  • Допустим, это будут sda и sdb.

mkdir /mnt/recovery — создать папку для монтирования системного раздела.

mkdir /mnt/backup — создать папку для монтирования бекап раздела.

rsync -avP --delete /mnt/backup /mnt/recovery — скопировать все рабочие копии поверх поврежденных.

  • Если знать конкретную проблему, можно скопировать только нужную директорию
  • Параметр --delete удаляет файлы которых нет в бекапе.
  • Иначе новые файлы останутся, они могут быть причиной сбоя.

Далее нужно перезагрузить машину и удалить оптический привод.

  • Теперь система должна грузиться нормально.