Клонирование SD-карты с помощью команды dd

Я пытаюсь клонировать SD-карту, которая может содержать несколько разделов, некоторые из которых Ubuntu не может распознать. Как правило, я хочу клонировать весь том, а не только какой-то раздел. Итак, я монтирую SD-карту и вижу что-то вроде этого в окне просмотра журналов:

kernel: [  262.025221]  sdc: sdc1 sdc2alex@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 (Точный Панголин), 32 бит.

Вставьте оригинальную 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 bs=1M status=progress

Это займет некоторое время.

Как только это будет сделано, вставьте пустую SD-карту. Если устройство другое (USB или другой тип устройства чтения SD-карт), проверьте его имя и обязательно отключите его:

sudo fdisk -lsudo umount /dev/mmcblk0

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

sudo dd if=~/sd-card-copy.img of=/dev/mmcblk0 bs=1M status=progress

Операция записи выполняется намного медленнее, чем раньше.

Вы не должны использовать dd на подключенных устройствах. сначала размонтируйте все разделы, затем ваша команда должна сработать.

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

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

нотранк - не усекайте выходной файл
нет ошибки - продолжить после ошибок чтения

dd - это хорошо, но я предпочитаю cat /dev/sdc/ > ~/backup.isoЕсли вы хотите снова поместить его на SD-карту, просто запустите cat ~/backup.iso > /dev/sdc

Вот шаги, которые сработали для меня в Ubuntu, чтобы восстановить файл изображения (~/raspberrypi2.img в моем случае) обратно на новую SD-карту (сильно вдохновленную ответом Алона выше):

  1. Вставьте карту Micro 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). Убедитесь, что вы не прерываете его какой-либо операцией, которая вызовет монтирование (открытие файлов или дисков приложений).

Спасибо всем за ответы.

вы не должны использовать dd на подключенных устройствах. сначала размонтируйте все разделы, затем ваша команда должна сработать.

Должно ли значение bs=4M быть одинаковым во время процесса копирования?

Можете ли вы смонтировать созданный img-файл и проверить, правильно ли он создан?

@MilanTodorovic - как я могу это сделать?

Если я правильно помню: цикл монтирования -вывода sdimage.img /path/to/mount. Затем проверьте, можете ли вы правильно просматривать img-файл.

@MilanTodorovic: Я попробовал sudo mount -o sdimage.img /dev /mydisk и получил: mount: не могу найти / dev / mydisk в / etc / fstab или / etc / mtab, возможно, мне нужно создать какую-то запись dev раньше. Можете ли вы опубликовать это в качестве ответа с некоторыми подробностями? Спасибо.

Попробуйте с помощью sudo mount -o loop sdimage.img /dev/mydisk (вы забыли цикл после -o)

@MilanTodorovic: монтирование: точка монтирования /dev/mydisk не существует (на этот раз с циклом)

давайте продолжим это обсуждение в чате

Если вы не настаиваете на использовании dd, то вы можете запустить Gnome Disks, и это позволит вам монтировать / размонтировать по желанию и создать файл образа с любого устройства.