Содержание

Резервное копирование системы

Система на MBR

Два раздела - загрузочный /boot и / на LVM. Сначала надо получить всю информацию:

fdisk -l
df -Th
pvdisplay
vgdisplay
lvdisplay
swapon -s # --show
ls -l /dev/mapper
# Нужно знать размеры разделов в байтах, это нужно при восстановлении
lvdisplay /dev/vg0/root --unit B |grep 'LV Size' |sed 's![^0-9]!!g'
# Бэкап /boot, в архиве будет папка boot, и там всё остальное
tar -czf /mnt/backup/boot01.bz2 /boot
# Посмотреть, что в архиве
tar -tvf /mnt/backup/boot01.bz2
 
# Копия раздела / на LVM
# Снапшот
lvcreate -s -n root-snap -L 512M /dev/vg0/root
mkdir /mnt/root
mount /dev/vg0/root-snap /mnt/root
# бэкап
dd if=/dev/vg0/root-snap conv=sync,noerror bs=64K |gzip -c > root.img.gz
 
# вариант с копированием по SSH
dd if=/dev/vg0/root-snap conv=sync,noerror bs=64K |gzip -c |ssh user@hostname "dd of=root.img.gz bs=64k"
 
# вариант с netcat
dd if=/dev/vg0/root-snap conv=sync,noerror bs=64K |gzip -c |nc 192.168.1.1 3333
# при этом на удалённой машине должно быть запущено
nc -l -p 3333 > hda.img.gz
 
# вариант с SMB
smbmount //192.168.1.100/shared /mnt/remoteshare -o username=имяпользователя,password=пароль
# дальше бэкап как на локальную машину

Система на GPT

Дано - раздел ESP (/boot/efi), /boot, /.
Резервная копия раздела ESP делается точно так же, как и /boot.

tar czf /path/to/backup/ESP_backup.tar.gz /boot/efi

Вероятно, можно делать копию просто раздела /boot вместе с ESP и восстанавливать их вместе после монтирования разделов в соответствующие каталоги на новой системе.

Восстановление системы

Система на MBR

# Разметить новый системный диск как старый, размер / сделать точно такого же размера, что и старый
lvcreate -n root -L 7634762534B vg0
# вартиант - взять значение из файла
lvcreate -n root -L $(cat /mnt/backup/rootsize)B vg0
 
# Восстановление локально
zcat /mnt/backup/root.img.gz | dd of=/dev/vg0/root conv=sync,noerror bs=64K
# с удалённой машины
dd if=root.img.gz | ssh user@deadhost "zcat | dd of=/dev/vg0/root bs=64k"
# в данном случае не следует использовать опцию conv=sync,noerror в опциях dd - 
# если вы всё-таки включите эту опцию, в большинстве случаев это исказит записываемые данные
# (это заставляет dd не дожидаться данных, приходящих по сети, если целый блок недоступен).
 
# Восстановить /boot
mount /dev/sda1 /mnt/root/boot
tar xjf /mnt/backup/boot01.bz2 -C /mnt/root/boot --strip=1
 
# Восстановление GRUB
mount -t proc none /mnt/root/proc
mount --rbind /sys /mnt/root/sys
mount --rbind /dev /mnt/root/dev
chroot /mnt/root /bin/bash
grub-install /dev/sda
update-grub

http://mydebianblog.blogspot.com/2008/03/dd.html
https://access.redhat.com/solutions/26045

Система на GPT

# Восстановление GRUB
sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub  

https://askubuntu.com/questions/831216/how-can-i-reinstall-grub-to-the-efi-partition
https://superuser.com/questions/111152/whats-the-proper-way-to-prepare-chroot-to-recover-a-broken-linux-installation