Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Файловые системы Linux

Утилиты для восстановления потерянных данных в Linux

В.Костромин

На днях, в ходе небольшой ревизии содержимого своего сайта я наткнулся на перевод статьи "10 способов восстановления удаленных файлов в linux", исходный вариант которой датирован 21 июня 2007 года. Перечитав статью и попытавшись пройти по приведенным в ней ссылкам, я обнаружил, что некоторые ссылки вообще не работают (сайты разработчиков в сети пропали), а некоторые из упомянутых в статье утилит давно не обновляются и не поддерживаются.

Возникла идея посмотреть, какие же средства восстановления случайно удаленных файлов существуют на настоящий момент. Полагаю, что интерес к средствам такого рода за прошедшие годы не пропал. Ведь начинающие пользователи Линукс (как, впрочем, и других операционных систем) часто попадают в ситуацию, когда по ошибке, вызванной неопытностью, удаляют какие-то файлы и тут же спохватываются, что удалили не то, что хотели. А может быть и вообще не хотели что-то удалять. В Windows в таких случаях спасает Корзина. Впрочем, говорят, что в некоторых дистрибутивах Линукс (например, в Ubuntu) тоже есть Корзина. Проверить это утверждение на данный момент я не могу, поскольку не имею под рукой компьютера с Ubuntu. Но не Убунтой единой жив линуксоид, так что я занялся поиском в Интернет сведений о средствах восстановления случайно удаленных файлов для Linux.

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

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

Итак, вот список утилит для восстановления потерянных данных, которые мне удалось разыскать (данные актуальны по состоянию на 10 ноября 2010 года).

  1. unrm - небольшая консольная утилита, которая при некоторых условиях, может восстановить почти 99% удаленных данных (похожа на утилиту undelete в DOS). Перед её использованием внимательно прочитайте файл FAQ и желательно Linux Ext2fs Undeletion Mini-HOWTO. Применение:
    unrm [-b (no block padding)][-e (every block)][-f fstype][-vW] device [block...]
  2. giis (gET iT i sAY) - средство восстановления файлов для файловых систем Ext2/Ext3. После установки могут быть восстановлены текущие файлы и новые созданные файлы в /root и /home. Утилита позволяет пользователям восстановить все удалённые файлы, восстанавливать файлы, принадлежащие указанному пользователю, выводить (dump) данные из местанахождения файлов и восстанавливать файлы определённого типа, например, текстовые или MP3. Имеется также анализатор, помогающий пользователям во время восстановления.
  3. ddrescue (в Ubuntu эта утилита называется gddrescue) Эта утилита копирует данные из файла или с аппаратного устройства, содержащего данные, в другое место, предпринимая при этом попытки исправить все имеющиеся ошибки чтения. Основные операции ddrescue выполняет в автоматическом режиме, заполняя параллельно файл протокола. Если имеется две или более копий поврежденных файлов, ddrescue способна полностью восстановить файл, устранив все ошибки.
    ddrescue устанавливает размер буфера ввода/вывода равным размеру сектора, так что ее можно использовать для посекторного восстановления данных с устройств.
  4. TestDisk - это мощная бесплатная программа для восстановления данных! Она была разработана в первую очередь, как инструмент восстановления утраченных разделов и/или восстановления загрузочной способности дисков, если эта проблема вызвана програмно, вирусами или ошибками человека (такими, как случайное удаление Таблицы Разделов). Восстановить Таблицы Разделов TestDisk-ом очень легко. Но TestDisk может также восстанавливать удаленные файлы на файловых системах FAT, NTFS и ext2; копировать файлы с удалённых FAT, NTFS и ext2/ext3/ext4 разделов. (Смотрите статью В.Симон, "Testdisk - восстановление таблицы разделов диска").
  5. Foremost - консольная программа, позволяющая искать файлы на дисках или их образах по hex-данным, характерным заголовкам и окончаниям. Программа прочёсывает файлы на предмет совпадения заранее определённых hex-кодов (сигнатур), соответствующих наиболее распространённым форматам файлов. После чего экстрагирует их из диска/образа и складывает в каталог, вместе с подробным отчётом о том, чего, сколько и откуда было восстановлено. Типы файлов, которые foremost может сразу восстановить: jpg, gif, png, bmp, avi, exe, mpg, wav, riff, wmv, mov, pdf, ole, doc, zip, rar, htm, cpp. Есть возможность добавлять свои форматы (в конфигурационном файле /etc/foremost.conf), о которых программа не знает.
    Статьи: "Восстановление удаленных файлов при помощи foremost", "Восстановление удалённых файлов в ОС Linux".
  6. R-Linux является бесплатной программой для восстановления файловых систем Ext2/Ext3/Ext4 FS, используемых в Linux и некоторых Unix-системах. Используемая в R-Linux Технология Сканирования и удобный в установке параметров интерфейс программы дают пользователю абсолютный контроль над процессом восстановления данных. R-Linux позволяет скопировать информацию и создать образ целого диска или его части, а уже затем работать с файлом образа, сохраненным на другом носителе, как с оригинальным диском. R-Linux производит поиск файлов известных типов, используя типовые характеристики их структур, что позволяет пользователю искать и восстановить файлы с устройств, где файловая система неизвестна, - HD, CD, DVD, дискет, USB дисков, ZIP дисков и устройств флеш-памяти (Compact Flash Card, Memory Sticks). Однако, в программе отсутствует возможность восстановления данных по сети, а также функциональность по реконструкции дисковых массивов и восстановления с них данных.
  7. DMDE - DM Disk Editor and Data Recovery Software. Программа для редактирования дисков и восстановления данных. В бесплатной версии доступны все функции дискового редактора, управления разделами и восстановления файлов, за исключением возможности группового восстановления файлов и каталогов; полная версия позволяет восстанавливать группы файлов и директории с сохранением структуры каталогов.
  8. PhotoRec - это утилита, входящая в состав пакета TestDisk. Предназначена для восстановления испорченных файлов с карт памяти цифровых фотоаппаратов (CompactFlash, Secure Digital, SmartMedia, Memory Stick, Microdrive, MMC), USB flash-дисков, жестких дисков и CD/DVD. Восстанавливает файлы большинства распространенных графических форматов, включая JPEG, аудио-файлы, включая MP3, файлы документов в форматах Microsoft Office, PDF и HTML, а также архивы, включая ZIP. Может работать с файловыми системами ext2, ext3, FAT, NTFS и HFS+, причем способна восстановить графические файлы даже в том случае, когда файловая система повреждена или отформатирована.
    Может работать под операционными систмами Linux, DOS, Windows, FreeBSD, NetBSD, OpenBSD, Mac OS X и SunOS
  9. Mondo Rescue. Основное назначение этой программы - создание резервных копий данных. Она может создавать резервные копии на магнитных лентах, CD, на удаленных носителях по NFS или в виде ISO-образов на локальных дисках. Но в случае повреждения данных программа позволяет восстановить их полностью или частично, даже если ваш жесткий диск недоступен обычными средствами.
    Mondo запускается на всех основных дистрибутивах Linux, поддерживает LVM, RAID, ext2, ext3, JFS, XFS, ReiserFS, VFAT и другие файловые системы. Может восстанавливать геометрию диска, обеспечивать миграцию данных на RAID-массивы, проверять целостность файловой системы компьютера. Кроме того, позволяет проводить реструктуризацию диска, уменьшать/увеличивать разделы, переназначать устройства, добавлять жесткие диски.
  10. Safecopy - инструмент для восстановления данных, который пытается извлечь данные из доступных, но проблематичных носителей (с поврежденными секторами). В качестве источника данных могут выступать внешние устройства (такие как CD, DVD и Blu-ray) и разделы жеских дисков. Программа обладает тем преимуществом, что продолжает работу даже тогда, когда другие средства прекращают ее из-за ошибок ввода/вывода. Обычные средства копирования, такие как cat, cp или dd не позволяют создать образ диска или съемного носителя, если произошел сбой при чтении какого-то сектора.
  11. The Sleuth Kit (TSK) - набор программ (fls, icat, ffind, ifind, mmls, fsstat, etc.) для проведения криминалистического анализа файловых систем. TSK - совокупность UNIX инструментальных средств командной строки, которые могут анализировать файловые системы NTFS, FAT, FFS, EXT2FS, и EXT3FS. TSK читает и обрабатывает структуры файловой системы самостоятельно, поэтому не требуется поддержка файловой системы операционной системой.
    Статьи: Восстановление спрятанных или потерянных данных.
  12. Scalpel - это средство быстрого восстановления файлов. Уникальность данного ПО заключается в том, что оно не зависит от файловой системы. Программа ищет по базе данных начало и конец файлов известных форматов и пытается найти их на диске. Поэтому восстановление возможно как с FATx, NTFS, ext2/3, так и с "голых" (raw) разделов.
    Статьи: Восстановление удаленных файлов с помощью Scalpel

Кроме перечисленных в некоторых статьях упоминаются также утилиты Magicrescue и ntfsundelete из пакета ntfstools.

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

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

alias rm="rm -i"
Тогда перед выполнением удаления вам будет задан дополнительный вопрос, действительно ли вы этого хотите.

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

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

Нелишне напомнить также, что существуют специальные дистрибутивы Linux, запускающиеся с CD или других съмных носителей и содержащие наботы утилит администрирования, в том числе и инструменты восстановления данных. В качестве примера таких дистрибутивов можно упомянуть SystemRescue CD и Trinity Rescue Kit.

Я полагаю, что приведенный выше список через некоторое время тоже устареет, как это случилось с перечнем, приведенным в статье, упомянутой в начале этой заметки. Зато появятся новые средства, может быть более совершенные. Чтобы быть в курсе, заглядывайте иногда на сайт "Каталог программного обеспечения для Linux", а еще лучше - помогайте поддерживать этот каталог в актуальном состоянии. Тогда в любой нештатной или штатной ситуации вы или другой пользователь Linux сможет найти необходимые средства и инструменты для решения своих проблем.

Источники и другие статьи на ту же тему

Дополнение от 11.01.2014: получил сегодня письмо от одного из посетителей сайта, который пишет, что нашел очень интересную статью на тему восстановления удаленных файлов - читайте: "Восстановление удаленных файлов на ext3/ext4"