Як зробити повний бекап диска linux

Стандартна ситуація - на сервері почав вмирати диск, з'явилися перші біди, система насилу встає після ребута. Але встановлювати заново все заново дуже довго, та й навіщо? Набагато простіше зробити повний клон диска або зіпсованого розділу. І в цьому допоможе dd. Програма dd ідеально підійде там де потрібно зробити точну копію розділу / Слайса диска. Вона сектор за сектором копіює дані з джерела (параметр if) в пункт призначення, якщо так можна висловитися (параметр of). Щоб зрозуміти як просто користуватися програмою давайте зробимо це на практиці.

# Dd if = / dev / hda of = / dev / hdb conv = noerror, sync

Команда вище зробить точну копію розділу / dev / hda в розділі / dev / hdb. Тобто ми «отзеркаліровалі» / dev / hda. Після conv = ми можемо вказати ряд параметрів:

# Dd if = / dev / hda3 of = / var / backup / hda3.img

Цією командою ми записали розділ / dev / hda3 в бінарний файл hda3.img. Тепер його можна перенести на інший сервер і розгорнути в точну копію / dev / hda3. Тільки врахуйте один мінус dd - програма копіює дані по секторах і їй все одно є на цій ділянці диска дані чи ні, буде відтворена точна копія і розмір буде точно такий же! Тобто якщо розділ / dev / hda3 має обсяг в 5 Гб а зайнятий на ньому тільки 1 то файл hda3.img буде важити 5 Гб. Відновити розділ з образу також просто як і створити:

# Dd if = / var / backup / hda3.img of = / dev / hda3

Ну і наостанок зробимо копію нашої MBR (Master Boot Record). MBR - це перший сектор на жорсткому диску містить таблицю розділів і запис, з якого розділу завантажуватися. Іноді потрібно відновити MBR з резерву.

# Dd if = / dev / hda1 of = / var / backup / mbr.dump bs = 512 count = 1

Команді dd ми просто передали параметри bs і count, цим вказавши який обсяг даних ми хочемо скопіювати.

* Bs - block size, розміру блоку який ми хочемо скопіювати
* Count - кількість bs

Адже ми вже знаємо, що MBR знаходиться в перших 512 байтах (1-й сектор). Тепер відновимо MBR з резервної копії

# Dd if = / var / backup / mbr.dump of = / dev / hda1 bs = 512 count = 1

Розмір сектора можна дізнатися так:

# Fdisk -l / dev / hda1