Это является небольшим дополнением к другому вопросу пользователей, найденному здесь: Клонирование SD-карты с помощью команды dd
Я использовал команду dd для клонирования или создания резервных копий SD-карты с ограниченным успехом. Они предназначены для моих одноплатных компьютерных проектов, где целесообразно время от времени полностью резервировать SD-карту. Я говорю об ограниченном успехе, потому что иногда мне удавалось полностью восстановить систему (карту), используя советы, найденные в Интернете.
Тем не менее, обратите внимание, что в других случаях это не имело место, и мне интересно, имеет ли это какое-то отношение к монтажу (или, в идеале, отключению карты, так как здесь есть некоторая путаница (для меня в любом случае).
Вопрос 1: Когда я запускаю umount (как предложено на вышеупомянутой странице форума), он сообщает, что устройство не смонтировано. Это потому, что оно просто размонтировало устройство, или потому что устройство, которое я указал для размонтирования, не ' существует ли для размонтирования в первую очередь?
Для размонтирования я использую следующую команду: sudo umount /dev/sdc
Вопрос 2: В утилите GUI Ubuntu 16.04 (Files), память USB карта памяти или SD-карта, вставленная в USB, имеет небольшую стрелку, направленную вверх, справа от нее. Если вы нажмете на нее, это эффективно отключит устройство и сделает его безопасным для извлечения. Это то же самое, что отключить в CLI? Похоже, дело в том, что когда я это сделал, команда dd выдает ошибку, из-за которой не удается найти мое устройство для создания образа. I f Я отключаю SD-карту (USB), а затем снова подключаю ее. SD-карта снова отображается с маленькой стрелкой, и я могу без проблем использовать DD для создания изображения (хотя вопрос является ли изображение хорошим - другой вопрос , поскольку я до сих пор не знаю, был ли он фактически отключен до создания изображения!)
Вопрос 3: Когда я запустите sudo fdisk -l
, я вижу мою карту в списке sdb
, однако, если я использую утилиту дисков, я вижу, что SD-карта фактически состоит как минимум из 3 разделов (SDB повторяется для 2 разделов и SDB1 для основной или основной раздел). Какой раздел я должен выбрать как часть операции dd? Не ограничится ли dd только созданием образа этого раздела, игнорируя остальную SD-карту? Если это так, на самом деле не имеет смысла называть его инструментом создания образа диска как таковым ...
Наконец, это команда dd, которую я запускаю, чтобы создать сжатый образ SD-карты (Когда я получаю это право, она отлично работает, и у Этчера тоже нет проблем с чтением сжатого изображения)
sudo dd if=/dev/sdc | pv | gzip > FileNameHere.img.gz
Мы ценим вашу помощь для тех, кто все еще изучает веревки с Linux, даже после нескольких лет использования и опыта.
При использовании dd
для копирования блочных устройств нам необходимо учитывать тот факт, что это низкоуровневый инструмент для побитового копирования данных.
Этот очень мощный инструмент будет копировать каждый бит из источника в любое место назначения.
Часть любого пункта назначения имеет решающее значение, так как это означает, что если вы случайно введете не в том месте, она может беспощадно перезаписать данные там.
каждый бит также означает, что он будет копировать каждый отдельный бит в любом месте. Он также будет копировать пустые биты и содержимое корзины. Это очень полезно для создания образа для восстановления, но это может быть не то, что вам нужно для простого резервного копирования.
Поскольку dd
также не позволяет инкрементное резервное копирование и занимает значительное время, я бы посоветовал вам взглянуть на множество различных решений для резервного копирования , поэтому мы, возможно, должны найти такое, которое лучше соответствует вашим потребностям чем dd
.
Чтобы по-прежнему отвечать на ваши вопросы:
/sdb1
) необходимо отключить, чтобы можно было скопировать их с помощью dd
. /sdb
), включая все разделы, таблицы разделов, удаленный файл, загрузочные записи, удаленные разделы и что еще оно может содержать с dd
, но вы не можете пропустить "неиспользуемые" области. Команда
sudo umount /dev/sdc
размонтирует файловую систему, которая создается непосредственно «на всем диске», как на старых дискетах. Сегодня мы обычно создаем разделы /dev/sdxn
и создаем файловые системы в разделах, где x
- буква диска, а n
- номер раздела, поэтому более подходящей командой будет
sudo umount /dev/sdc1
или для всех разделов в sdc
sudo umount /dev/sdc?
Стрелка, на которую вы ссылаетесь, является символом извлечения, и она не только отключит USB-накопитель или карту памяти, но и отключит питание для нее. Вам необходимо отключить и снова подключить Pendrive или карту, чтобы вернуть питание, чтобы вы могли смонтировать его снова (может быть, он автоматически смонтируется).
Это отличается от того, что вы делаете с командой umount
. Я думаю, что программное обеспечение udisks
вызывается из этого символа выброса. См.
man udisksctl
, в котором описывается утилита командной строки.
Клонировать целый диск для клонирования всей операционной системы. Вам следует использовать исходное устройство /dev/sdx
, иначе вы клонируете только раздел, и он не будет содержать всю систему. Должна быть буква диска, но не номер раздела. Вы также можете использовать Clonezilla или mkusb для более безопасного клонирования (dd
опасно).
Если вы все равно хотите использовать dd
, вам следует начать с размонтирования всех разделов на диске,
sudo umount /dev/sdc?
, и после этого должна появиться указанная в редактируемом вопросе командная строка. сделайте эту работу,
sudo dd if=/dev/sdc | pv | gzip > FileNameHere.img.gz
и, если я правильно понимаю, она работает для вас (создать сжатый файл образа, который можно использовать для восстановления системы).
Он должен работать напрямую с обратной командной строкой для создания работающей системы, если есть таблица разделов MSDOS (MBR).
Если существует таблица разделов GUID (GPT), необходимо восстановить резервную таблицу разделов в конце диска (если размер целевого диска не совсем совпадает с размером исходного диска). Это делается автоматически с помощью mkusb и может быть сделано вручную с помощью gdisk
или с помощью скрипта gpt-fix
.