LINUX.ORG.RU

Как вытащить данные с неполного образа диска?

 , ,


0

1

Есть образ флешки (она была 30Гиг), там 2 раздела, было записано данных на неё гига 3 всего. Есть образ, который начал делать dd до того, как она подохла, скопировалась 12Гиг. Файловая система на втором разделе ext4. Учитывая небольшой записанный объём, есть большие шансы, что данные там и сохранены. Конечно же, пробовал его записать на другую, но там бесполезно хоть фсаками гонять, хоть чем - ругается, что суперблок не соответствует заявленному размеру файловой системы, потом всё исправляет, но ничего не монтируется.
Как в таком случае можно примонтировать для спасения данных?

★★★★★

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

Запустил попробовать, он долгий.
Думал, может есть способ проще какой-то - примонтировать как recovery в read-only для тупо снятия данных. Первые 12Гиг не повреждены, а остальных 18 там просто тупо нет.

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

Блин, он предложил 7 вариантов похожих помимо первого явно не того, применил его и система увидела только 1 раздел... Это беда, я не хочу прошивать флешку ещё 6 раз. У меня для встроенного картридера и пишется dd с разными параметрами по 3.5Мб/с

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

Если dd копировал всё устройство (флешку), то можно этот disk image «как бы» примонтировать. Но даст ли это что-то? Чтобы файлы «просто» скопировать нужно смонтировать разделы. Если структуры ФС повреждены «просто примонтировать» не получиться.

там 2 раздела, было записано данных на неё гига 3 всего

Разделы на флешке примерно так размещаются (схема «на коленке»):

|       |                  |                  |
| 'MBR' | раздел №1 (ФС ?) | раздел №2 (ext4) |
|       |                  |                  |

Образ флешки (схематично):

|       |                  (
| 'MBR' | раздел №1 (ФС ?) )
|       |                  (

Если первый раздел по размеру был меньше 12ГБ, то в образе наверное есть «кусок» второго раздела. Если первый раздел по размеру был больше 12ГБ, то второй раздел потерян (100%).

Опять же данные с 1-го раздела можно (наверное) вытянуть, со 2-го — это сейчас неизвестно.

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

хм, чего-то Вы флешки совсем не любите :)

Более «правильно» сделать копию образа флешки на HDD. Расширить его до размеров флешки (кажется из структур MBR можно объём накопителя «извлечь» — рассчитать). И его «родимого» пытать на предмет восстановления файлов.

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

Схема такая:

|       |                 |                           |
| 'MBR' |  (FAT32) 100Мб  | 29Гиг(3Г записано) (ext4) |
|       |                 |                           |
Так что на то что данные на месте шансов немало

Если структуры ФС повреждены «просто примонтировать» не получиться.

Ну они повреждены, там не хватает 18Гиг как бы...

fehhner ★★★★★ ()
Последнее исправление: fehhner (всего исправлений: 1)
Ответ на: комментарий от anonymous

А зачем её прошивать сделай копию снятого dd образа и работа с образами в testdisk.

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

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

В общем, правильным оказалось открыть образ в cfdisk, уменьшить раздел до 12 Гиг, записать образ на флеху того же размера (чтобы не жаловался на неверную таблицу разделов, или суперблок), расширить раздел обратно на весь диск и прогнать e2fsck снова. Там попутно ругался на что-то одно-другое, но считай всё на месте в итоге. Вернее, далеко не всё, но хотя бы то что было надо.

fehhner ★★★★★ ()
Последнее исправление: fehhner (всего исправлений: 1)
Ответ на: комментарий от fehhner

можно повторить с «другого края» — дописать образ до полного размера и ... но утверждать, что при этом ещё что-то восстановится не могу — с ext4 так не работал.

попутно ругался на что-то одно-другое

сообщения об ошибках были о структурах ФС?

далеко не всё, но хотя бы то что было надо

удачно (могло быть и хуже)

anymouze ★★ ()

Во-первых, зачем ты пытаешься записывать образ на флешку? Его можно просто так примонтировать, как loop. Более того, если у модуля ядра loop включить параметр max_part, при подсоединении образа через losetup там даже разделы появятся. Будет что-то вроде /dev/loop0p1, /dev/loop0p2 и так далее.

Во-вторых, при записи данных на ext4 они не записываются подряд. Драйвер данные разбрасывает, в расчёте на последующие записи. Такое средство борьбы с фрагментацией. Поэтому если образ неполный, данные наверняка частично утеряны, так как были в незахваченной области.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Во-первых, зачем ты пытаешься записывать образ на флешку? Его можно просто так примонтировать, как loop.

Я подумал, что будет лучше, если физический размер сектора при проверке будет совпадать? Они разные на моём диске и на флешке.

fehhner ★★★★★ ()
Ответ на: комментарий от i-rinat

На флеш-памяти с понятием «физический размер сектора» всё сложно. Да и на современных жёстких дисках тоже.

На флешке у меня 512 байт, а на ssd - по 4 Кб. Я хотел на всякий случай, чтобы размер блока файловый системы совпадал на всякий случай размеру сектора. Иногда при восстановлении диска это может иметь значения, хотя не уверен, что в данном конкретном случае имело.

fehhner ★★★★★ ()
Последнее исправление: fehhner (всего исправлений: 1)
Ответ на: комментарий от fehhner

На флешке у меня 512 байт, а на ssd - по 4 Кб.

Имеешь в виду логический размер сектора? Вряд ли на SSD он 4096 байт. Им проще использовать всё равно уже используемый read-modify-write и притворяться, что размер сектора — 512 байт. Разве что в nvme устройствах может быть по-другому сейчас.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Имеешь в виду логический размер сектора? Вряд ли на SSD он 4096 байт. Им проще использовать всё равно уже используемый read-modify-write и притворяться, что размер сектора — 512 байт.

У меня PCIe ssd, я чёт думал они по 4Кб используют. Но твоя правда, по 512б:

Configuration:
        Logical         max     current
        cylinders       16383   16383
        heads           16      16
        sectors/track   63      63
        --
        CHS current addressable sectors:    16514064
        LBA    user addressable sectors:   250069680
        LBA48  user addressable sectors:   250069680
        Logical  Sector size:                   512 bytes
        Physical Sector size:                   512 bytes
        Logical Sector-0 offset:                  0 bytes
        device size with M = 1024*1024:      122104 MBytes
        device size with M = 1000*1000:      128035 MBytes (128 GB)
        cache/buffer size  = unknown
        Nominal Media Rotation Rate: Solid State Device

fehhner ★★★★★ ()