Коррумпированная папка NTFS недоступна из Windows, Mas OSX или Linux

У меня есть внешний жесткий диск 2 ТБ с большим количеством видеофайлов от GoPro и Sony Handycam, а также другого резервного содержимого. Недавно, пытаясь сделать резервную копию с моего Mac (используя немного взлома через OSXFUSE, чтобы разрешить запись в файловую систему NTFS, которая работала для меня до сих пор), я обнаружил, что в одной из моих папок отсутствуют некоторые папки. Я удалил внешний HD и попытался восстановить его у Ubuntu, но в Ubuntu я получаю еще меньшую видимость содержимого. См. Снимок экрана ниже. 2 папки, окрашенные фиолетовым цветом, больше не действуют как папки, а их имена сокращены, они должны читать «Navimag Ferry» и «Sony Hanicam» (опечатка от Handycam).

введите описание изображения здесь

Когда я запускаю ls -al я получаю следующее

введите описание изображения здесь

Мне кажется, что информация есть, потому что доступное пространство не изменилось.

До сих пор я пробовал следующее:

 sudo ntfsfix /dev/sda1 

Что дает следующий результат

 Mounting volume... OK Processing of $MFT and $MFTMirr completed successfully. Checking the alternate boot sector... OK NTFS volume version is 3.1. NTFS partition /dev/sda1 was processed successfully. 

а также

 sudo testdisk /dev/sda1 

Используя testdisk я использовал функцию quick search в analyse а затем deeper search но оба возвратили Structure: Ok .

введите описание изображения здесь

Кроме того, я использовал функцию undelete но не смог найти недостающие файлы или папки.

Мне кажется, что связь между данными и структурой каталогов отсутствует, но я не уверен, как вернуть эту ссылку.

Есть идеи??

Спасибо,

Стю.

Небольшой отказ от ответственности / введение

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

Что (вероятно) произошло

2 папки, окрашенные фиолетовым цветом, больше не действуют как папки и их имена сокращены

Записи файлов NTFS (называемые записями MFT) содержат некоторые важные элементы:

  • Флаги → Некоторые биты, описывающие файл. В частности, один бит соответствует «Это папка?» вопрос и другое: «Это удалено или все еще выделено?» ,
  • $FILE_NAME → Каждый файл имеет одно или несколько имен файлов, поскольку NTFS совместим с именами DOS 8.3.
  • $STANDARD_INFORMATION атрибут → Это содержит MAC (модификация, доступ, создание) раз и немного больше.

Кроме того, каждый каталог содержит один $INDEX_ROOT и, возможно, несколько атрибутов $INDEX_ALLOCATION перечислены имена детей (но не MAC).

Из вашего вывода мне кажется, что записи MFT этих двух каталогов были потеряны. Вы по-прежнему считаете их элементами внутри camera uploads потому что они находятся в одном из атрибутов индекса, но когда система пытается прочитать записи, чтобы показать вам даты, она терпит неудачу.

Драйвер NTFS работает как любая другая «обычная» утилита ОС для доступа к файловой системе: она идет сверху вниз. Разбейте узел и вы потеряете любое поддерево (содержимое этих каталогов, в основном).

Вот где может помочь программное обеспечение для восстановления данных.

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

Поскольку это веб-сайт, связанный с программированием , я кратко объясню, как вы программируете программное обеспечение, способное читать раздел NTFS, где отсутствуют некоторые записи MFT:

  • Сканируйте весь диск, пытаясь разобрать любую пару секторов, начиная с FILE в качестве допустимой записи MFT (здесь я немного упрощаю)
  • Создайте дерево снизу вверх, сделав это для любого узла:
    • Прочитать идентификатор родительского узла
    • Если у вас есть узел с указанным идентификатором, свяжите его с родительским
    • В противном случае создайте Folder_ разделе « Lost Files и Folder_ его к нему
  • Прочитайте атрибуты $DATA каждого файла, который вы хотите восстановить, и скопируйте в другое место

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

Инструменты, которые вы можете попробовать

Я упомянул несколько программ в этом ответе на веб-сайте «Рекомендации по программному обеспечению». Они были специально нацелены на сильно поврежденные диски, и они включали:

  • DMDE (коммерческий, для Windows, но имеет консольную версию для Linux)
  • Restorer Ultimate (коммерческий, для Windows и OS X)
  • RecuperaBit (с открытым исходным кодом, на основе Python): он работает на Linux, но он был протестирован в Windows … как один раз . Он должен работать и на OS X.

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

Восстановление этих двух каталогов

Прежде всего запустите RecuperaBit на диске. Я бы настоятельно рекомендовал запустить его на двоичной копии, но он ничего не пишет, поэтому вы можете попробовать запустить его прямо на устройстве:

 mkdir /media/user/External/recovered_files cd [full path of recuperabit] pypy main.py /dev/sdb -o /media/user/External/recovered_files -s /media/user/External/savefile.save 

Здесь я предполагаю, что /dev/sdb – поврежденный диск, и вы хотите сохранить файлы на другом диске, установленном на /media/user/External . Если вы запустите инструмент на блочном устройстве напрямую, я думаю, вам понадобится sudo .

Процесс сканирования займет много времени (расслабьтесь и расслабьтесь, 2 ТБ много!), Однако результаты сохраняются в savefile.save если вы запустите инструмент во второй раз. Тип recoverable чтобы узнать идентификатор раздела, который вам нужно восстановить. Идентификатор предоставляется RecuperaBit и не отражает таблицу разделов.

Предполагая, что это #2 , сохраните сброс CSV содержимого:

 csv 2 contents.csv 

Программа напечатает путь к сохраненному файлу. Откройте его с LibreOffice и найдите идентификатор папки (ов), которую вы хотите восстановить. Например, корневой каталог будет иметь идентификатор 5 , но вы, вероятно, не захотите получить копию всех файлов, если пропустите только два каталога.

Скажем, сломанная директория имеет идентификатор 124 . Вернитесь к RecuperaBit и введите:

 restore 2 124 

Где #2 по-прежнему является идентификатором раздела. Он перечислит файлы, которые он восстанавливает. Вы можете перейти к выходному каталогу и проверить, есть ли то, что вы хотите. Если это не так, повторите попытку: возможно, вы выбрали неверный идентификатор.