Linux image backup restore

How to make a disk image and restore from it later?

I’m a new Linux user. I’ve reinstalled my Wubi from scratch at least ten times the last few weeks because while getting the system up and running (drivers, resolution, etc.) I’ve broken something (X, grub, unknowns) and I can’t get it back to work. Especially for a newbie like me, it’s easier (and much faster) to just reinstall the whole shebang than try to troubleshoot several layers of failed «fixing» attempts. Coming from Windows, I expect that there is some «disk image» utility that I can run to make a snapshot of my Linux install (and of the boot partition!!) before I meddle with stuff. Then, after I’ve foobar’ed my machine, I would somehow restore my machine back to that working snapshot. What’s the Linux equivalent of Windows disk imagers like Acronis True Image or Norton Ghost? Note: I found a similar question: Easy backup/restore of installed system?

Torben, under the Wubi folder (usually C:\UBUNTU, but may be some other drive & folder), you’ll find not only the loopback disk images created for your Ubuntu install, but also some other important files (like the Wubi loader). Sorry if it’s a guess, but I think it’s an educated one. 😉 Maybe (’cause I really have never tried — sorry — but wouldn’t hurt if you try it — I would) if you backup that folder while the system is in a good state, you can take Wubi back by replacing the good state over the non-functional one.

Please post this as an answer, because it sounds like a good way, specifically for Wubi installations! After my last fubar I installed a «real» Ubuntu, not Wubi, so this little trick will go into my drawer for next time I find myself in that spot.

You can just copy the files and the master boot record (freesoftwaremagazine.com/articles/…) and you’ll be fine.

Acronis True Image can capture an accurate backup while the system is running. All of the answers below except the one that mentions Ghost for linux fail because they don’t actually replace the functionality of Acronis and Ghost. There is a common belief that backups can be made on the system on which they are running. Although this is true, the backups created stand the risk of not restoring properly due to files being changed in the file-system as the backup is being made, making the backup inconsistent with itself.

12 Answers 12

With dd

dd is the low level utility that you can use to accomplish this task. It’s essentially a low level byte-for-byte copy utility. If you want the «UNIX» way of accomplishing this, then read on.

Читайте также:  Get boot time linux

All references to the file system and hard disks are located locally on the virtual /dev/ filesystem. There are a multitude of «nodes» in /dev/ that are interfaces to almost all the devices on your computer. For example, /dev/hda or /dev/sda would refer to the first hard drive in your system (hda vs sda depends on the hard drive), and /dev/hda1 would refer to the first partition on your hard drive.

The most straight forward way to make a raw image of your partitions is to use dd to dump the entire partition to a single file (remember the OS access the partitions /dev/sda1 through a file interface). Make sure you are on a larger partition or on a secondary drive and perform the following command:

dd if=/dev/hda1 of=./part1.image to backup (repeat for different partitions) dd if=./part1.image of=/dev/hda1 to restore. When you backup /dev/hda1 this partition should be unmounted (or mounted read-only) to avoid potencial corruption.

You can use the exact same command to back up the entire hard disk (replace hda1 with hda ). You can then use any compression program (gunzip, zip, bzip) to compress the file for storage. You can use this same technique to make rote copies of entire partitions to make clones of your computer.

There is one limitation though, when restoring the backup: The partition needs to be the same size (or bigger) as the partition you took the image from, so this limits your options in case of a restore. However, you can always expand the partition after you’ve restored the backup using gparted or parted . The picture gets even muddier when you are trying to restore entire disk copies. However, if you are restoring the backup to the same exact hard drive, you don’t need to worry about this at all.

However, if you want a «friendlier» utility à la Norton Ghost then this suggestion might not be for you.

Источник

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

Visitors have accessed this post 4460 times.

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

Предисловие

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

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

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

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

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

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

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

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

Читайте также:  Linux установка времени консоли

Шаг 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 chmod -R 777 # или chmod -R 755 chmod -R 777 /mnt/tmp # конец или chmod -R 755 /mnt/dev chmod -R 555 # в случае наличия 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 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 и развертку НЕ поверх установленной ранее системы.

Читайте также:  Linux fsck unexpected inconsistency run fsck manually

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

Шаг 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 ~ #

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

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/

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

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

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

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

Вместо $(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.

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

Источник

Оцените статью
Adblock
detector