Бэкап системы через tar

Материал из darklurker wiki
Перейти к: навигация, поиск

Создание бэкапа

Грузимся с live-флэшки, можно использовать любой лайв дистрибутив Linux.

Переключаемся на root:

sudo su

Монтируем раздел, который будем архивировать, чтобы случайно не наломать дров, монтируем только для чтения. Посмотреть все свои разделы можно при помощи команд ls /dev | grep sd или df -l

mount -o ro /dev/sda1 /mnt 

Наша флэшка уже примонтирована, но в режиме только чтения, нужно перемонтировать для чтения-записи, чтобы писать туда бэкап.

mount -o remount,rw /dev/sdb1 /lib/live/mount/medium

Создаем архив:

tar -cvzpf /lib/live/mount/medium/backupYYYYMMDD.tgz /mnt/

Здесь у нас параметры:

c — создать архив, 
 v — выводить информацию о процессе, 
 z — использовать сжатие gzip, 
 p — сохраняем данные о владельцах и правах доступа, 
 f — пишем архив в файл, путь к файлу,
 /mnt/ — каталог, который архивируем.

Дожидаемся окончания архивации, может занять длительное время.

Отмонтируем диск:

umount /mnt

Перезагружаемся

reboot

Архив можно переносить в любое другое место, например на облачное хранилище.

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

Грузимся с live-флэшки

Переключаемся на root:

sudo su

Размечаем диск и создаем файловые системы

Размечаем диск. Если нужен графический интерфей используем cfdisk.

cfdisk

Если нет, можно воспользоваться fdisk:

fdisk /dev/sda/


Cоздаем файловые системы на разделах.


Распаковываем бэкап

Монтируем отформатированный раздел

mount /dev/sda1 /mnt

Распаковываем архив прямо с флэшки

tar --same-owner -xvpf /lib/live/mount/medium/backupYYYYMMDD.tgz -C /mnt/

Здесь:

--same-owner — сохраняет владельцев у распаковываемых файлов, 
x — извлекаем из архива, 
v — выводить информацию о процессе, 
p — сохраняем права доступа, 
f — указываем файл, который распаковываем, 
C — распаковываем в категорию.


Создаем MBR на новом диске

Чтобы корректно создать загрузочную запись, монтируем рабочие каталоги к нашему будущему root-каталогу, у меня это /mnt. Каталоги /dev и /proc сейчас используются live-системой, используем параметр bind, чтобы они были доступны сразу в двух местах:

mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc

Переключаемся на новую систему используя chroot:

chroot /mnt

Делаем swap-раздел для новой системы:

mkswap /dev/sda2 

Подключаем его же:

swapon /dev/sda2

Чтобы grub работал, нужно указать ему правильные UUID разделов в fstab, сейчас там прописаны разделы предыдущей системы:

nano /etc/fstab

Открываем второй терминал (Alt+F2) под root:

sudo su

Вызываем:

blkid

И видим текущие UUID разделов.

Вручную переписываем их в fstab переключаясь между Alt+F1 и Alt+F2. Да, муторно, но попытки копировать занимали у меня больше времени, чем переписывание. Сохраняем fstab.

Устанавливаем grub2. У меня один физический диск, поэтому ставим его на sda:

grub-install /dev/sda

На чистый диск должно встать без ошибок. Обновляем информацию из fstab:

update-grub

Возвращаемся в Live-систему:

exit

Размонтируем все каталоги:

umount /mnt/dev
umount /mnt/proc
umount /mnt

Если вылазят процессы, которые используют эти каталоги, убиваем их используя fuser.

Все, поехали. Грузимся с жесткого диска:

reboot

Здесь статья должна была закончиться, но у меня возникли проблемы с подключением к интернету. Сервер видит сеть, видит компьютеры в ней, но в интернет не ходит… а это как бы важно для телефонии.

Тестирование и устранение неполадок.

ifconfig -a

Показывет интерфейсы eth1 и lo, гугление сказало, что gateway можно прописать только подключению eth0, остальные рассчитаны только на работу внутри сети.

Похоже, отсутствие eth0 вызвано способом переноса системы. Находим файл, который отвечает за нумерацию интерфейсов, смотрим туда:

nano /etc/udev/rules.d/70-persistent-net.rules

Действительно, там два активных интерфейса, определенных MAC’ами. Комментируем первый, второму прописываем eth0.

Перезапуск /etс/init.d/networking не помог, поэтому перезагружаемся:


Статья взята с habr.com