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

Thank you for reading this post, don't forget to subscribe!

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

Гайд пред­по­ла­га­ет, что / (корень) — ваш загру­зоч­ный, если вы исполь­зу­е­те раз­мет­ку дис­ка 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. Если мы выпол­ня­ем разар­хи­ва­цию не в гото­вую систе­му, вос­ста­но­вим дирек­то­рии, кото­рые мы исклю­чи­ли из архи­ва­ции, а так­же вос­ста­но­вим пра­виль­ные пра­ва досту­па к ним

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

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

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

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

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

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

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

Наш диск — vda.

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

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

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

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

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

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

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

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

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

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

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

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