Fat32 восстановление удаленных файлов. Файловая система флешки повреждена: восстановление с сохранением данных

02.07.2020 Принтеры и сканеры

О восстановлении данных с файловых систем Linux не писал только
ленивый. Для выполнения этой задачи существует множество самых разнообразных
средств, включая утилиту debugfs, которая с легкостью извлекает любые потертые
файлы с ext2. Но как же быть с другими ФС? Как восстановить исчезнувший файл с
флеш-брелка или расположенного рядом NTFS-раздела? Об этом молчат даже самые
трудолюбивые блоггеры. А между тем, все очень просто и прозаично.

Не всегда удобно перезагружаться в другую операционную систему для выполнения
действий по проверке файловых систем, восстановления файлов, изменения размера
разделов и выполнения других операций с данными. Представь, что уже несколько
лет на твоем компе установлено две операционные системы: Windows и Linux. Первую
ты загружаешь очень редко и только в экстренных случаях, второй пользуешься
ежедневно и уже подумываешь о полном переходе на Linux и удалении винды, вот
только NTFS-раздел, хранящий годами накапливаемые данные, перевести в ext3
нельзя никакими инструментами. Приходится держать две операционки, потому что
хоть NTFS-раздел и доступен из Linux (с помощью ntfs-3g), для решения проблем
файловой системы все равно придется перезагружаться в Windows.

А если накрылась файловая система FAT на Flash-накопителе? Опять
перезагружаться в Windows? Или ты случайно удалил файл в файловой системе UFS,
принадлежащей рядом установленной FreeBSD? Может быть, ты системный
администратор, и диска для восстановления Windows в нужный момент не оказалось
под рукой? Отвечу на все вопросы сразу: почти все действия по возвращению из
небытия файловых систем FAT, NTFS, UFS, восстановлению хранящихся в них файлов,
диагностике и многому другому можно произвести, не покидая Linux. Из этой статьи
ты узнаешь, как это сделать.

Набор инструментов

Перед тем, как перейти непосредственно к описанию процесса восстановления,
диагностики и возвращения убитых файлов к жизни, считаю своим долгом ознакомить
тебя со списком используемых инструментов. Во-первых, нам понадобятся
инструменты для работы с файловыми системами (создание, проверка, получение
информации). Все они распространяются в трех пакетах:

1. dosfstools - утилиты для работы с файловыми системами типа FAT.
Пакет содержит всего две программы: mkfs.vfat (mkfs.dos) для создания файловой
системы и fsck.vfat (fsck.dos) для выполнения проверки файловой системы.

2. ufsutils - набор утилит для работы с UFS и производными (например,
FFS, используемой во FreeBSD). Содержит восемь утилит, включая mkfs.ufs,
fsck.ufs, tunefs.ufs (настройка ФС), growfs.ufs (изменение размера) и другие.

3. ntfsprogs - различные утилиты для работы с NTFS. Не содержит
программ для создания или полной проверки (базовая проверка возможна) файловой
системы, но включает в себя массу полезнейших инструментов, таких как ntfscp для
копирования файлов без монтирования раздела, "реинкарнатор" файлов ntfsundelete,
утилита для изменения размера раздела ntfsresize, программа для клонирования
разделов ntfsclone и другие.

Также нам могут пригодиться инструменты для работы с разделами жесткого
диска. Есть три наиболее продвинутые программы такого типа:
parted ,
предназначенная для создания разделов, изменения их размера, перемещения,
создания и проверки файловых систем;
gpart -
программа-восстановитель затертой таблицы разделов и
TestDisk -
аналог gpart с псевдо-графическим интерфейсом и несколькими полезными функциями.

Следует отметить, что parted - лишь хорошая обертка поверх описанных утилит
для работы с файловыми системами, поэтому почти все, что может parted, могут и
они. Причем вокруг самой parted есть и другая обертка, названная
. Она
всего-навсего создает удобный графический GTK-интерфейс в стиле Partition Magic.

В пакете TestDisk ты найдешь утилиту PhotoRec, предназначенную для
восстановления различных типов файлов с раздела вне зависимости от используемой
файловой системы. Принцип ее работы заключается в поиске и восстановлении файлов
по их метаданным без анализа структуры файловой системы. PhotoRec способна
восстанавливать изображения (bmp, jpg, png, tiff, raf, raw, rdc, x3f, crw, ctg,
orf, mrw), аудио-файлы (wav, au, mp3, wma), видео-файлы (avi, mov, mpg), архивы
(bz2, tar, zip), документы (doc, pdf, html, rtf), файлы с исходниками программ (c,
pl, sh). Ряд программ такого же типа можно найти в пакете
Sleuth Kit , для которого
существует web-интерфейс autopsy.

Сценарии использования

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

Кастим ressurection

Для оживления умерших файлов на NTFS предназначена уже упоминавшаяся
ntfsundelete из пакета ntfsprogs. Она очень проста в использовании и чрезвычайно
аккуратна. Если ты случайно потер файл и сразу же отмонтировал раздел, будь
уверен - ntfsundelete сможет вернуть его на место в целости и сохранности.

Для начала необходимо просмотреть список всех удаленных файлов:

# ntfsundelete /dev/sda1

В третьей колонке вывода будет указан процент сохранности файла. Если он
равен 100% - все ок, файл может быть возвращен к жизни целым и невредимым;
меньшее значение указывает на то, что какие-то его участки уже были затерты
новыми данными, поэтому после восстановления файл окажется, что называется,
битым. В некоторых случаях возможность восстановления даже наполовину убитого
файла может сделать погоду, пока же остановимся на полностью целых экземплярах.
Для этого выполним следующую команду:

# ntfsundelete -p 100 /dev/sda1

Ух, как же их много! Заставим программу вывести на экран только файлы,
удаленные за последние 2 дня:

# ntfsundelete /dev/sda1 -p 100 -t 2d

Так-то лучше. Восстановим файл, номер inode (первая колонка вывода) которого
равен 11172, в каталог /undeleted:

# ntfsundelete /dev/sda1 -u -i 11172 -d /undeleted

Файлы можно восстанавливать по маске:

# ntfsundelete /dev/sda1 -u -m "*.doc"

Фильтровать по длине:

# ntfsundelete /dev/hda1 -S 5k-6m

Или же ты можешь восстановить все удаленные файлы, а уже потом разобраться,
что к чему:

# ntfsundelete /dev/sda1 -u -m "*" -d /undeleted

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

Для восстановления данных со всех остальных файловых систем, включая FAT, UFS,
EXT3, да и любых других, удобнее всего использовать PhotoRec. Запускаем
программу:

В главном меню выбираем подопытное устройство (например, /dev/sda). Нажимаем
и выбираем тип таблицы разделов (для писюков это Intel). Далее выбираем
раздел, а на следующем экране - тип файловой системы (ext2/ext3 или другая).
Задаем каталог, куда мы хотим поместить восстановленные файлы, и нажимаем "Y".
Каталог должен находиться на другом разделе/диске, иначе ты рискуешь усугубить
ситуацию, затерев удаленные файлы новыми данными.

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

В выбранном тобой каталоге ты найдешь массу подкаталогов с именами вроде
recup_dir.1, recup_dir.2, каждый из которых содержит большое количество файлов
разного типа. Имена PhotoRec не восстанавливает, поэтому придется повозиться с
разгребанием всей этой кучи.
У PhotoRec есть и другие недостатки:

  1. Достаточно часто он дает сбои, и файлы могут оказаться поврежденными,
    поэтому их следует проверять на "небитость" в обязательном порядке.
  2. Программа ищет файлы по шаблонам. Если ты удалил файл, формат которого
    не поддерживается PhotoRec - пиши пропало.

Поэтому в довесок к photorec необходимо иметь под рукой другие средства
анализа и восстановления утраченных данных. Лучшим на этом поприще считается
комплект утилит Sleuth Kit ,
содержащий огромное количество самых разнообразных инструментов, которые любят
применять в своей работе различные службы по расследованию инцидентов взлома и
продвинутые системные администраторы. Мы далеки от этого, и нас интересуют
только две утилиты из всего комплекта: fls и icat, предназначенные для поиска и
извлечения файлов (как существующих, так и удаленных).

Просмотрим список удаленных файлов с помощью утилиты fls:

# fls -rd /dev/sdb1
r/r * 117: dsc0005.jpg
r/r * 119: dsc0006.jpg
r/r * 122: dsc0007.jpg
r/r * 125: dsc0008.jpg
r/r * 128: dsc0009.jpg

Флаг "-r" заставляет программу рекурсивно проходить по всем каталогам, а "-d"
- показывать только удаленные файлы.

Скорее всего, листинг будет очень длинным, и к тому же будет содержать список
inode, которые уже были отданы другим файлам (строчка realloc в третьей
колонке), поэтому мы его отфильтруем и направим в less:

# fls -rd /dev/sda1 | grep -v "(realloc)" | less

В третьей колонке ты увидишь номера inode-файлов, а в четвертой - их имена.
Чтобы выдернуть файл из ФС, воспользуйся командой icat (флаг "-r" предназначен
для восстановления удаленного файла):

# icat -r /dev/sda1 1023 > /home/vasya/tmp/my_file

Для восстановления всех файлов можно воспользоваться следующей командой:

# for i in `fls -rd /dev/sda1 | grep -v "(realloc)" |\
awk {"print $3"}|tr -d [:]`; do icat -r -f fat /dev/sdb1 $i >\
/home/vasya/tmp/inode-$i ;done

Если ты желаешь найти какой-то конкретный файл, то вывод fls можно просто "погрепать":

# fls -rd /dev/sda1 | grep -v "(realloc)" | grep my_file.jpg

Замечательная особенность утилит Sleuth Kit состоит в том, что они используют
множество самых разнообразных методик поиска удаленных файлов и их частей. Это и
анализ управляющих структур файловой системы, и различные эвристические методы,
и сопоставление с шаблоном. Фактически, с помощью Sleuth Kit возможно вернуть к
жизни даже файлы, затертые на ext3 (притом, что сами разработчики ext3 говорят о
невозможности проведения такой операции).

Починка файловых систем

Починить поломавшуюся файловую систему очень просто. Достаточно
воспользоваться стандартными утилитами fsck.vfat (для файловых систем FAT12,
FAT16 и FAT32), fsck.ufs (для UFS, UFS2, FFS) и ntfsfix (для NTFS).

К сожалению, ntfsfix не способна полностью вылечить NTFS. Она лишь исправляет
некоторые из ее проблем и устанавливает флаг принудительной проверки файловой
системы, так что следующая перезагрузка в Windows повлечет за собой запуск
chkdsk для полной проверки ФС.

Используя виртуальную машину, мы можем избежать необходимости перезагрузки в
Windows. Для этого:

  1. Запускаем виртуальную машину и устанавливаем винду на виртуальный
    жесткий диск.
  2. Отмонтируем раздел, содержащий файловую систему NTFS.
  3. Запускаем виртуальную машину, в качестве первого жесткого диска которой
    указываем виртуальный диск с Windows, а второго - наш настоящий жесткий
    диск.
  4. С помощью стандартных средств Windows запускаем проверку NTFS-раздела.

Копирование разделов

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

Пользователи UNIX клонируют разделы с помощью стандартной утилиты dd, которую
можно применять в связке с любой файловой системой. Для этого на новом диске
создается раздел, идентичный по размерам источнику, и выполняется команда "dd if=раздел1
of=раздел2 bs=1m". Таким же образом можно скопировать и NTFS-раздел, но в пакете
ntfsprogs для этой цели есть более подходящая утилита.

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

Для клонирования раздела достаточно выполнить следующую команду:

# ntfsclone --overwrite /dev/hda1 /dev/hdb1

А для создания образа:

# ntfsclone --save-image --output backup.img /dev/hda1

Утилита ntfsclone особенно удобна, если ты решил скопировать установленный
Windows на целый парк других машин (учебный класс или офис). Для этого
достаточно установить Windows на одну машину и создать образ, который затем
можно выложить в шару и с помощью Linux LiveCD залить на другие машины. Чтобы
они смогли загружаться, придется также скопировать MBR-запись диска:

# sfdisk -d /dev/sda > /share/sda-sfdisk.dump
# dd if=/dev/sda bs=512 count=1 of=/share/sda-mbr.dump

А затем записать ее на диск всех машин:

# sfdisk /dev/sda < /share/sda-sfdisk.dump
# dd if=/share/sda-mbr.dump of=/dev/sda

Перенос данных

Что делать, если ты решил полностью перейти на Linux, но не хочешь
использовать различные ухищрения и ntfs-3g для доступа к своим старым данным,
расположенным на NTFS-разделе? Ведь этот раздел может занимать большую часть
диска, и нет никакой возможности просто скопировать его содержимое на новый
раздел, отформатированный в ext3/ext4. В этом случае тебе на помощь опять придут
утилиты из пакета ntfsprogs, а точнее одна из них - ntfsresize, которая позволит
копировать данные небольшими порциями в новую файловую систему с последующим
уменьшением размера NTFS-раздела и увеличением ext3/ext4-раздела. Для этого тебе
понадобится какой-нибудь LiveCD, содержащий ntfsprogs и e2fsprogs версии не ниже
1.41 (для поддержки ext4, если ты, конечно, собираешься переносить данные на
нее). Также очень желательно, чтобы LiveCD содержал свеженький gparted, потому
что изменять размер вручную трудно и опасно (кроме изменения размера самой ФС,
предстоит менять размер раздела с помощью fdisk, одна ошибка и всю операцию
придется начинать сначала).

Итак, загружаемся с LiveCD и монтируем разделы жесткого диска. Допустим, его
размер составляет 120 Гб. Из них 80 Гб - под завязку набитый NTFS-раздел, а
остальные 30 Гб (да, именно 30, после перевода маркетинговых гигабайт в
настоящие объем диска оказывается равным примерно 111 Гб) - это раздел с
установленным Linux, занятость которого составляет 5 Гб. Значит, наше "окно"
равно примерно 25 Гб. Перемещаем файлы с NTFS-раздела на ext3/ext4-раздел до тех
пор, пока их совокупный размер не станет равен размеру окна. В результате
последний оказывается полностью заполненным, а первый "худеет" на 25 Гб.
Отмонтируем оба раздела и запускаем gparted. Выбираем NTFS-раздел, жмем вторую
кнопку мыши, выбираем Resize/Move и уменьшаем раздел на размер окна, выбираем
ext3/ext4-раздел и увеличиваем его на тот же размер окна (раздел придется
сдвинуть к началу диска, а затем увеличить). Так мы получаем еще 25 Гб
освободившегося места, что позволит нам скопировать часть файлов, а затем вновь
изменить размер. Четыре таких прохода, и мы полностью удаляем NTFS-раздел, а
раздел ext3/ext4 расширяем на весь диск.

Выводы

Как ты смог убедиться, Linux умеет не только работать с множеством сторонних
файловых систем, но и оснащен массой утилит для их модификации, проведения
диагностики и выполнения других операций. Ты никогда не окажешься в безвыходной
ситуации, держа под рукой LiveCD на базе Linux, который как раз и является тем
самым Святым Граалем любого системного администратора и пользователя.

WWW

Foremost, еще одна популярная программа для
восстановления файлов по шаблонам.

www.sysresccd.org -
System Rescue CD содержит все упомянутые в статье программы.

Восстановление файловой системы USB-флэш накопителя March 2nd, 2013

Давно уже хотел написать небольшую статейку по восстановлению данных - да все как-то не было случая, ибо писать "без ничего" как минимум неудобно - можно забыть написать про какой-то важный пункт, да и опять-таки - где взять принтскрины? Но, как говорится, кто ищет - тот найдет. Так и я. Хотел написать статью на конкретном примере - пожалуйста, случай представился. И ведь надо же было такому случиться, что писать буду на своем собственном примере?
Ситуация до боли знакомая если не каждому третьему пользователю USB носителей данных, то уж каждому пятому-то - как пить дать. Вставляешь со спокойной душой флэшку (жесткий диск, карту памяти, ...) в USB-шку, она тебе так прощально мигнет огонышком индикации - и все. И никакой активности, даже в окне "Мой компьютер" не отображается. Первая мысль до нЕльзя банальная - ну, надо переткнуть флэшку по-новой. Сказано - сделано. Вытаскиваем флэшку, вставляем в USB-разъем, и видим такую картинку:
001.


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

И тут уже кому что больше жалко - данные или флэшку; мне лично всегда было жальче данные.

Итак, ситуация постепенно доходит до объятого паникой сознания. И первое движение, которое возникает - нажать на кнопку "Форматировать диск" в вышеприведенном окне. Если сделать так, то в 99,9% случаев вы получите работоспособную флэшку. Но совершенно без данных - ибо она будет отформатирована.

Конечно, можно попытаться потом восстановить необходимые данные с помощью различных программ по ВОССТАНОВЛЕНИЮ ФАЙЛОВ. Но это путь долгий, сложный и главное - непродуктивный, ибо восстанавливаются, по статистике, в основном неважные файлы, к тому же большинство программ при восстановлении присваивает файлам не их изначальные имена, а имена из серии "00001~.doc", что само собой порождает необходимость потом все восстановленные файлы просматривать вручную, выискивая нужные. К тому же подобные программы обычно вытаскивают не только последнюю версию файла, но порой и энное количество его предыдущих копий, что порождает новую проблему - поиск последней версии интересующего нас файла. Еще одним важным недостатком такого метода, на мой взгляд, является то, что подобного рода программы восстанавливают, как правило, только файлы определенного типа, например, только текстовые файлы (.doc, .txt, .xls и тд), или только картинки-фотографии (.jpeg, .psd, и др).

Если обобщить, то к недостаткам метода, называемого ВОССТАНОВЛЕНИЕ ФАЙЛОВ, относятся следующие (в порядке критичности на мой личный взгляд):
- Зачастую - невозможность восстановления файлов по папкам (как они лежали раньше), и с прежними названиями. Отсюда - огромное количество времени, нужное на последующую сортировку восстановленных файлов, поиск необходимых (последних) копий интересующих нас файлов среди множества восстановленных, переименование и прочие "доработки" полученных файлов. У меня лет так восемь назад случилась подобная ситуация с внешним жестким диском на 60 гиг (большой объем для тогдашнего времени), на котором хранилась единственная версия фотоархива. До сих пор еще не все восстановленные тогда фотографии отсортированы по папкам - лежат в одной общей куче порядка 10 гигабайт фоток.
- "Заточенность" подобного рода программ на восстановление конкретных типов файлов (только тестовые, только фотографии) - и в связи с этим невозможность восстановления, например, запускных файлов программ и вообще любого другого контента, которое не относится к перечисленным в описании каждой конкретной программы.

Поэтому я предпочитаю другой путь.

ВОССТАНОВЛЕНИЕ ФАЙЛОВОЙ СИСТЕМЫ НОСИТЕЛЯ ИНФОРМАЦИИ.

В окне с предложением отформатировать поврежденный носитель данных нужно нажать "Отмена". После этого необходимо убедиться в том, что данный носитель физически живой (хотя приведенное выше окно косвенно подтверждает данный факт). Это можно проверить в сервисе Windows, называемом "Управление дисками". В Windows 7 сделать это можно следующим образом: кликнуть правой кнопкой мыши по значку "Компьютер" и в выпадающем меню выбрать пункт "Управление".
002.

В открывшемся окне в левой панели раскрыть пункт "Запоминающие устройства" (если он не раскрыт) и в нем выбрать "Управление дисками".
003.

После того, как операционная система прогрузит все имеющиеся в ее распоряжении физические носители (жесткие диски, флэшки, картридеры и прочее) ищем в списке свой засбоивший накопитель (найти его можно в частности зная его объем - так, в моем случае это была флэшка на 32 гигабайта). Нашли - смотрим на тип файловой системы. Скорее всего это будет так называемый RAW.
004.

Не надо путать RAW-тип файловой системы и RAW-тип файла , в котором, в частности, снимают многие профессиональные фотоаппараты. Это две кардинально разные вещи, хотя по названию и одинаковы. Хотя и в том, и в другом случае это так называемый "сырой" тип организации данных, просто в одном случае - касательно файловой системы, а в другом - соотносительно формата данных без какой-либо обработки, то есть именно в том виде, в котором они были получены с прибора для снятия этих самых данных.

RAW-тип файловой системы возникает тогда, когда по каким-либо причинам повреждается сектор на носителе информации, отвечающий за определение типа файловой системы (NTFS, FAT32 или др). Случиться это может по самым разнообразным причинам, но самые частые, пожалуй, следующие:
- сбой по питанию в процессе инициализации носителя информации
- действие вирусов
- старение носителя информации и физическое отмирание секторов, отвечающих за хранение информации о типе файловой системы

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

Теперь можно приступать собственно к восстановлению файловой системы.

Тут стоит отметить следующее:
- Первейшей рекомендацией является создание покластерной копии с поврежденного носителя информации. На практике это означает, что нужен как минимум еще один носитель информации, по объему превосходящий восстанавливаемый носитель информации. Рекомендация как минимум не лишенная смысла, так как в случае неудачной попытки восстановления файловой системы в этом случае будет возможность повторить операцию повторно. В реалии же обычно данный пункт игнорируется восстанавливающими, о чем некоторые потом мучительно переживают...
- Принцип восстановления файловой системы на разных носителях информации в общем-то одинаковый, но вот предпочтительное программное обеспечение - разное. Так например великолепную программу "PTDD Partition Table Doctor 3.5" можно использовать для восстановления файловой системы ТОЛЬКО жестких дисков, непосредственно установленных в компьютер. USB-устройства программой не поддерживаются. Для восстановления же информации методом восстановления файловой системы с флэшек и карт памяти очень удобно использовать программу R.saver , абсолютно бесплатную для некоммерческого использования на территории бывшего СССР.

Так как в моем случае поврежденным накопителем оказалась именно флэшка, то я использовал программу R.saver. Скачав программу с официального сайта компании R.Lab (а "весит" она менее одного мегабайта!), разархивируем ее в удобном месте и запускаем файл "r.saver.exe".
005.

Открывается начальное окно программы, в левой части которого выбираем интересующий нас накопитель, кликнув по нему левой кнопкой мыши.
006.

В правой части окна отображается расширенная информация о выбранном носителе. Убеждаемся, что выбрано нужное устройство, и жмем кнопку "Сканировать".
007.

На запрос программы о выполнении полного (посекторного) сканирования файловой системы накопителя, отвечаем утвердительно ("Да").
008.

После этого начинается процесс реконструкции файловой системы и определения находящихся на накопителе файлов:
009.

010.

Время данной операции зависит от объема и скорости работы восстанавливаемого накопителя, а также от мощности компьютера. В моем случае (Hi-speed"овая флэшка на 32 гб) восстановление информации заняло примерно 20-25 минут.

По завершению данной операции получаем следующее окно с отображением имеющихся на флэшке папок и файлов:
011.

Жмем кнопку "Массовое выделение" для того, чтобы скопировать интересующие нас файлы и папки с данного накопителя на другой, рабочий. Не нужно пугаться того, что объем папок показывается как "0 Кб". Все файлы, которые должны быть в папках - в них присутствуют. Просто вес самой папки (без содержащихся в ней файлов) равняется нескольким байтам, то есть в округлении до килобайт как раз отображаемым 0 килобайтам. Итак, выделяем нужные файлы и папки и жмем кнопку "Сохранить выделенное".
012.

Выбираем папку назначения (ее необходимо создать заранее), жмем "Выбрать".
013.

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

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

Читайте, как происходит восстановление данных с FAT диска . Какой алгоритм используется программами для восстановления файлов. Итак, файловая система обнаружена, и мы приступили к её анализу. Теперь нам требуется идентифицировать физические секторы на диске, принадлежащие данному конкретному файлу. Для этого программа анализирует файловую систему.

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

Содержание:

Ищем файл в таблице FAT

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

Самое интересное начинается в случае, если файл или каталог содержит более одного кластера. Последующие кластеры находятся при помощи структуры данных, называемой FAT. Эта структура используется с двоякой целью: для идентификации следующих кластеров в файлах и для определения того, свободен или занят данный конкретный кластер.

Рис.1 Физическая структура файловой системы FAT.

Перед тем, как начать анализ файловой системы FAT , требуется корректно идентифицировать три важных области этой системы.

  • Первая область – зарезервированная, она содержит данные из категории файловой системы. В версиях FAT12 и FAT16 зарезервированная область занимает всего один сектор, но формально размер этой области определяется в загрузочном секторе.
  • Вторая область – область FAT. Она содержит основные и резервные структуры файловой системе. Начало этой области – сектор, следующий за зарезервированной областью, а ее размер определяется количеством и размером структур FAT.
  • Наконец, последняя область – область данных. Именно в этой области хранятся файлы и содержимое каталогов.

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

При анализе файловой системы важно корректно идентифицировать все три физические области. Начало зарезервированной области – всегда в нулевом секторе файловой системы. Размер этой области указывается в загрузочном секторе, и для систем FAT12 и FAT16 составляет ровно один сектор. В FAT32 зарезервированная область может занимать несколько секторов.

Область FAT следует сразу за зарезервированной областью. Область FAT содержит одну или несколько структур FAT, а размер этой области вычисляется умножением количества структур FAT на размер каждой структуры. Эти значения хранятся в загрузочном секторе (зарезервированная область).

Восстановление файлов

Итак, мы вплотную подошли к вопросу о восстановлении диска FAT . Как мы помним, при удалении файла соответствующая ему запись в файловой системе помечается как удалённая, а занимаемые им кластеры, соответственно, получают статус свободных (не выделенных).

Важно отметить, что записи кластеров в FAT могут быть утеряны; соответственно, при анализе записи мы можем получить информацию о физическом адресе начала файла и об его размере. При этом какая бы то ни было информация об остальных кластерах файла отсутствует.

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

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

Рис.2 Сценарии восстановления файла.

На рисунке 2 описаны три различных сценария восстановления файла на примере шести кластеров файловой системы. Размер файла – 7094 байт, а размер кластера - 2048 байт. Это означает, что для хранения данного файла изначально были выделены четыре кластера. Нам также известен адрес начального кластера файла – кластер 56. Голубым цветом обозначены кластеры, в которых хранилось содержимое удалённого файла в каждом сценарии.

  • В сценарии 2.А файл занимает последовательно четыре кластера. В этом случае файл будет корректно восстановлен как первым, так и вторым методом: оба алгоритма корректно считают кластеры 56-59.
  • В сценарии 2.В файл был фрагментирован и записан в виде трёх фрагментов. Кластеры 57 и 60 на момент восстановления уже выделены другому файлу. В этом сценарии первый метод точно так же, как и в предыдущем случае, восстанавливает кластеры 56-59, что приводит к очевидной ошибке: файл будет восстановлен некорректно. Второй метод корректно восстановит секторы 56, 58, 59 и 61.
  • Наконец, в сценарии 2.С мы видим случай, при котором файлу выделены те же фрагменты, что и в прошлом сценарии, но кластеры 57 и 60 на момент восстановления не были заняты другим файлом. В этом сценарии оба метода ошибочно восстановят кластеры 56-59.

Как видим, второй метод даёт большую вероятность корректного восстановления файла по сравнению с первым. Именно этот метод был использован в продуктах Hetman Software .

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

Заключение

Как мы увидели, файловая система FAT устроена достаточно просто, поэтому она часто используется в картах памяти CompactFlash, Memory Stick, xD-Picture Card. При этом гарантированно восстановить файл, удалённый с диска, размеченного в данной файловой системе, получается не всегда.

Для ёмких носителей (например, жёстких дисков) Windows гораздо чаще использует другую файловую систему – NTFS. Файловая система NTFS устроена значительно сложнее FAT. Восстановление удалённых файлов в NTFS – гораздо более сложный процесс, тем не менее, приводящий к более уверенным результатам. Исследование восстановления файлов в системе NTFS – тема для отдельной статьи или даже серии статей.

Ряд пользователей могут столкнуться c невозможностью получения доступа к своему жесткому диску (или флеш-накопителю). В операционной системе такие устройства получают статус «Raw », и их файловая структура становится недоступной для пользователя. В этой статье я детально рассмотрю данную дисфункцию, расскажу, что делать в ситуации, когда файловая система RAW, а также как вернуть NTFS, FAT32, какие инструменты нам в этом помогут, и как ими воспользоваться.

Восстанавливаем разделы дисков

Что такое файловая система RAW

Чтобы понять, что это файловая система RAW и как вернуть формат NTFS, FAT32, необходимо определиться со смысловой нагрузкой самого термина «RAW». В переводе с языка Шекспира лексема «Raw» означает «сырой», «сырой материал». Соответственно, в нашем случае данным термином обозначаются диски, которые или ещё не отформатированы, или структура данных на них повреждена (ошибки в таблице разделов MBR и файловой таблицы MFT, вирусы, аппаратные проблемы ПК и так далее.).

Говоря проще, RAW диски – это диски, которые не распознаются ОС Виндовс по различным причинам. Обычно в таком случае Виндовс рекомендует отформатировать такой диск, чего делать как раз не следует, так как вследствие форматирования имеющиеся на диске данные будут потеряны.

Причины, по которым диск из NTFS и FAT32 становится RAW

Причины появления RAW дисков вместо привычных файловых систем NTFS и FAT32 следующие:

  • Внезапное отключение таких дисков (потеря напряжения в сети, физическое отсоединение их пользователем, проблемы в работе блока питания и т.д.), вследствие чего нарушается целостность и структура имеющихся на диске данных;
  • Проблемы с кабелями, соединяющими материнскую плату и жёсткий диск;
  • Работа вирусных программ, нарушающих целостность загрузчика, таблицы разделов, файловой структуры и так далее;
  • Bad-сектора на винчестере, вследствие чего структура системы на жёстком диске бывает повреждена;
  • Ошибке в установке или обновлении операционной системы;
  • Ошибки при работе с различными менеджерами разделов жёсткого диска;
  • Не плотное соединение флешки с USB-разъёмом ПК (в случае флеш-накопителя);
  • Проблемы в работе материнской плате компьютера и так далее.

Как вернуть NTFS, FAT32 из RAW

  • Попробуйте просто перезагрузить ваш компьютер , проблема может иметь случайный характер;
  • Проверьте плотность соединения кабелей к винчестеру , попробуйте использовать другой разъём для подключения винчестера на материнской плате, а также другой разъём ЮСБ компьютера при подключении внешнего флеш-накопителя;
  • Используйте возможности встроенной утилиты CHKDSK . Запустите командную строку от имени администратора, и в ней наберите

chkdsk X: /f (где Х – это буква RAW-диска)

Параметр «f» означает исправление ошибок на диске, то есть утилита CHKDSK не только ищет проблемы, но и исправляет их.

Замечу также, что данная команда актуальна, прежде всего, для тех дисков, которые были отформатированы в файловой системе NTFS. При этом если вы не можете загрузить операционную систему, то загрузитесь с помощью загрузочного системного диска или флешки (можно использовать различные сборки «Live CD»), выберите там «Восстановление системы», перейдите в «Дополнительные параметры» а потом в «Командная строка», и там наберите вышеуказанную команду.

Если же вы никак не можете получить доступ к командной строке со своего ПК, тогда рекомендуется подключить ваш жёсткий диск к другому компьютеру, и выполнить проверку на ошибки вашего диска уже с него.

  • Используйте возможности другой системной утилиты sfc , созданной для проверки целостности системных файлов. Также запустите командную строку от имени администратора, в ней напишите:

и нажмите ввод.

  • Если у вас имеется доступ к операционной системе, тогда стоит проверить ваш компьютер на вирусы с помощью специальных антивирусных программ (например, Web CureIt! или Malware-AntiMalware);
  • Если на проблемном диске нет важной информации (или она не существенна), тогда проблемный диск (или флешку) можно отформатировать . Нажмите на клавишу «Пуск», и в строке поиска наберите diskmgmt.msc, появится панель управления дисками. Кликните правой клавишей мыши на raw-диске и в появившемся меню выберите «Форматировать».

Если у вас файловая система RAW верните NTFS, FAT32 - используя сторонние программы

Если вы хотите восстановить файловую систему NFTS и FAT32, то стоит использовать функционал специальных программ, которым нам в этом помогут. Я предлагаю такие программы как Recuva и TestDisk.

Recuva

Одна из популярных программ для восстановления потерянных файлов – это Recuva . Скачайте, установите и запустите данный продукт, выберите опцию восстановления всех файлов, укажите проблемный диск, задействуйте опцию углублённого анализа и нажмите на «Начать».

После окончания проверки программа выведет список найденных файлов, пометьте их галочками и нажмите на «Восстановить».

ТеstDisk

Вторая программа, способная помочь в вопросе файловой системы RAW – это TestDisk.

  1. Скачайте и установите данную программу, выполните её запуск от имени администратора.
  2. Выберите команду «Create» (создать) и нажмите ввод, курсором выберите raw-диск и нажмите «Enter».
  3. После выбора нужного типа таблицы разделов нажмите на ввод, потом выберите «Analyze» и «Quick Search» (будет осуществлён быстрый поиск проблемных разделов).
  4. После того, как TestDisk найдёт проблемные тома, нажмите на «Write» (запись) для записи структуры найденного раздела.

Как изменить файловую систему флешки [видео]

Выше мной была проанализирована проблема, когда файловая система RAW. Наиболее оптимальным инструментом для возвращения NTFS, FAT32 является использование системной команды CHKDSK, а также специальных программ, способных восстановить файловую структуру проблемного диска. Если же не один из предложенных мной советов не оказался для вас эффективным, тогда рекомендую обратиться в сервисный центр – возможно у вашего винчестера имеются проблемы не программного, а аппаратного, характера, и ему необходим основательный ремонт.

Ситуация следующая. Есть винт на 160Гб. На нем 2 раздела - 40Гб и 120Гб. С целью установки убунты как второй системы была произведена разбивка 120Гб -> 100+10+2+8.
Итоги
1. При загрузке системы выводится сообщение MBR helper not found;
2. fdisk показывает один большой 160Гб диск.

Дураку понятно, что это начало веселой ночи.
Далее, под катом, решения вопроса.

1. Восстановление таблицы разделов

1.1. Parted magic
Данный LiveCD\USB дистрибутив , размером в 100Мб несет в себе огромную кучу софта, для работы с дисками. От разбивки, до восстановления.
Из них всех, нам нужны будут gpart , testdisk , fdisk и ms-sys .
1.2. Gpart
gpart - это утилита, сканирующая по-секторно диск на наличие разделов, которые присутствуют на носителе, но отсутствуют в таблице. В своей работе, она игнорирует уже существующую таблицу (если присутствует). Программа разаботана немецким программистом Michail Brzitwa и больше им не поддерживается. Вялотекущая разработка ведется командами Fedora и Debian. Текущая версия - 0.1h.

Утилита позволяет наиболее быстро и легко восстановить таблицу разделов, но она несет в себе несколько недостатков. Во-первых, разработка была давно заброшена, во-вторых, она иногда не совсем корректно определяет разделы.

Gpart может работать в 2-х режимах. Это быстрый анализ и подробное сканирование. В некоторых случаях, первого режима достаточно. Мы же будем смотреть на второй.

Gpart -if /dev/sda

-i - интерактивный режим. На каждую найденную партицию будет задан вопрос, сохранять ее, либо пропустить.
-f - полный скан диска.

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

Begin scan...
Possible partition(DOS FAT), size(1907mb), offset(0mb)
Possible partition(SGI XFS filesystem), size(5730mb), offset(1907mb)
End scan.
Checking partitions...
Partition(DOS or Windows 95 with 32 bit FAT, LBA): primary
Partition(Linux ext2 filesystem): primary
Ok.
Guessed primary partition table:
Primary partition(1)
type: 012(0x0C)(DOS or Windows 95 with 32 bit FAT, LBA)
size: 1907mb #s(3906544) s(16-3906559)
chs: (0/1/1)-(1023/19/16)d (0/1/1)-(12207/19/16)r
Primary partition(2)
type: 131(0x83)(Linux ext2 filesystem)
size: 5730mb #s(11736000) s(3906560-15642559)
chs: (1023/19/16)-(1023/19/16)d (12208/0/1)-(48882/19/16)r
Primary partition(3)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)

Primary partition(4)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Если все ОК, то соглашаемся на запись в таблицу разделов, скрещиваем пальцы и перезагружаемся.
В моем случае, программа определила разделы, которые были до разбивки (40 и 120), что не подходило и заставило искать альтернативные способы восстановления.

1.3. testdisk
Note: подробнее эта утилита описана в этом посте , здесь не буду повторяться.

Эта утилита аналогична предыдущей, но имеет ряд плюсов:
1. более свежая и активно поддерживается;
2. субъективно, работает намного быстрее;
3. функциональнее;
4. есть простой консольный интерфейс на базе ncurses.

Поехали!
1. в первом окне выбираем Create a new log file;
2. выбираем нужный диск (/dev/sda) -> Proceed;
3. отмечаем тип разделов как Intel;
4. выбираем Analyse current partition structure and search for lost partitions;
5. если найденные разделы верны, жмем Backup и переходим к пункту 6, есть возможность быстро пересканировать диск, если где-то ошибка (Quick search);
6. здесь уже виден зеленый список с разделами. Если ок, то записываем, иначе запускаем Deep search.;

В моем случае, результат был аналогичен результату gpart, что есть некорректен.
Запустив Deep search, выждав около 40 минут я получил ответ, от которого на душе так нехило отлегло.
Было найдено несколько партиций, которые накладывались одна на другую (это были изначальная (до манипуляций) 120Гб и новая, на 100Гб). Отметив ненужную, как удаленную, я записал таблицу на диск и перезагрузился. К счастью, все обошлось и компьютер вернулся к состоянию, который был изначально, а я мог с чистой совестью лечь спать.

3. Восстановление MBR

Для этой задачи, у нас в арсенале есть тулза ms-sys.
Сперва узнаем, что с нашей MBR.

Ms-sys /dev/sda
/dev/sda has an x86 boot sector
it is unknown boot sector

Теперь видно, что на данном диске нет загрузочного сектора.
Утилита может работать с MBR различных операционных систем. Список можно получить, запустив программу без агрументов. В моем случае, необходим был от Windows 7.
Записываем MBR на диск:

Ms-sys -7 /dev/sda
Windows 7 master boot record successfully written to /dev/sda

Проверяем:

Ms-sys /dev/sda
it is Microsof 7 master boot record, like the one this
program creates with the switch -7 on a hard disk device.

Вот и все, нужная MBR установлена и можно перезагружаться.

3. Outro

Этот пост пример того, как на пустом месте можно создать себе проблему и полночи заниматься не тем, чем надо. Но это дало неоценимый опыт, который я постарался изложить здесь.
Возможно, кому-нибудь он пригодится. Ведь в такую ситуацию попасть очень не сложно, а детального мануала особо-то и нет.