Случайно сделал dd / dev / sda

35

Я записал ISO-образ на свой жесткий диск, используя sudo dd if=image.iso of=/dev/sda. Я имел в виду /dev/sdc, и теперь при запуске sudo fdisk -lвозвращается только один раздел в / dev / sda, а там должно быть 6. Можно ли восстановить мои данные?

Я еще не выключил (перезагрузил) мой компьютер.

Baaing Cow
источник
24
ddснова показал свое уродливое лицо «Разрушитель данных» :-( Он перезаписал головную часть накопителя (в соответствии с размером iso-файла). Данные, которые были там, потеряны. У вас есть довольно свежая резервная копия файлы, которые вы не можете позволить себе потерять? В противном случае вы должны подготовиться к тяжелой работе по восстановлению таблицы разделов и файловых систем, лучше всего клонированной копии с использованием Testdisk , а в случае неудачи еще более трудной работе по восстановлению данных файла, которые можно найти «позади» часть диска, которая перезаписана. Вы можете использовать PhotoRec для этой цели. См. эту ссылку, cgsecurity.org
sudodus
6
Разделяется ли диск gpt, у него есть преимущество резервной таблицы разделов в конце диска. Только начало перехода к размеру ISO было полностью перезаписано и потеряно. В зависимости от размеров разделов вы можете восстановить некоторые или большинство других разделов.
oldfred
10
@sudodus " ddснова показал свое уродливое лицо" Разрушителя данных " - за исключением того, что это не имеет ничего общего dd, это связано с прямым доступом к дисковому устройству в качестве пользователя root. Любой другой инструмент мог бы иметь такой же эффект. cat image.iso > /dev/sdaимел бы точно такой же эффект. Или pv .... Или, в некоторой степени, даже vi /dev/sda. На самом деле, это напоминает мне историю, когда Линус Торвальдс пытался дозвониться до сети, используя свое устройство на жестком диске, а не модемное устройство, перезаписывая начало своего диска с помощью рукопожатия . Ничего общего с dd.
marcelm
4
Какого размера ваш .isoфайл? Вы прервали ddили все закончилось?
marcelm
4
@marcelm, ты прав. Но в реальной жизни люди используют ddэто (для этой цели), поэтому я думаю, что предупреждение «Разрушитель данных» является актуальным, хотя полностью правильное предупреждение должно быть длиннее: «Не используйте командную строку, например, sudo dd if=image.iso of=/dev/sdxдля клонирования в массу запоминающее устройство. Используйте инструмент, который поможет вам определить и выбрать правильное целевое устройство и который имеет конечную контрольную точку, чтобы вы могли дважды проверить, что вы будете клонировать из iso-файла на правильное целевое устройство, например StartupDiskCreator, Disks, mkusb , Win32DiskImager. "
Судод

Ответы:

65

Поскольку ваш компьютер все еще включен, у вас есть хорошие шансы на сохранение.

Во-первых, sysfsвыставляет ядро ​​в памяти представления таблиц разделов. Прямо сейчас ваше ядро ​​не перечитало таблицу диска и запоминает ваше разбиение на разделы. Внутри /sys/block/sda/должен быть один каталог для каждого раздела. Каждый такой подкаталог содержит файл startи файл size, которые представляют расположение и размер раздела в секторах. Запустите, fdiskа затем заново создайте каждый раздел (по порядку!) С информацией в его sysfsкаталоге. Обратите внимание, что вам также придется создать новую таблицу разделов. Убедитесь, что ваша новая таблица разделов такая же, как и предыдущая. Вы можете проверить это в /sys/block/sda. Если вы видите sda1доsda7в то время как у вас есть только 6 разделов, у вас, скорее всего, была MBR, а в остальном это, вероятно, GPT. Вам также необходимо установить флаги и типы для этих разделов. Посмотрите /etc/fstabи попробуйте найти информацию о типах разделов, которые у вас есть, затем просмотрите Википедию, чтобы преобразовать их в коды для вашей схемы разбиения.

Поскольку вы, похоже, можете использовать свою файловую систему, вполне вероятно, что вам ddне удалось перезаписать ее, поскольку большинство важных битов файловой системы находятся спереди. Проверьте, /etc/fstabкакие разделы соответствуют какой части вашей системы, и затем используйте объем ddскопированных данных, чтобы получить оценку того, сколько вы сбросили. Если вы перезаписали только часть файловой системы, хороший fsck может исправить это немного (но вы потеряли хороший кусок данных).

Скорее всего, вы переписали /boot. Вам придется переустановить ядро ​​(с помощью aptitude) и переустановить GRUB2 (с помощью grub-install) (который уничтожил как первый, так и второй этап). GRUB2 настроен для работы с файлами /etc, поэтому вам не нужно ничего заново создавать вручную.

HTNW
источник
15
«Проверьте /sys/block/sda/*/{start,end}и заново создайте разделы с этой информацией»: не могли бы вы немного рассказать об этом? Это не тривиальная операция, и, кажется, это главное в вашем превосходном ответе.
Тердон
Вывод , что легче расшифровку, введите их в приглашении оболочки с RETURN после каждого ...............: sudo parted, unit s, print all,quit
Ханну
3
Скопируйте любую ценную информацию на другой диск (например, на флешку), когда вы ее обнаружите. В случае, если какой-либо из шагов восстановления раздела не проходит идеально, вы хотите иметь запись того, что было в памяти все еще работающего компьютера. Кроме того, скопируйте ваши наиболее ценные и / или небольшие файлы (включая такие вещи, как .bashrcи другие точечные файлы из вашего домашнего каталога и все /etc, кроме ваших реальных данных) на другой диск, пока ваш работающий компьютер все еще работает . tar.gz - хороший формат для копирования целых каталогов (потому что он сохраняет разрешения и прочее).
Питер Кордес
Он также, вероятно, должен будет переформатировать то, что было / boot, что довольно опасно, когда есть неопределенность, что ядро ​​думает о разметке вашего раздела ...
rackandboneman
1
@rackandboneman Ядро отказывается перечитывать таблицы разделов на диске со смонтированными разделами. Подобное /bootпереформатирование совершенно «безопасно» (по модулю буквально все остальное в этой ситуации ), потому что ядро ​​ни в чем не сомневается.
HTNW
21

Извините, что прочитал о вашей неудаче

Я думаю, что у вас нет текущей резервной копии, и мне жаль читать о вашей неудаче, используя

sudo dd if=image.iso of=/dev/sdx

где вы использовали букву диска x= aтак, чтобы вы перезаписывали начало вашего жесткого диска, где вы хранили много ценных данных.

Вы не первый человек, и я боюсь, что не последний человек, затронутый этой проблемой. ddРекомендуется на многих веб-сайтах, чтобы использовать как это. Это мощный, но опасный метод, потому что он делает то, что вы говорите, делать без вопросов. По этой причине его часто называют «разрушитель данных».

@marcelm комментирует, что это прозвище несправедливо. Он прав, что запись непосредственно в файл устройства от имени root создает риск . Поэтому имейте в виду, что вы можете легко перезаписать диск и уничтожить ценные данные, записав в соответствующий файл устройства /dev/sdx. (Более безопасные инструменты перечислены в конце этого ответа.)

Восстановить таблицу разделов, файловые системы и / или содержимое файла

  • Делайте с диском как можно меньше, и, прежде всего, ничего на него не пишите, потому что это может ухудшить ситуацию, переписав данные, которые все еще можно восстановить.

  • Если ваши данные ценны, вы должны работать с клонированной копией , а не с оригинальным (частично перезаписанным) диском. Посмотрите эту ссылку, прокрутите вниз до пункта «Расширенное восстановление таблицы разделов, файловой системы и / или восстановление файлов».

    Восстановите таблицу разделов и файловую систему pendrive

  • Если у вас была таблица разделов GUID, GPT, в конце диска есть резервная копия таблицы разделов /dev/sda, и вы можете восстановить основную таблицу разделов из этой таблицы резервных копий с помощью инструмента gdisk. Смотрите руководство man gdiskдля деталей.

  • Вы можете восстановить таблицу разделов и файловые системы, используя Testdisk из

    http://cgsecurity.org

    Прочитайте инструкции на веб-сайте CGSecurity, а также ссылку, предоставленную @ElderGeek, разделы исчезли после потери питания при установке

  • Вы также можете восстановить таблицу разделов и файловые системы, используя gpart / gparted по ссылке, предоставленной @CSM,

    HOWTO: Восстановление потерянных разделов в таблицу удаленных или поврежденных разделов

  • PhotoRec : Если вам не удалось восстановить таблицу разделов и файловые системы, вы все равно можете восстановить некоторые данные файла. Файлы в головной части, возможно, 1-1,5 ГБ, перезаписываются и теряются, но файлы, находящиеся за этой частью диска, все еще там. PhotoRec с http://cgsecurity.org - это инструмент, который может восстанавливать данные «с поверхности диска» без файловой системы. Типичные данные в начале распространенных типов файлов используются для идентификации.

    Следующая ссылка содержит подробную информацию о PhotoRec,

    https://www.cgsecurity.org/wiki/PhotoRec

    Вы должны сохранить файлы в раздел на отдельном диске.

    Невозможно восстановить структуру каталогов и, как правило, невозможно восстановить имена файлов (а не разрешения и права собственности), и возникают проблемы, когда файлы фрагментированы, но многие файлы могут быть восстановлены PhotoRec (не только фотографии, а также многие другие распространенные типы файлов). Но, и это большая, но это большая и тяжелая работа, чтобы пройтись по огромному количеству несортированных файлов, чтобы определить, какие действительно важные файлы нужно переименовать в значимые имена файлов.

Более безопасные инструменты для создания загрузочных USB-накопителей с Ubuntu

В будущем, пожалуйста, используйте инструмент, который поможет вам определить и выбрать правильное целевое устройство и который имеет конечную контрольную точку, чтобы вы могли дважды проверить, что вы будете клонировать из iso-файла на правильное целевое устройство, например

  • В Ubuntu: Ubuntu Startup Disk Creator (в Ubuntu 16.04 LTS и более новых версиях),
  • В Linux:

    • Диски псевдоним gnome-disks,
    • mkusb ,
  • В Windows: Win32DiskImager .

Вы также можете использовать инструменты извлечения , которые обеспечивают конечную контрольную точку, например

sudodus
источник
1
я могу поручиться за Testdisk cgsecurity, который работает намного лучше, чем другие альтернативы, которые я пробовал в прошлом, когда Testdisk был единственным, кому удалось спасти что-нибудь полезное. но будьте осторожны, маленький хренов по умолчанию пытается восстановить ваш раздел на самом диске !! хх
ханшенрик
1
+1. Я также могу поручиться за testdisk. Также скрипт-обертка, чтобы предотвратить ddзапись в ваш / sda / sdb / что угодно, тоже хорошая идея.
WinEunuuchs2Unix
19

По вашей ddкоманде вы перезаписали таблицу разделов / dev / sda и все данные до размера image.iso.

Поэтому лучшее, что вы можете достичь - это восстановить таблицу разделов (с точными размерами), чтобы восстановить хотя бы разделы в конце / dev / sda.

muclux
источник
1
Если вы хотите узнать, как получить точные размеры, см. Второй абзац этого ответа .
wizzwizz4
16

Если не считать восстановления из резервной копии, полного восстановления не существует. DD переписал таблицу разделов и некоторые данные устройства.

stumblebee
источник
19
Я думаю, что я должен выбросить все свои резервные копии аварийного восстановления тогда.
stumblebee
23
@Baaing Cow, конечно, это ответ, и, конечно, не может быть никакого способа восстановить данные. Вот что это значит, когда вы перезаписываете данные: они исчезли.
psusi
22
@ ChaiT.Rex Это кажется мифом, по крайней мере, на любом оборудовании, которое вы, вероятно, найдете в ПК, изготовленном за последнее десятилетие.
Дэвид Шварц
19
@ ChaiT.Rex Это применимо только на не полностью перезаписанных дисках, где стирается только часть диска. Однако, если весь диск был удален или перезаписан, восстановление данных невозможно. Специалисты или нет.
Томас Уорд
8
@BaaingCow Поскольку вы знаете, что должен быть способ восстановить данные, пожалуйста, сообщите нам. Многие люди будут готовы платить деньги за вашу технику!
Тим
9

Если ваш диск разделен на отдельные разделы /и /homeразделы, а /homeраздел был после /раздела, то вы можете восстановить свои данные. MBR, в которой указано, где находится большинство разделов, был перезаписан. Тем не менее, gparted может восстановить ваш /homeраздел.

Этот пост на форумах Ubuntu дает некоторые идеи о том, как это сделать; Я обнаружил, что в поиске "gparted recovery раздел".

Как только вы нашли потерянный раздел (может быть внутри расширенного раздела), вы должны добавить его как единственный раздел в таблице разделов.

После того, как вы это сделаете, вам придется переустановить Linux, указав сохранить восстановленный раздел как /home.

CSM
источник
2

Тестдиск на помощь

Я могу лично поручиться за Testdisk, который сохранил мои данные после того, как я неоднократно копировал и вставлял инструкции /dev/sdbи менял их, на /dev/sddкоторые был мой USB. Только один раз я забыл его поменять, и я пошел /dev/sdbв мусорный ящик.

Настройте свою систему, чтобы никогда не писать в /dev/sda

Я настоятельно рекомендую создать скрипт-обертку: не допускать разрушения `dd` SSD или HDD . Это гарантирует, что вы ddникогда не запишете /dev/sdaили, возможно, /dev/sdbили на любое другое устройство хранения данных.

WinEunuuchs2Unix
источник