Поддержка

Архивирование и восстановление файловой системы с помощью команды dd

Категория: Администрирование

В данной статье описан один из методов архивирования и восстановления файловой системы с помощью программы dd.
Целью задачи, заключается перенос корневой файловой системы с одного сервера на другой.
Используемая операционная система Centos 7.0

Просмотр структуры разбивки дисков с помощью программы lsblk, в консоли набираем без опций:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
sda      8:0    0 20,3G  0 disk 
├─sda1   8:1    0 18,3G  0 part /
└─sda2   8:2    0    2G  0 part [SWAP]

где видим, что корневая файловая система / находится в разделе sda1.

С помощью команды df -h смотрим размер файловой системы:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        18G  660M   17G   4% /
tmpfs           499M     0  499M   0% /dev/shm

где видим, что корневая файловая система / занимает 660MB дискового раздела /dev/sda1.

Примонтируем внешний диск или флешку достаточного объема (в нашем случае раздел sda1 занимает 18,3G):

$ mount /dev/sdb1 /mnt

где /dev/sdb1 - внешний носитель, а /mnt - точка монтирования.

Создание образа корневой файловой системы.

Теперь приступим к созданию образа корневой файловой системы / на внешний носитель:

$ dd if=/dev/sda1 of=/mnt/backup_os.img

Если на сервере достаточно места для сохранения образа корневой файловой системы,
то можно сохранить образ backup_os.img локально и после скопировать
на удаленный сервер.

Также с помощью любого архиватора, при создании образ раздела можно сжать:

$ dd if=/dev/sda1 | gzip -c > /mnt/backup_os.img

Статистика работы программы dd

По необходимости для наглядности, т.к. программа dd не отображает статистику
выполнения, можно выполнить следующие действия.

Залогинимся в дополнительную вторую консоль на сервере.
Если Вы на сервере находитесь локально, то нажимаем комбинацию клавиш Alt+Ctrl+F2.

После запуска программы dd находим номер процесса программы с помощью следующей
команды:

$ pgrep -l '^dd$'

Теперь вводим команду:

$ watch -n 5 kill -USR1 1092

где 1092 номер процесса dd

После переходим в консоль где запущенна программа dd:

где видим, что программа dd выводит каждые 5 секунд статистику копирования.

Восстановление файловой системы из образа

Устанавливаем внешний носитель на новый сервер и загружаемся под любым
дистрибутивом liveCD например - CentOS-7-x86_64-livecd

На новом сервере с помощью программы lsblk определяем разбивку диска:

где раздел sda1 - локальный диск, а раздел sdb1 - внешний диск.

В консоли входим в режим администратора (root):

$ sudo -i

Монтируем внешний носитель sdb1:

$ mount /dev/sdb1 /mnt

Теперь копируем образа корневой файловой системы / на локальный раздел sda1:

$ dd if=/mnt/backup_os.img of=/dev/sda1

Если использовалось сжатие образа, то выполняем следующую команду:

$ gunzip -c /mnt/backup_os.img | dd of=/dev/sda1

Отмонтируем внешний носитель sdb1:

$ umount /mnt

И примонтируем новый раздел sda1 для установки на него загрузчика GRUB:

$ mount /dev/sda1 /mnt

После устанавливаем загрузчик в смонтированный раздел /mnt/boot на диск /dev/sda:

$ grub-install --boot-directory=/mnt/boot /dev/sda