воскресенье, 4 апреля 2010 г.

Восстанавливаем данные с флешки в Ubuntu Linux

На днях знакомая принесла мне флешку USB Transcend V30 8Gb с мольбой помочь в ее горе, а горе было следующим. Данный накопитель в самой дружественной оси (Windows) совершенно отказывался корректно работать, требуя форматирование, а на нем как обычно водится - самая жизненно важная информация, которую надо оттуда достать.
Итак, имеем:
- Ось - Ubuntu Linux 9.10
- Больной - накопитель Transcend V30 объемом 8 Гб
- Инет + руки.
--------
Первое, что пришло в голову (и как не странно далеко не самое худшее)) - сделать с диска образ с помощью dd (дабы не насиловать и без того покалеченный флеш) и извлечь из него данные замечательной утилитой foremost. Сказано - сделано.

Для начала нужно определить под каким именем у нас в системе определился флеш накопитель:
====
$sudo fdisk -l
[sudo] password for wofs:

Диск /dev/sda: 160.0 ГБ, 160041885696 байт
255 heads, 63 sectors/track, 19457 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x02cbbda7

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *       19093       19457     2931862+  82  Linux своп / Solaris
/dev/sda2               1       19092   153356458+   5  Расширенный
/dev/sda5               1        2432    19534977   83  Linux
/dev/sda6            2433       19092   133821418+  83  Linux

Пункты таблицы разделов расположены не в дисковом порядке

Диск /dev/sdb: 8032 МБ, 8032092160 байт
248 heads, 62 sectors/track, 1020 cylinders
Units = цилиндры of 15376 * 512 = 7872512 bytes
Disk identifier: 0x51159e7b

На диске /dev/sdb отсутствует верная таблица разделов
======
Итак, мы определились где у нас флешка, прозорливый fdisk недвусмысленно указал на диск, где повреждена таблица разделов - /dev/sdb

делаем образ (у меня по времени ушло около 10 минут)
$dd if=/dev/sdb of=~/flash8g.dd bs=512 conv=sync,noerror
 ставим утилиту:
$sudo apt-get install foremost
подготавливаем каталог, для восстановленных данных
$mkdir ~/recovery
запускаем нашу утилиту:
foremost -o ~/.recovery -i ~/flash8g.dd

и ждем результата (порядка 15-20 минут)
Processing: /home/wofs/flash8g.dd
|**************foundat=3561cbb6UT   
foundat=ab06144bUT   
foundat=8e944b47UT   
foundat=e9f04ad4UT   
foundat=8cdd0b29UT   
*******foundat=Version.txtSDP
foundat=Generic.lkfSDP
foundat=Generic.dhhSDP
foundat=DVS1_44.dhrSDP
foundat=DVS1_48.dhrSDP
foundat=DVS2_44.dhrSDP
foundat=DVS2_48.dhrSDP
foundat=Mixdown_44.dhrSDP
foundat=Mixdown_48.dhrSDP
foundat=DVS3_44.dhrSDP
foundat=DVS3_48.dhrSDP
foundat=DVS1.1.dhhSDP
********************************************************|
wofs@wofs-laptop:$|
с нетерпением лезем в наш каталог, куда мы восстанавливали данные
cd ~/recovery
 и обнаруживаем там несколько папок, с наименованиями до боли знакомых типов файлов (jpg,png,doc,xls и т.п.), а вот уже в каждой из них, мы имеем вытянутые с флешки файлы, притом расширение каждого файла соответствует наименованию папки, в которой он находится. Рускоязычные имена конечно навсегда утеряны, но главное - важные документы были восстановлены!
Плюсы данного способа:
- скорость
- простота
Минусы:
- в результате файлы восстановились в хаотичном порядке с сортировкой по расширениям, т.е. была утеряна первоначальная структура каталогов (по мне так это даже некоторый плюс, намного хуже бродить по каталогам с совершенно ничего не значащими названиями в поисках корректно восстановленных файлов)
- утеряны осмысленные наименования, которые превратились в сквозную нумерацию файлов.

P.S. Радость от всего этого была несколько омрачена тем, что как потом выяснилось, восстановлено было все, кроме файлов mp3, которые по словам хозяйки были на диске. Но за спасенные отчеты и фотки с отдыха я получил заслуженное вознаграждение ;)