Клонування SD-карти за допомогою команди dd


49

Я намагаюся клонувати SD-карту, яка може містити ряд розділів, деякі з яких Ubuntu не може розпізнати. Взагалі я хочу клонувати весь том, а не лише якийсь розділ. Отже, я монтую SD-карту і бачу щось подібне в засобі перегляду журналу:

kernel: [  262.025221]  sdc: sdc1 sdc2

alex@u120432:~$ ls /dev/sdc*
/dev/sdc  /dev/sdc1  /dev/sdc2

Оскільки я хочу скопіювати весь диск, я виконую:

dd if=/dev/sdc of=sdimage.img bs=4M

Файл sdimage.img, 7,9 ГБ (7,944,011,776 байт) створено (SD-карта - 8 ГБ). Тепер я монтую ще одну SD-карту і виконую:

dd if=sdimage.img of=/dev/sdc bs=4M

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

Це правильний підхід? Можливо, є ще один спосіб клонування SD-карти?

ОС: Ubuntu 12.04 (Precision Pangolin), 32 біт.


Чи можете ви змонтувати створений файл img і побачити, чи він створений правильно?
Мілан Тодорович

@MilanTodorovic - як це зробити?
Алекс F

Якщо я пам'ятаю правильно: mount -o loop sdimage.img / path / to / mount. Потім перевірте, чи можете ви правильно переглянути файл img.
Мілан Тодорович

@MilanTodorovic: Я спробував встановити sudo mount -o sdimage.img / dev / mydisk і отримав: mount: не можу знайти / dev / mydisk в / etc / fstab або / etc / mtab Можливо, мені потрібно створити запис девайса раніше. Чи можете ви опублікувати це як відповідь з деякими подробицями? Дякую.
Алекс F

1
ви не повинні використовувати dd на встановлених пристроях. спочатку демонтуйте всі розділи, тоді ваша команда повинна працювати.
ubfan1

Відповіді:


30

Ви не повинні використовувати dd на встановлених пристроях. спочатку демонтуйте всі розділи, тоді ваша команда повинна працювати.


2
чому для мене навпаки? У мене є Ubuntu 12.10, і команда працює лише з моніторами розділів ...
Лука Даванцо

1
@Velthune Ви впевнені в цьому? Якщо так, я б запропонував задати власне запитання.
Vreality

26

Вставте оригінальну SD-карту і перевірте назву пристрою (зазвичай mmcblkXабо sdcX):

sudo fdisk -l

Ви можете побачити:

Device         Boot   Start      End  Sectors  Size Id Type
/dev/mmcblk0p1 *       2048  2099199  2097152    1G  c W95 FAT32 (LBA)
/dev/mmcblk0p2      2099200 31116287 29017088 13.9G 83 Linux

У моєму випадку SD-карта є /dev/mmcblk0( *p1і *p2є розділами).

Тепер ви повинні відключити пристрій:

sudo umount /dev/mmcblk0

Тепер, щоб створити образ пристрою:

sudo dd if=/dev/mmcblk0 of=~/sd-card-copy.img

Це займе певний час.

Після закінчення вставте порожню SD-карту. Якщо пристрій інший (USB чи інший тип зчитувача SD-карт), перевірте його ім’я та не забудьте відключити його:

sudo fdisk -l
sudo umount /dev/mmcblk0

Запишіть зображення на пристрій:

sudo dd if=~/sd-card-copy.img of=/dev/mmcblk0

Операція запису відбувається набагато повільніше, ніж раніше.


4
при копіюванні великих обсягів даних вам слід встановити більший розмір блоку за замовчуванням, інакше вам доведеться чекати дуже довго. sudo dd if=/dev/mmcblk0 of=~/sd-card-copy.img bs=4M
xaedes

13

Я використовую інструмент dd для клонування usb-паличок з декількома розділами, ось моя команда:

sudo dd if=/dev/sdb of=/dev/sdc bs=4096 conv=notrunc,noerror

notrunc - не вкорочуйте вихідний файл
noerror - продовжуйте після помилок читання


Для цього не потрібні два зчитувачі карт SD?
Пітер Мортенсен

1
@PeterMortensen так, багато хто з нас використовує ці адаптери типу 4 в 1.
Teque5

9

dd добре, але я вважаю за краще cat /dev/sdc/ > ~/backup.iso Якщо ви хочете знову поставити його на SD-карту, просто запустітьcat ~/backup.iso > /dev/sdc


Обидва SD є 8 Гб. кішку можна використовувати для створення зображення SD, але для створення іншого SD я повинен використовувати dd, правда?
Алекс F

0

Ось кроки, які працювали для мене на Ubuntu, щоб відновити файл зображення ( ~/raspberrypi2.imgв моєму випадку) назад на нову SD-карту (сильно надихнувши відповіддю Алона вище):

  1. Вставте мікро SD-карту через зчитувач карт.
  2. Відкрийте додаток Диски.
  3. Швидкий формат усієї карти (не конкретного розділу).
  4. Закрийте диски.
  5. Відкрити термінал та виконати:

    sudo fdisk -l
    

Відповідний вихід (який показав, що не було розділів через швидкий формат усієї карти):

Disk /dev/sdb: 7.4 GiB, 7948206080 bytes, 15523840 sectors 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disklabel type: dos 
Disk identifier: 0x6957f2f2

sudo dd if=~/raspberrypi2.img of=/dev/sdb

Цей крок займає кілька хороших хвилин (навіть на USB3). Переконайтеся, що не переривайте його жодною операцією, яка викликатиме встановлення (відкриття файлів або дисків).

Дякую за відповіді всіх

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.