LINUX.ORG.RU

Непреднамеренное повреждение заголовка жёсткого диска из-за неправильного применения dd

 ,


1

2

Здравствуйте! У меня возникла следующая проблема: Недавно хотел записать на флешку образ файловой системы с жёсткого диска. Но перепутал букву устройства и запись пошла на внешний жёсткий диск, что привело к перезаписи начала данных. Процесс остановил, перезаписано около 70 мегабайт данных. Подмонтировать сейчас тот жёсткий диск не могу, выдаёт Input/output error. На том жёстком диске было несколько сотен гигабайт данных. Подскажите пожалуйста, как восстановить данные? Там была обычная, незашифрованная, ext4.

extundelete

testdisk

mersinvald ★★★★★
()
Последнее исправление: mersinvald (всего исправлений: 1)

Подскажите пожалуйста, как восстановить данные

Из бекапов.

Те 70 МБ ты потерял безвозвратно точно. Сколько файлов это затронуло - как повезёт.

legolegs ★★★★★
()

Через testdisk не получилось. Нашёл разделы, но программа не увидела файлов. То ли я то неправильно понял/сделал, то ли ещё что. Пробую восстановить файлы через scalpel.

ShiningRiver
() автор топика
Ответ на: комментарий от ShiningRiver

В пакете с testdisk есть утилитка photorec. Она должна помочь. А со скальпелем ты замучаешься, сразу говорю. Если данные фрагментированы, то толку от него — ноль.

ShizuShidou
()

к перезаписи начала данных

testdisk здесь уже не поможет.

Подойдет любая программа позволяющая сканировать и восстанавливать структуры каталогов: R-Studio, WinHex и пр.

SG_Marazm
()
Ответ на: комментарий от ShizuShidou

photorec

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

SG_Marazm
()
Ответ на: комментарий от SG_Marazm

Ты ничего не путаешь? Она, как бы, умеет использовать таблицу размещения файлов или её остатки. Скрин из гугла. Другое дело, что у ТС эта самая таблица инодов, скорее всего, затёрта, да и про тип файловой системы он ничего не сказал.

И уж точно photorec будет лучше скальпеля, который ищет только по вручную описанным сигнатурам в формате «от паттерна до паттерна» или «паттерн + вручную указанный размер».

ShizuShidou
()

Попробуй смонтировать файловую систему с указанием сектора с одной из копий суперблока.

Чтобы узнать в каких секторах располагаются суперблоки запустить mkfs.ext4 на этот раздел с указанием опции ничего не делать, а лишь вывести информацию о параметрах создаваемой файловой системы, в том числе и номерах секторов супкрблоков.

Нужную опцию смотри в 'man mkfs.ext4'.

kostik87 ★★★★★
()
Ответ на: комментарий от ShizuShidou

Она, как бы, умеет использовать таблицу размещения файлов или её остатки

Не, не прокатит Photorec в данном случае. Там нужно уже именно сканить всё (это если надо найти в человеческом виде). R-Studio подойдет, потому что юзерфрендли и в конкретном случае, скорее всего, восстановит большую часть. А после пройти по сигнатурам, а вот здесь фоторек уже предпочтительнее, потому что в настройках по-умолчанию восстанавливает только «good» файлы (мусора практически не бывает), да и сигнатур в нее напихано до фига.

SG_Marazm
()
Ответ на: комментарий от SG_Marazm

Там была обычная, незашифрованная, ext4.

про тип файловой системы он ничего не сказал

Н-да. Похоже, я таки перегрелся.

R-Studio подойдет

$80 же. Иначе она не восстанавливает файлы >256kB. Что?! Кто сказал «ру-боард»?

Не, не прокатит Photorec в данном случае

Ради интереса попробовал на копии своего /boot раздела (затер первые 20 метров образа из 512-ти). Ситуация удручающая. Имена похерены, а анализ действительно только сигнатурный. Судя по всему, имена показываются только в режиме «а ля undelete». В общем, был не прав — признаю.

Однако ж, странно это всё — при структуре ext4 должно вычитаться всё, кроме первой группы блоков, если я правильно понимаю. Похоже, что kostik87 дело говорит.

ShizuShidou
()

Я тут попробовал всякое.

Для начала, сразу ищи место, равное примерно двойному объему убитого раздела/винта: битовая (dd) копия на текущий момент + место для восстанавливаемых файлов. Можно чем-то вроде dcfldd или dc3dd воспользоваться. Дальше можно играться как с образом, так и с самим устройством (но только с чем-то одним).

Имея точку отката, я бы попробовал сделать так:

  • mke2fs -n /dev/sdxN — узнаем где есть копии суперблока.
    Superblock backups stored on blocks: 
    	8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
    
  • mount -t ext4 -o ro,sb=204801,norecovery /dev/sdxN /mnt — пробуем монтировать ФС: только чтение, без журнала, с вручную указанным суперблоком из тех, что ближе к хвосту. Если нифига не вышло (не помог ни гугл, ни man mount), то идем дальше.
  • e2fsck -b 204801 /dev/sdxN — пробуем минимально починить ФС для монтирования, указав суперблок.
    Superblock has an invalid journal (inode 8).
    Clear<y>? yes
    *** ext3 journal has been deleted - filesystem is now ext2 only ***
    
    Resize inode not valid.  Recreate<y>? yes
    Pass 1: Checking inodes, blocks, and sizes
    Root inode is not a directory.  Clear<y>? yes
    Pass 2: Checking directory structure
    Entry '..' in <2>/<65537> (65537) has deleted/unused inode 2.  Clear<y>? yes
    Pass 3: Checking directory connectivity
    Root inode not allocated.  Allocate<y>? yes
    Unconnected directory inode 65537 (...)
    Connect to /lost+found<y>? yes
    /lost+found not found.  Create<y>? yes
    Pass 4: Checking reference counts
    Inode 65537 ref count is 6, should be 5.  Fix<y>? yes
    ...
    Recreate journal<y>? yes
    Creating journal (8192 blocks):  Done.
    
    *** journal has been re-created - filesystem is now ext3 again ***
    
    xxxxxxxxxxxx: ***** FILE SYSTEM WAS MODIFIED *****
    xxxxxxxxxxxx: 324/131072 files (0.3% non-contiguous), 36937/523712 blocks
    
  • монтируем ФС (можно командой из позапрошлого пункта) и идём забирать спасённое барахло из lost+found.

    Как-то так.

ShizuShidou
()
Ответ на: комментарий от ShizuShidou

Я тут попробовал всякое.

Вах. Я на чет подобное натыкался, но не пробовал. Сегодня вечером поэкспериментирую. В любом случае интересно.

SG_Marazm
()
Ответ на: комментарий от ShizuShidou

Для начала, сразу ищи место, равное примерно двойному объему убитого раздела/винта:

И вот тут-то проблема. У меня винт объёмом в терабайт. Где я сейчас два терабайта возьму?

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

Но photorec неплох. Да, были обрезанные файлы, всё смешано в одну кучу, утрачены имена — но несколько файлов-таки смог восстановить (дальше я его просто прервал, потому что места не так много). Тот же scalpel при поиске картинок ничего не нашёл, а photorec некоторые картинки восстановил (опять же не все, т.к. не успел).

ShiningRiver
() автор топика
Ответ на: комментарий от ShiningRiver

Тот же scalpel при поиске картинок ничего не нашёл

А ты всё просканировал? Scalpel с настройками по-умолчанию сканирует ну ооочеееньь долго. Попробуй как-нибудь, к примеру foremost: foremost -vq -t ole,jpeg -o OUTPUT_FOLDER /dev/sdX

SG_Marazm
()
Ответ на: комментарий от ShiningRiver

Ну можно как-то так (при условии, что винт никогда не забивался полностью):

dd if=/dev/sdxN | pv -cN 'uncompressed' | pigz -9 | pv -cN '  compressed' > backup.bin.gz
Можно перенаправить в /dev/null и узнать сколько места будет занимать пожатый вариант образа (долго и глупо, но куда деваться).

ShizuShidou
()
Ответ на: комментарий от ShizuShidou

Вместо многопоточного gzip'а можно использовать lzop без параметров. Скорость сжатия у него повыше, чем скорость чтения с винта, а пустое место, как бы, пофиг чем сжимать.

ShizuShidou
()

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

anonymous
()
Ответ на: комментарий от SG_Marazm

можешь попробовать http://sleuthkit.org/autopsy/download.php

Оно ж страшное, как моя жизнь (имею ввиду веб-морду) и немного не для того (мы же не криминалисты).

Я ж говорю - R-Studio.

Я бы еще UFS Explorer попробовал из проприетарщины. Интересно, как он в сравнении с R-Studio?

З.Ы. Вспомнилась милая хреновина для создания образа и упаковки его в squashfs: sfsimage.

ShizuShidou
()
Ответ на: комментарий от ShizuShidou

Оно ж страшное, как моя жизнь (имею ввиду веб-морду) и немного не для того (мы же не криминалисты).

Это в версии 2 оно страшное и мало чего умеет. В версии 4 есть Photorec вдобавок ко всему (ну и венда нужна, конечно).

UFS Explorer

Ну да, я ж говорю - много чего есть под оффтоп. R-Studio, ИМХО не Царь горы, просто самая распространенная.

squashfs

Кстати, не видел раньше. Прикольный скрипт, спасибо.

SG_Marazm
()
Ответ на: комментарий от ShizuShidou

Интересно, как он в сравнении с R-Studio?

Мне больше нравится UFS. По результатам не скажу, давно R-St. не пользовался.

SG_Marazm
()
Ответ на: комментарий от SG_Marazm

(ну и венда нужна, конечно)

Вот только Windows у меня нету.

ShiningRiver
() автор топика
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.