Dd копіювання. Створення завантажувальної флешки для інсталяції Windows за допомогою програми Rufus. Передача файлу образу диска на інший комп'ютер

30.03.2020 Безпека

dd- Проста утиліта, яка входить до складу більшості Unix-подібних операційних систем - Linux, FreeBSD, Solaris і т.д.
Її призначення - читання даних з одного пристрою або файлу та запис в інший.

ddможна ефективно використовувати для створення образу жорсткого диска, при цьому обійшовшись без комерційних утиліт на кшталт Acronis True Image або Norton Ghost.

Припустимо, що у нас є два диски:

  • /dev/sda - диск, образ якого необхідно створити;
  • /dev/sdb — диск, на який буде записаний образ.

За потреби потрібно підставити власні значення.

Насамперед необхідно завантажитися з будь-якого доступного Live-CD диска, що має утиліту dd, і увійти в командний рядокяк суперкористувач. Створюємо точку монтування щодо резервного копіювання.

mkdir /mnt/backup

Монтуємо жорсткий дискякий необхідно зберегти образ.

Створення образу жорсткого диска

dd if=/dev/sda of=/mnt/backup/sda.img bs=8M conv=sync,noerror

  • if=/dev/sda - копіюємо весь жорсткий диск sda;
  • of=/mnt/backup/sda.img - копіюємо в /mnt/backup/sda.img;
  • bs = 8M - задаємо розмір кешу жорсткого диска для прискорення процедури копіювання (інакше дані будуть скидатися малими порціями по 512 байт);
  • conv=sync,noerror — вказуємо dd необхідність копіювання на кшталт бит-в-бит з ігноруванням помилок читання.

Для скорочення розміру образу жорсткогодиска його можна стиснути будь-яким архіватором.

dd if = / dev / sda bs = 8M conv = sync, noerror | gzip -c > /mnt/backup/sda.img

Відновлення образу жорсткого диска

Для відновлення образу жорсткого диска необхідно виконати процедуру зворотну процедурі створення цього образу.

dd if=/mnt/backup/sda.img of=/dev/sda bs=8M conv=sync,noerror

При використанні стиснення паралельно необхідно розархівувати образ.

gunzip -c /mnt/backup/sda.img | dd of = / dev / sda conv = sync, noerror bs = 8M

Міграція системи на інший жорсткий диск

Для міграції всієї системи на інший жорсткий диск необхідно, як ціль призначення задати розташування нового диска.

dd if=/dev/sda of=/dev/sdb bs=8M conv=sync,noerror

Після чого при необхідності встановлюємо завантаження з даного жорсткогодиска. За умови, що новий жорсткийдиск більший за старий, на ньому залишиться нерозмічена область. Її слід розмітити та відформатувати відповідно до наявних вимог.

Статистика копіювання в dd

Головний мінус у dd – це відсутність наочного уявленнястатистика виконання процедури копіювання. Однак цей мінус можна легко оминути. Достатньо підключитися до іншого терміналу.

Визначити номер процесу, під яким запущено dd.

Періодично посилати даному процесукоманду kill-USR1 номер_процесу_dd.

watch -n 5 kill -USR1 number_process_dd

  • watch -n 5 - виконувати команду кожні 5 секунд;
  • kill -USR1 number_process_dd — показати статистику копіювання.

Мінуси використання dd для створення образів диска

У всього є плюси та мінуси. dd є безкоштовним і дуже гнучким інструментом, проте за його допомогою можна зробити лише повне копіювання тома. Спеціальні програми вміють копіювати лише дані, які зберігаються на диску.

Таким чином, обсяг образу диска, створений за допомогою dd дорівнюватиме обсягу самого диска - незалежно, скільки на диску даних.

Для створення образу жорсткого диска не обов'язково використовувати утиліти на кшталт Acronis True Image або Norton Ghost, досить простий утиліти dd, яка входить до складу більшості Unix-подібних операційних систем (Linux, FreeBSD, Solaris і т.д.) У статті розглянуто простий спосіб створення резервної копії образу жорсткого диска за допомогою dd. Насамперед необхідно підготуватися до резервного копіювання. У цій статті введемо такі позначення:

  • /dev/sda – диск, образ якого необхідно створити;
  • /dev/sdb - диск, на який буде записаний образ.

За потреби потрібно підставити власні значення.

Підготовка до створення образу жорсткого диска

Насамперед необхідно завантажитися з будь-якого доступного Live-CD диска, що має утиліту dd, і увійти в командний рядок як суперкористувач. Створюємо точку монтування щодо резервного копіювання.

mkdir /mnt/backup

Монтуємо жорсткий диск, на який необхідно зберегти образ.

Створення образу жорсткого диска

dd if=/dev/sda of=/mnt/backup/sda.img bs=8M conv=sync,noerror

  • if=/dev/sda – копіюємо весь жорсткий диск sda;
  • of=/mnt/backup/sda.img - копіюємо в /mnt/backup/sda.img;
  • bs=8M - задаємо розмір кешу жорсткого диска для прискорення процедури копіювання (інакше дані будуть скидатися малими порціями по 512 байт);
  • conv=sync,noerror - вказуємо dd необхідність копіювання на кшталт бит-в-бит з ігноруванням помилок читання.

Для зменшення розміру образу жорсткого диска його можна стиснути будь-яким архіватором.

dd if = / dev / sda bs = 8M conv = sync, noerror | gzip -c > /mnt/backup/sda.img

Відновлення образу жорсткого диска

Для відновлення образу жорсткого диска необхідно виконати процедуру зворотну процедурі створення цього образу.

dd if=/mnt/backup/sda.img of=/dev/sda bs=8M conv=sync,noerror

При використанні стиснення паралельно необхідно розархівувати образ.

gunzip -c /mnt/backup/sda.img | dd of = / dev / sda conv = sync, noerror bs = 8M

Міграція системи на інший жорсткий диск

Для міграції всієї системи на інший жорсткий диск необхідно, як ціль призначення задати розташування нового диска.

dd if=/dev/sda of=/dev/sdb bs=8M conv=sync,noerror

Після чого за потреби встановлюємо завантаження з цього жорсткого диска. За умови, що новий жорсткий диск більший за старий, на ньому залишиться нерозмічена область. Її слід розмітити та відформатувати відповідно до наявних вимог.

Статистика копіювання в dd

Головний мінус в dd - відсутність наочного подання статистики виконання процедури копіювання. Однак цей мінус можна легко оминути. Достатньо підключитися до іншого терміналу.

Визначити номер процесу, під яким запущено dd.

Періодично посилати цьому процесу команду kill-USR1 номер_процесу_dd.

watch -n 5 kill -USR1 number_process_dd

  • watch -n 5 - виконувати команду кожні 5 секунд;
  • kill -USR1 number_process_dd - показати статистику копіювання.

Це параметр, що визначає тип і застосування створюваного завантажувального диска на USB-носії.

В утиліті Rufus доступні чотири методи завантаження, один з яких слід вибрати зі списку. У списку вони позначені як MS-DOS, FreeDOS, ISO-образ, DD-образ. Перші два доступні тільки для комп'ютерів і пристроїв, що мають BIOS – їх потрібно вибрати зі списку, що випадає, в рядку «Схема розділу і тип системного інтерфейсу».

Такий метод завантаження у Rufus створює завантажувальну флешкуіз операційною системою MS-DOS. Це дискова операційна система, яка може знадобитися у таких випадках:

  • для оновлення та перепрошивки BIOS, цю процедуру безпечніше виконувати з-під DOS;
  • для діагностики та тестування комп'ютера чи ноутбука, оскільки більшість утиліт для глибокої діагностики оперативної пам'яті чи жорсткого диска працюють лише під DOS;
  • якщо необхідно отримати доступ до файлів на жорсткому диску за відсутності або зіпсування операційній системі;
  • при використанні старих консольних програм (наприклад, для програмування периферійних пристроїв), які під Windows можуть працювати некоректно;
  • якщо потрібний доступ до файлової системи жорстких дисківкомп'ютера або ноутбука на нижчому рівні.

FreeDOS – операційна система, аналогічна MS-DOS, яка розповсюджується безкоштовно на умовах вільної ліцензії та доступна у Rufus. Також дозволяє оновити BIOS, полагодити жорсткий диск за допомогою спеціальних програм, тестувати оперативну пам'ять(RAM) та інше. Дії здійснюються спеціальними командами з командного рядка.

Метод завантаження ISO-образ слід вибирати для перенесення готового ISO-образу завантажувального диска USB-накопичувач. ISO-образ слід створити попередньо, скориставшись призначеними для цього програмами. Цей метод можна використовувати в операційних системах Windows, Linux та інших. Отриманий завантажувальний дискможна потім використовувати для аварійного відновленняопераційної системи та засобів діагностики жорстких дисків.

Метод завантаження DD-образ у Rufus

Використовується для створення завантажувальних дисків із образів, створених в операційній системі Linuxпрограмою DD. Принципова відмінність цього завантаження у цьому, що програма DD насправді створює образ, а робить побитовую копію заданої директорії.

Програма Rufus не є чимось унікальним у галузі створення завантажувальних носіїв, головною її перевагою є простота користування.

Команда ddпризначена для залучення однойменної утиліти, призначеної для низькорівневого копіювання та перетворення даних. Її назва розшифровується як data duplicator або дуплікатор даних. Ця утилітавикористовується головним чином для запису образів інсталяційних дисків дистрибутивів Linux на флеш-накопичувачі та створення образів оптичних носіївПроте коло її функцій не обмежується перерахованими операціями. Наприклад, ddможе використовуватися для простого копіюванняфайлів або зміни регістру символів текстових рядків. Взагалі, розглянута утиліта є певною мірою унікальною, адже вона передбачає використання власного форматупередачі параметрів.

Стандартний синтаксис команди виглядає так:

$dd if=<имя исходного файла>of=<имя целевого файла>[параметри]

Неважко помітити, що для передачі параметрів утиліті використовується формат запису <имя параметра>=<значение параметра> . Утиліта може читати вихідні дані зі стандартного потоку введення та виводити результуючі дані за допомогою стандартного потоку виводу у разі відмови від використання параметрів ifі of, але в переважній більшості випадків ці параметри є необхідними для вказівки імен файлів з відповідними даними. Утиліта читає та записує дані блоками, причому розмір блоку може змінюватись за допомогою параметра bs(за замовчуванням використовуються блоки розміром 512 Кб). Існують окремі параметри для завдання розмірів блоків, що читаються і записуються, а саме, ibsі obs. Кількість блоків, що читаються, може обмежуватися за допомогою параметра count. Для пропуску заданої кількості блоків вихідного файлу можна використовувати параметр skipцільового файлу - параметр seek. Для вказівки прапорів читання та запису через кому може використовуватися параметр iflag

  • append- Активація режиму дописування даних у цільовий файл.
  • direct- режим обробки даних в обхід кешу файлових систем(Підвищує швидкість).
  • dsync- режим запису даних із синхронізацією (підвищує надійність).
  • sync- режим запису даних та метаданих із синхронізацією (підвищує надійність).
  • fullblock- Читання лише повних блоків.
  • nonblock- активація режиму неблокованого введення/виводу (підвищує швидкість).
  • noatime- Вимкнення механізму оновлення міток часу елементів файлової системи (підвищує швидкість).
  • nofollow- Відмова від переходу за символьними посиланнями.

Нарешті, для вказівки прапорів перетворення через кому може використовуватися параметр conv. Найчастіше використовуваними прапорами є:

  • lcase- Переведення символів рядка в кодуванні ASCII в нижній регістр.
  • ucase- Переведення символів рядка в кодуванні ASCII у верхній регістр.
  • nocreat- Виведення повідомлення про помилку у разі відсутності цільового файлу.
  • excl- Виведення повідомлення про помилку у разі існування цільового файлу.
  • notrunc- Відмова від урізання цільового файлу.
  • swab- Зміна місць кожних двох байтів з вихідного файлу.
  • noerror- Продовження роботи навіть у разі виникнення помилок.
  • fdatasync- активація режиму запису даних до цільового файлу перед завершенням роботи утиліти.
  • fsync- активація режиму запису даних та метаданих у цільовий файл перед завершенням роботи утиліти.

Приклади використання

Створення резервної копії даних дискового накопичувача

Припустимо, ми використовуємо жорсткий диск, представлений файлом пристрою /dev/sda, і нам потрібно створити посекторну резервну копію всіх розміщених на ньому даних, зберігши її у файлі в розділі знімного диска з інтерфейсом USB, представленому файлом пристрою /dev/sdb1та змонтованим у директорію /mnt/sdb1. Зазвичай, такі файли резервних копій називаються дампами або образами дисків. Наш файл образу диска носитиме ім'я backup.img. Це команда, за допомогою якої її можна створити:

# dd if=/dev/sda of=/mnt/sdb1/backup.img

У цій команді за допомогою параметра ifзадається шлях до вихідний файл, а за допомогою параметра of- До цільового.

Відновлення даних із резервної копії

Для відновлення даних із створеної резервної копії слід завантажити систему з інсталяційного дискадистрибутива та виконати зворотну команду.

# dd if=/mnt/sdb1/backup1.img of=/dev/sda

Попередження:при виконанні цієї команди буде перезаписано весь вміст вказаного жорсткого диска, тому варто відноситися до подібних команд з особливою увагою.

Клонування жорсткого диска

Перед клонуванням жорсткого диска ви повинні переконатися, що у вас є жорсткий диск того ж об'єму, що й вихідний. Ця ж операція може виконуватися і у разі флеш-накопичувачів з інтерфейсом USB аналогічних обсягів. Припустимо, що вихідний флеш-накопичувач представлений файлом пристрою /dev/sdb, а цільовий - файлом пристрою /dev/sdc. У цьому випадку ви можете клонувати вихідний накопичувач за допомогою наступної команди:

# dd if=/dev/sdb of=/dev/sdc

Навіть якщо цільовий накопичувач має більший обсяг, вам буде доступний лише обсяг вихідного флеш-накопичувача, збережений на рівні файлової системи.

Передача файлу образу диска на інший комп'ютер

Для передачі файлу образу диска через мережу на інший комп'ютер з ім'ям targetможе використовуватися наступна команда:

# dd if = / dev / sdb | ssh root@target "(cat >backup.img)"

Стиснення файлу образу диска

Для того щоб резервна копіярозділу диска займала менше місця, ви можете стиснути її за допомогою компресора, такого, як bzip2 :

# dd if = / dev / sdb | bzip2 backup.img.bz2

Створення оптичного диска формату ISO

Для створення образу оптичного диска CD, DVD або BD досить побічно прочитати його вміст і зберегти цей вміст у файлі:

# dd if=/dev/sr0 of=image.iso bs=2048

Збереження файлу з пошкодженого носія або створення такого носія.

Якщо ваш улюблений фільм або музичний трек більше не читається через пошкодження носія, ви можете спробувати його скопіювати за допомогою утиліти ddігноруючи пошкоджені блоки:

# dd if=movie.avi of=/home/alex/movie.avi conv=noerror,sync

Ви також можете створити файл образу пошкодженого носія та спробувати витягти файли з нього:

# dd if=/dev/sdb of=/home/alex/movie.iso bs=2048 conv=noerror,sync

Запис образа диска на флеш-накопичувач з інтерфейсом USB

Для установки дистрибутива Linuxз флеш-накопичувача з інтерфейсом USB необхідно записати на цей флеш-накопичувач образ інсталяційного диска формату ISO. Для цієї мети може використовуватися аналогічна команда:

# dd if=/home/alex/Fedora-Workstation-Live-x86_64-26_Alpha-1.7.iso of=/dev/sdc

Важливо пам'ятати, що навіть у разі наявності на флеш-накопичувачі розділів слід вказувати не шлях до файлу пристрою одного з розділів, а шлях до файлу пристрою накопичувача, в нашому випадку це /dev/sdc.

Аналіз вмісту жорсткого диска

Утиліта ddє чудовим інструментом для дослідження файлових систем. Для аналізу вмісту жорсткого диска з виведенням даних з окремих блоків, у нашому випадку, блоку 1001 на розділі, представленому файлом пристрою /dev/sdc1, достатньо використати наступну команду:

# dd if=/dev/sdc1 count=1 skip=1000

Для того, щоб побачити перші 40 байт вашого жорсткого диска у шістнадцятковому поданні слід використовувати команду:

# dd if = / dev / sda bs = 1 count = 40 | hexdump -C

У цьому випадку за допомогою параметра bsзадається розмір блоку диска.

Тестування продуктивності дискових накопичувачів

Для тестування продуктивності дискового накопичувача, представленого, наприклад, файлом пристрою /dev/sdaв умовах читання блоків різних розмірів може використовуватися аналогічна команда:


1000000+0 records in
1000000+0 records out

# dd if=/dev/sda of=/dev/null bs=4096 count=1000000
1000000+0 records in
1000000+0 records out
4096000000 bytes (4.1 GB) copied, 29.8747 s, 137 MB/s

Завдяки механізму кешування файлових систем, ви можете зіткнутися з містичним прискоренням операції читання, якому не варто дивуватися:

# dd if=/dev/sda of=/dev/null bs=512 count=1000000
1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB) copied, 4.25186 s, 120 MB/s

# dd if=/dev/sda of=/dev/null bs=512 count=1000000
1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB) copied, 0.417317 s, 1.2 GB/s

Для отримання коректних результатів тестів рекомендується взагалі обходити механізм кешування файлових систем за допомогою режиму введення/виводу без кешування:

# dd if=/dev/sda of=/dev/null bs=512 count=100000 iflag=direct
100000+0 records in
100000+0 records out
51200000 bytes (51 MB) copied, 5.01053 s, 10.2 MB/s

Копіювання файлів

Так, утиліта ddможе використовуватися навіть для копіювання файлів. Звичайно ж, для цієї мети краще використовувати спеціально призначену для цього утиліту, а саме, cp. У будь-якому випадку, ви можете скопіювати файл за допомогою аналогічної команди:

$dd if=/home/alex/test.txt /home/alex/test_copy.txt