Как мне создать немного идентичный образ флешки?

21

У меня есть флешка, которая по какой-то причине не читается. Я хочу сделать его изображение для хранения, чтобы я мог попытаться получить данные из изображения позже.

Как мне создать такой немного идентичный образ флешки?


Это ошибка, которую я получаю при использовании dd:

oshirowanen@desktop:~$ sudo dd if=/dev/sdd of=/USB_image
[sudo] password for oshirowanen: 
dd: reading `/dev/sdd': Input/output error
0+0 records in
0+0 records out
0 bytes (0 B) copied, 1.00783 s, 0.0 kB/s
oshirowanen@desktop:~$ 
oshirowanen
источник
Какой шестнадцатеричный редактор вы используете?
AJMansfield
Когда вы не можете прочитать с устройства, /dev/sdxуказывающего на флешку, возникает серьезная проблема, и я думаю, что для обычных пользователей нет инструментов, которые будут работать. Смотрите эту ссылку для получения более подробной информации, askubuntu.com/questions/144852/… ; Не сдавайся сразу. Попробуйте в соответствии со списком вещей, которые могут заставить чтение работать. Возможно, вы можете отсоединить USB-разъем и найти карту micro SD, которая все еще работает в соответствии с комментарием @ ubfan1 (в связанном ответе).
Судод
у вас есть 2 варианта решения вашей проблемы: 1-й простой: запустить sudo su, а затем от имени root выполнить команду dd 2-й более опытный вариант, запустить dd со статусом и '' sudo bash -c 'dd status = progress if = / dev / sd * | gzip> ~ / Backup-USB.img.gz '
WiKrIe

Ответы:

39

dd Это!

Использование будет выглядеть примерно так: sudo dd if=/dev/sdb of=~/USB_imageгде / dev / sdb - это ваш usb-накопитель, указанный в списке, sudo fdisk -lа ~ / USB_image - файл образа, в который будет сделана копия (путь, по которому будет создан файл образа).

Чтобы восстановить образ на другой USB-накопитель, просто инвертируйте процесс: sudo dd if=~/USB_image of=/dev/sdbвосстановите ~ / USB_image на устройство sdb . Просто убедитесь, что новый USB-накопитель больше или больше оригинального.

Вы также можете смонтировать только что созданный файл образа в путь без необходимости сначала восстанавливать его на другой USB-накопитель mount ~/USB_image /mnt/USB_image -o loop.

Бруно Перейра
источник
Что делать, если fdisk -lне вижу USB-накопитель? Тем не менее, я могу видеть это из программы Дисковой утилиты как / dev / sdd, но когда я пытаюсь использовать вашу команду, это, кажется, терпит неудачу.
oshirowanen
Сбой по какой вине?
Бруно Перейра
Добавил ошибку в исходный вопрос, так как это было слишком много для комментария.
oshirowanen
1
Если fdisk не отображает устройство, используйте dmesg для просмотра того, что происходит, когда устройство подключено. Dmesg - это список взаимодействий ядра, поэтому, в основном, если оборудование что-то делает на вашем компьютере, в dmesg появляется сообщение об этом.
j0h
2
@ Алекс использовать status='progress'с dd Ubuntu, или выяснить PID вашей ddкоманды и отправить ему SIGUSR1сигнал. Не уверен насчет других реализаций, хотя.
Сергей Колодяжный
7

Использование ddrescue. Это будет продолжаться после ошибок, где ddпросто не получится.

Дополнительно ddrescueесть в репо. 13.04 я набрал sudo apt-get install gddrescue для установки.

Используйте sudo fdisk -lили dmesgдля определения местоположения устройства, например:, /dev/sdbзатем выполните команду, такую ​​как

ddrescue /dev/sdb /home/user/desktop/bkp.img

Есть много вариантов ddrescue, и вы можете прочитать manстраницы. Также я не уверен, почему ваше оборудование выходит из строя и сбрасывает dd. Один сбойный блок может привести к ddвыходу из строя, но также могут происходить периодические сбои питания. dmesgможет рассказать вам больше о сбоях оборудования, которые вы можете испытывать.

УБЕДИТЕСЬ, что устройство не установлено! при попытке восстановления данных, обработки изображений и т. д. это может вызвать проблемы.

Есть много вещей, которые могут пойти не так в восстановлении данных. Отпишитесь, если у вас есть проблемы. testdiskхорошая утилита для восстановления данных, когда у вас есть образ.

Просто для ясности, это USB-накопитель или USB-накопитель?

Ошибки ввода-вывода обычно указывают на аппаратные сбои, а не на повреждения файловой системы.

Также попробуйте получить анализ данных SMART на устройстве, если оно доступно. Это может говорить о таких вещах, как, например, если устройство перегревалось, включалось в течение длительного времени, имеет поврежденные сектора, подвергалось воздействию больше, чем X нет. и т.д.

j0h
источник
USB-накопитель, SMART-данных нет для анализа ... Я также думаю, что вам нужно использовать sudoдля ddrescue*, где dd просто потерпит неудачу *, это не совсем так, поскольку вы можете настроить ddигнорирование ошибок чтения. testdiskЭто здорово, когда вы можете читать потерянные сектора данных, а не когда диск не работает.
Бруно Перейра
# является символом root, поэтому нет, sudo не требуется. если бы это было $, то да.
13:30
Я также хочу отметить, что если ddrescue или даже dd потерпели неудачу, но вы можете сгенерировать образ, вы все равно можете попытаться восстановить данные на этом образе.
13:30
Я бы предложил использовать gddrescueпротив, ddrescueтак gddrescueкак он новее и способен выполнять работу, которая ddrescueделает.
Бруно Перейра
1
Я даже не знаю, человек, прочитайте мой пост. gddrescue - это пакет, а ddrescue - это команда.
июня
2

Вы можете создать образ USB-накопителя (или другого устройства) с помощью dd.

Например

dd if=<usb device> of=usb.img

Вы можете добавить больше параметров для ddоптимизации команды (например bs).

Уве Плонус
источник
2

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

dd if=<usb device> of=<new file on disk with enough space> bs=<should match your blocksize> conv=noerror,sync 

Важной частью является последняя: она conv=syncсообщает dd заполнить все те блоки, которые он мог прочитать, только частично нулями, поэтому результирующее изображение может иметь несколько нулей слишком много, но будет структурно равным слоистому диску за вычетом ошибок чтения. conv=noerror позаботился об этих ошибках чтения, сказав, что dd продолжит работу со следующим блоком. На этом этапе размер блока имеет значение, потому что если он больше, чем необходимо, чтобы пропустить ошибку, читаемые данные будут потеряны здесь. Размер блока всегда должен быть вдвое больше - если есть сомнения, 512kследует делать свое дело.

Тогда я бы предложил:

  • храните неизмененную копию этого изображения в безопасном месте
  • fsck копия образа диска
  • смонтировать образ диска
  • проверьте ваши файлы - они теперь без проблем читаются, но некоторые могут отсутствовать или быть усечены
  • Если само устройство вообще не может быть прочитано, возможно, вам не повезло. Кроме того, если устройство содержит некоторое проприетарное программное обеспечение, оно может быть настроено на возврат ошибок чтения при обращении к первым блокам.

(Частично цитирую себя из статьи, написанной еще в 2010 году)

Если вам не нужно оставаться нативным, вы всегда можете попробовать инструменты, которые пытаются несколько облегчить процесс, такие как ddrescue (пакет gddrescue) и его компаньон ddrescueview( sourceforge ) для визуализации ошибок.

Татьяна Хойзер
источник
2

Что касается второй половины вашего вопроса «Это ошибка, которую я получаю при использовании dd»: я вижу пару возможностей.

  1. Обратите внимание на разницу в введенной вами команде и принятый ответ; ты скучаешь ~перед /USB_image. Другими словами, вы пытаетесь вывести корень вашей файловой системы, а не в свой домашний каталог.
  2. /dev/sddможет быть не правильный диск. Запустите sudo fdisk -lи сравните размер диска с известным размером флешки. Например, я знаю , что это мой USB палку , потому что это близко к 16GB: Disk /dev/sdf: 15.8 GB, 15805186048 bytes.
MDMower
источник