Visitors have accessed this post 11132 times.

Резервное копирование и восстановление ОС Linux

3
0
11132
28 августа 2020 11:42
Автор: Rebrain Me
Linux

Visitors have accessed this post 11132 times.

Автор — Максим Рязанов

Предисловие

Резервное копирование и восстановление ОС — базовый навык, которым должен обладать любой системный администратор. Поэтому давайте на примере практической задачи разберем, как это сделать в ОС Linux.

Допустим, что у нас есть ОС, все данные которой хранятся в одном разделе. Эту ОС необходимо мигрировать на другой сервер.

Гайд предполагает, что / (корень) — ваш загрузочный, если вы используете разметку диска MBR.

Из доступных средств у нас — только LiveCD/DVD/USB для резервного копирования и развертки системы. Системы резервного копирования отсутствуют.

Пробуем.

Резервное копирование

Начнем мы с резервного копирования.

Шаг 0. Загружаемся с Live системы.

Шаг 1. Монтируем накопитель, на который будет производиться резервное копирование системы (директория монтирования ФС накопителя резервных копий в примере будет /media/backupdisk1, система смонтирована в /mnt).

Шаг 2. Создаем архив с резервной копией.

Команда архивации системы

tar cpJvf /media/backupdisk1/our_backup.xz --selinux --exclude /mnt/dev --exclude /mnt/proc --exclude /mnt/sys --exclude /mnt --exclude /media --exclude /mnt/lost+found --exclude /mnt/tmp /mnt/

Описание опций tar:

  • с — create — создать;
  • p — сохраняем владельцев файлов и права к файлам;
  • J — используем компрессию xz;
  • v — verbose, чтобы видеть, что происходит во время архивации;
  • f — указываем файл, куда мы хотим сохранить копию/архив;
  • — -exclude — исключить из архивации директории и файлы. Из архива исключаются каталоги, структура которых создается при загрузке операционной системы, в связи с чем нет смысла добавлять их в архив.
  • — -selinux — сохраняем контексты SElinux, примененные к файлам. Используйте только при наличии в системе SElinux и его поддержки tar (как правило, присутствует в актуальных системах)!

Шаг 3. Демонтируем раздел накопителя, на который архивировали систему.

Восстановление из резервной копии

Шаг 0. Загружаемся с Live системы.

Шаг 1. Неплохо бы для начала развернуть базовую систему на диске для восстанавливаемой ОС.

Или создаем разметку диска и разделы на нем.

Шаг 2. Монтируем накопитель с резервной копией (в нашем примере — /media/backupdisk1, а корень установленной ОС примонтирован в /mnt).

Шаг 3. Распаковываем копию.

Команда разархивации

tar -xvpfJ --selinux /media/backupdisk1/our-backup.xz -C /mnt/

Описание опций tar:

  • x — extract, вытащить данные из архива;
  • v — verbose, чтобы видеть, что происходит во время разархивации;
  • p — сохраняем владельцев файлов и права к файлам;
  • f — указываем, из какого файла мы хотим восстановить копию/архив;
  • J — указываем при распаковке, что у нас используется компрессия xz;
  • -C — create. Восстановить структуру каталогов, воссоздав отсутствующие.
  • — -selinux — сохраняем контексты SElinux, примененные к файлам. Использовать только при наличии в системе SElinux и его поддержки tar!

Шаг 4. Если мы выполняем разархивацию не в готовую систему, восстановим директории, которые мы исключили из архивации, а также восстановим правильные права доступа к ним.

mkdir {/mnt/dev,/mnt/proc,/mnt/sys,/mnt/mnt,/mnt/media,/mnt/tmp,/mnt/lost+found}
chmod -R 777 {/mnt/tmp,/mnt/mnt,/mnt/media}
# или
chmod -R 755 {/mnt/mnt,/mnt/media}
chmod -R 777 /mnt/tmp
# конец или
chmod -R 755 /mnt/dev
chmod -R 555 {/mnt/proc,/mnt/sys}
# в случае наличия SElinux в системе укажем созданным директориям их контексты:
chcon -R system_u:object_r:boot_t:s0 /mnt/boot
chcon -R system_u:object_r:device_t:s0 /mnt/dev
chcon -R system_u:object_r:proc_t:s0 /mnt/proc
chcon -R system_u:object_r:sysfs_t:s0 /mnt/sys
chcon -R system_u:object_r:mnt_t:s0 {/mnt/media,/mnt/mnt}
chcon -R system_u:object_r:tmp_t:s0 /mnt/tmp
chcon -R system_u:object_r:lost_found_t:s0 /mnt/lost+found
# или для восстановления контекстов перед загрузкой системы автоматически создайте в корне файл .autorelabel
touch /mnt/.autorelabel # может занять очень много времени при наличии большого количества мелких файлов, но надежно и корректно расставит контексты перед загрузкой системы!

Обратите внимание! Для работы с SElinux при восстановлении ваша live система и утилита tar в ее составе должны поддерживать SElinux.

Восстановление загрузчика для MBR

Обратите внимание на этот пункт, если используете разметку диска MBR и развертку НЕ поверх установленной ранее системы.

Для проверки работоспособности системы и установки загрузчика необходимо выполнить следующие операции:

Шаг 0. Монтируем уже рабочие служебные каталоги из live системы в восстановленную.

mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt # CHangeROOT - меняем корневой каталог. Теперь корнем будет корень восстановленной системы

Вызов bind mount присоединяет (частично) только одну файловую систему, а не возможные дополнительные монтирования в директории внутри нее. Вся файловая иерархия, включая дополнительные монтирования внутри монтируемой ФС, остается на своем месте.

Далее проверим, на каком диске у нас система:

root@rpulse ~ # lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 253:0 0 25G 0 disk
└─vda1 253:1 0 25G 0 part /
root@rpulse ~ #

Наш диск — vda.

Установим туда загрузчик, потом сконфигурируем:

grub-install /dev/vda # установка
# далее все зависит от того, какой версии grub у вас
# не используйте следующие две команды поочередно, проверьте доступность первой!
update-grub # один из вариантов конфигурации
grub-mkconfig -o /boot/grub/grub.cfg # другой

Далее поправим наш fstab. Выполним команду blkid для идентификации UUID разделов. И после правим fstab.

root@rpulse ~ /dev/vda1: UUID="0ae7ab5c-e4e2-4641-87ad-d02b494b6553" TYPE="ext4"
# потом указываем их в fstab
root@rpulse ~ nano /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Jan 5 21:10:34 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=0ae7ab5c-e4e2-4641-87ad-d02b494b6553 / ext4 defaults 1 1
/swapfile swap swap sw 0 0

Или мы можем использовать вместо UUID — лейблы (labels). Помните, что в отличие от UUID, labels могут быть не уникальны.

root@rpulse ~ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 253:0 0 25G 0 disk
└─vda1 253:1 0 25G 0 part /
root@rpulse ~ nano /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Jan 5 21:10:34 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/vda1 / ext4 defaults 1 1
/swapfile swap swap sw 0 0

Теперь демонтируем разделы из live.

# выходим из chroot
root@rpulse ~ exit # или CTRL+d
# демонтируем разделы из live
root@rpulse ~ umount /mnt/{dev,proc,sys}

А потом и раздел разархивированной системы и носителя с бэкапом.

Восстановление загрузчика UEFI

Обратите внимание на этот пункт, если используете разметку диска GPT и UEFI loader.

В данном примере будет использоваться конфигурация systemd-boot.

Монтируем esp в /mnt/boot.

Поправим esp/loader/entries/$(osconfigname).conf.

Вместо $(osconfigname) подставьте имя вашего конфига, указанного в esp/loader/loader.conf.

Файл esp/loader/entries/$(osconfigname).conf

root@rpulse ~ blkid
/dev/vda1: UUID="0ae7ab5c-e4e2-4641-87ad-d02b494b6553" TYPE="ext4"
/dev/vda2: UUID="14420948-2cea-4de7-b042-40f67c618660" TYPE="vfat"
root@rpulse ~ nano esp/loader/entries/$(osconfigname).conf
esp/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=PARTUUID=14420948-2cea-4de7-b042-40f67c618660 rw

Заключение

Если вы повторили путь, описанный в статье, полностью — ура, теперь вы умеете делать резервное копирование и восстановливать ОС Linux. Если у вас возникли вопросы на каком-либо этапе, задавайте их в комментариях к статье, обязательно подскажем.

От редакции

Если вам интересно посещать бесплатные онлайн-мероприятия по DevOps, Kubernetes, Docker, GitlabCI и др. и задавать вопросы в режиме реального времени, подключайтесь к каналу DevOps by REBRAIN

*Анонсы мероприятий каждую неделю

Практикумы для специалистов по инфраструктуре и разработчиков — https://rebrainme.com.
Наш Youtube-канал — https://www.youtube.com/channel/UC6uIx64IFKMVmj12gKtSgBQ.

Агентство Fevlake, проектируем и поддерживаем IT-инфраструктуры с 2012 года — https://fevlake.com.

Комментарии (3)
Введено символов из возможных
Не отвечать

Вам также может понравится

Книги и руководства для администратора Linux
array(1) { [0]=> object(WP_Term)#11542 (16) { ["term_id"]=> int(6) ["name"]=> string(5) "Linux" ["slug"]=> string(5) "linux" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(6) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(28) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(6) ["category_count"]=> int(28) ["category_description"]=> string(0) "" ["cat_name"]=> string(5) "Linux" ["category_nicename"]=> string(5) "linux" ["category_parent"]=> int(0) } } Linux

Не спешите разочарованно пролистывать. Да, интернет полон подобных подборок. Но наш вариант – 100% рабочий, потому что мы собрали в нем только те книги, которые рекомендуют опытные специалисты, не первый год работающие с операционными системами на базе Linux.

Наши эксперты:

Дмитрий Дунаев – ведущий DevOps-инженер международной компании...

6
0
26 мая 2020
Базовая работа с nix. Каналы
array(1) { [0]=> object(WP_Term)#988 (16) { ["term_id"]=> int(6) ["name"]=> string(5) "Linux" ["slug"]=> string(5) "linux" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(6) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(28) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(6) ["category_count"]=> int(28) ["category_description"]=> string(0) "" ["cat_name"]=> string(5) "Linux" ["category_nicename"]=> string(5) "linux" ["category_parent"]=> int(0) } } Linux

Автор — Юрий Изоркин

В предыдущей статье мы познакомились с ОС NixOS. Теперь рассмотрим возможности пакетного менеджера nix. Источником обновления пакетов для менеджера nix служат каналы.

Применение каналов позволяет:

зафиксировать ПО на определенной версии;
использовать устаревшее ПО, например, если какие-либо скрипты не...

8
2
27 ноября 2020
Руководство по DevOps для начинающих: как попасть в IT-индустрию
array(1) { [0]=> object(WP_Term)#11543 (16) { ["term_id"]=> int(7) ["name"]=> string(6) "DevOps" ["slug"]=> string(6) "devops" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(7) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(19) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(7) ["category_count"]=> int(19) ["category_description"]=> string(0) "" ["cat_name"]=> string(6) "DevOps" ["category_nicename"]=> string(6) "devops" ["category_parent"]=> int(0) } } DevOps

Перевод статьи — https://medium.com/slalom-build/beginners-guid-to-devops-how-to-make-it-into-the-industry-c1652d59807

Если вы только начинаете карьеру в этой отрасли или хотите перейти в DevOps из другой профессии, первое, что вы узнаете, это то, что DevOps — это методология, а не должность. DevOps нацелен на преодоление разрыва между задачами...

8
0
25 декабря 2020