Восстановление удаленных файлов в ubuntu. Программы для восстановления файлов на Ubuntu

Неприятности случаются чаще, чем хотелось бы. Одной из них является удаление файла с важными данными. Причем в Unix, считается, что он отправляется в небытие. К сожалению, действительно, восстановление удаленных файлов в Unix не столь простая задача, как в Windows с ее привычной корзиной для удаленных файлов и многочисленными утилитами от сторонних поставщиков (к примеру, Norton Utilities). Это связано с особенностями архитектуры файловых систем
Unix. ОС Linux более широко трактует понятие файла. Под файлом понимается любой объект, имеющий имя в файловой системе. Одним из таких объектов является каталог. В каталоге хранится как имя файла, так и дополнительная информация о файле - его размер, информация о владельце файла, местоположение на диске, дата создания, дата последней модификации, права доступа и много другое. Причем для эффективности, дополнительную информацию выносят в специальную структуру, а в каталоге оставляют только ссылку на эту структуру. При удалении файла эта дополнительная информация физически не удаляется с диска, а лишь отмечаются как свободные соответствующие блоки. Поэтому существует потенциальная возможность восстановления, удаленного файла, пока на место его расположения ничего не записывалось. Я попытаюсь предложить алгоритм действий при возникновении такой неприятности.

Прекращение дальнейшей работы.

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

Сам себе некрофил.

Рассмотрим два варианта восстановления. Один достаточно универсальный, применим, скорее всего, в любой системе Unix. Второй - заточен под работу с файловой системой Ext2
Linux.

Восстановление файлов с известным содержимым

* создаем копию корневого раздела и помещаем ее в файл из раздела /export. Этот раздел должен иметь достаточно свободного места, чтобы вместить в себя целиком раздел, на котором был удален файл

# df -k//export
File system Kbytes used avail capacity Mounted on
/dev/dsk/c0t3d0s0 122070 19512 102558 16% /
/dev/dsk/c1t0d0s0 17592638 14425963 3166675 82% /export
# dd if=/dev/dsk/c0t3d0s0 of=/export/recover.dsk
263077+0 records in
263077+0 records out
# ls -l
-rw-r-r-- 1 root other 134701056 Jul 1 16:54 recover.dsk

* запускаем команду cat с ключом -n (вывод номеров строк), вывод которой перенаправляем утилите fgrep, которая, осуществив поиск по заданному шаблону, отсечет все лишнее

# cat -n recover.dsk | fgrep "root:x:0:1"
200601 root:x:0:1:Super-User:/:/sbin/sh
202108 root:x:0:1:Super-User:/:/sbin/sh

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

* выведем некоторое количество строк после найденной
# fgrep -A10 "root:x:0:1" recover.dsk > passwd
# cat passwd
root:x:0:1:Super-User:/:/sbin/sh
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
...

ключи -A<число строк> и -B<число строк> утилиты fgrep позволяют выводить несколько строк, расположенных после (after) и до (before) найденной по шаблону строки. Если вы сможете получить весь свой файл за один шаг - то вам крупно повезло. Но, к сожалению, файлы обычно фрагментированы, и чем больше размер файла, тем выше вероятность фрагментации и больше самих фрагментов. Поэтому, скорее всего, придется повторять описанную процедуру, используя различные шаблоны и объединяя полученные части. Сложно бывает понять, какая из версий файла, сохранившихся на диске, последняя. Это определяется, только просмотром содержимого восстановленного файла. А значит, вам придется восстанавливать все версии файла. Довольно нудно, но эффективно.

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

Этот метод применяется в случае удаления командой rm или функцией unlink и не требует при восстановлении знания содержимого удаленного файла. Для работы нам потребуется отладчик файловой системы debugfs довольно мощная утилита, применяемая обычно для проверки и изменения файловой системы и предоставляющая непосредственный доступ к файловой системе. Нам потребуются три ее команды:

  • lsdel - вывод всех удаленных индексных дескрипторов в данной файловой системе
  • cat - просмотр содержимого, соответствующего дескриптору
  • dump - восстановление файла

Запускаем debugfs в требуемом разделе:

На приглашение вводим команду lsdel(чашка кофе не помешает, поскольку системе потребуется время на просмотр всего раздела):

debugfs: lsdel
Inode Owner Mode Size Blocks Time deleted
723300 1000 100664 27018 2/ 7 Mon May 20 19:08:17 2002
723301 1000 100444 1671 1/ 7 Tue May 20 19:08:17 2002
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
944887 1037 100600 597 1/ 1 Sun Jan 26 20:05:00 2003
717281 1000 100400 1 1/ 1 Sun Jan 26 20:05:13 2003
327101 1000 100644 15 1/ 1 Sun Jan 26 20:07:06 2003

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

#echo lsdel | debugfs /dev/hda6 > /tmp/lsdel-output

Если с момента удаления не было операций с разделом, то интересующие нас данные будут в конце списка. Посмотрим содержимое, соответствующее последнему дескриптору, набрав команду:

debugfs: cat <327101>
my_very_important_data

Удаленный файл найден, он содержал единственную строку. Команда dump восстанавливает файл, записывая его на диск под именем
my_recovered_file:

debugfs: dump -p <327101> /tmp/my_recovered_file

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

Восстановление группы файлов в Linux Ext2

Для восстановления группы файлов, целесообразно воспользоваться утилитой Тома Пайка
. Установка стандартна:

# tar zxf recover-1.3.tar.gz
# cd recover-1.3
# make
# make install

По умолчанию утилита устанавливается в систему каталогов с корнем /usr. Если надо установить в другое место - читайте ReadMe. Во время работы recover задав несколько простых вопросов, типа: кто является владельцем файлов, когда эти файлы были удалены, каков приблизительный размер этих файлов, запускает debugfs, и восстанавливает соответствующие заданному критерию индексные дескрипторы, помещая их в каталог, указанный пользователем. К сожалению, имена файлов не подлежат восстановлению. Восстановленные файлы получают имена, состоящие из префикса dump и последующего номера индексного дескриптора.

А что же мы восстановили?

Для идентификации восстановленных файлов используем две утилиты strings и file. Первая отображает последовательность символов ASCII, извлекая ее из указанного файла, вторая - выясняет тип файла (например, является ли он архивом или, скажем, файлом
PostScript).

Запускаем утилиту file:

# file *
dump39788: directory
dump98008: PGP armored text signed message
dump80154: gzip compressed data, deflated, last modified: Sun Jan 28 03:31:21 2001, os: Unix
dump73290: ASCII text
dump67095: ?diff? output text
dump72945: JPEG file
dump9773: MPEG 1.0 layer 3 audio stream data, 128 kBit/s
dump8176: ASCII C program text
dump58764: Bourne shell script text executable
dump3223: troff or preprocessor input text

Можно несколько автоматизировать процесс, используя простейшие сценарии наподобие следующего, добавляющего расширение к текстовым файлам программ на языке С:

# for i in ?file * | grep ? ASCII C program text? | \awk -F: ?{print $1}??;
do mv $i $i.c; done

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

# strings dump44768

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

Заключение

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

Пришел ко мне знакомый с такой проблемой: Нужно восстановить удаленные файлы с флэш-карты фотоаппарта. Работаю я в магазине по продаже и настройке компьютеров и естественно, что там у нас только Windows. Была у меня в запасе одна безотказная программа, которая выручала меня, и не только, не один раз — Zero Assumption Recovery. Хорошая программа на самом деле, но платная и для винды. Одним словом сканировала она 4 гиговую флэшку часа 2-3, кое-что нашла. Попытался восстановить, но в итоге в восстанавливаемой папке ничего не оказалось. Для меня это был шок! Такое с этой прогой было впервые. Решил попытаться поколдовать с картой памяти дома, но уже на родной Убунту 11.10.

Для этого я вызвал программу для восстановления именно с карт памяти или флэшек под названием PhotoRec из пакета TestDisk. Если программа не установлена, то устанавливаем:

sudo apt-get install testdisk

Теперь, не закрывая Терминал, вызываем программу командой

и вводим пароль пользователя

Далее перед нами откроются всевозможные подключенные диски на нашем компьютере. Нужная мне флэшка была третья. Стрелками вверх или вниз, вправо или влево мы будем передвигаться по Терминалу. Выделяем нужный диск/карту/флэшку, в нашем случае UDF 2.0 Silicon-Power 8G и жмем Enter.

Если нужно восстановить все файлы, то жмем Enter, а если нужно восстановить файлы одного или нескольких типов, то стрелкой Вправо переходим на пункт File Opt и далее жмем Enter.

По умолчанию все типы файлов выделены для поиска и восстановления. Буквой S снимаем все выделения. Стрелками Вверх и Вниз ищем нужный тип файлов и выделяем кнопкой Пробел. Жмем Enter.

В нижнем меню переходим на пункт Search.

Выбираем пункт FAT32. Жмем Enter. Из всех вариантов выбираем Other , т.к. наша флешка имеет файловую систему FAT32.

Если выбрать пункт FREE, то поиск будет произведен в пустом пространстве и в этом случае будут восстановлены только удаленные файлы, а если выбрать WHOLE, то поиск будет произведен на всей поверхности флешки или диска.

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

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

Восстановление удаленных фалов Linux

Существуют 2 варианта восстановления данных в системе Линукс – непосредственно с жесткого диска системы и с флешки.

Восстановление данных жесткого диска Linux

Файловые системы, используемые во всех ОС, не только в Unix-подобных, организованы таким образом, что не дают удаленному файлу пропасть бесследно. То есть, если файл был создан и находился на жестком диске, значит, он занимал некоторое пространство и был внесен в список ссылок среди других объектов.

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

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

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

Так как в Linux «Корзина» работает слегка иначе, чем в Windows, первым делом следует ее проверить. Удаленные обычным методом файлы, без очистки корзины после этого, хранятся именно там. Для восстановления достаточно подключить накопитель, зайти в корзину и восстановить объект.

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


Программы для восстановления файлов в Linux

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

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

Самая распространенная программа для работы с разделами в Linux. Однако не со всеми дистрибутивами она идет в комплекте. Не самый надежный помощник в подобных операциях, но попробовать ее, как вариант, стоит.


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

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

Установка и использование просты:


Более наглядно процесс можно увидеть здесь:

Восстановление данных Ubuntu с TestDisk

TestDisk также может помочь в восстановлении файлов из-под Linux, но несколько иначе. Дело в том, что данный софт нацелен не на извлечение данных с накопителей, а для тестирования и восстановления работоспособности созданных на них разделов.

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

Теперь же она поставляется совместно с TestDisk, и из-за такого объединения усилий конечная утилита считается лучшей среди программ для восстановления файлов Ubuntu. Чтобы избежать проблем по неопытности пользователя, во время основных настроек и манипуляций, утилита использует подход «все в системе только для чтения».

Определяя ошибки информации, TestDisk может воссоздать потерянные разделы в различных ФС, таких как, например, FAT, NTFS и EXT4. Даже если раздел ранее был удален, найдя его следы, программа сможет исправить зависимости, не позволяющие корректно обращаться к файлу. Программа доступна в официальном репозитории Canonical. Для того чтобы приступить к восстановлению данных с жесткого диска Ubuntu, нужно выполнить инструкцию:


Восстановление данных Линукс с Safecopy

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

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

Для работы с программой нужно:


Как удалить файл на Ubuntu

Для того чтобы удалить файл в Ubuntu, есть много способов. Но также все зависит от того системный файл это или пользовательский. Понять это просто. Все, что находится до директории /home, – системные файлы, внутри же нее – пользовательские.

Ext2/3/4FS (созданные в Linux или другой ОС), FAT12, FAT16, FAT32, NTFS, NTFS5 (созданные или измененные в Windows 2000/XP/2003/Vista/7/8), exFAT, ReFS, APFS, HFS+, HFSX, HFS и UFS1, UFS2, UFS BigEndian (использующиеся в ОС FreeBSD, OpenBSD и NetBSD).

Поддержка стандартных уровней RAID: набор томов, 0, 1, 4, 5, 6. Поддержка вложенных и нестандартных уровней RAID: 10(1+0), 1E, 5E, 5EE, 6E. Поддержка задержки контроля четности для всех соответствующих уровней RAID. Поддержка пользовательских схем RAID.

Автоматическое распознавание параметров RAID. R-Studio способна распознавать все параметры для RAID 5 и 6. Это позволяет пользователю решить одну из наиболее трудных задач при восстановлении RAID - определение его параметров.

Новый улучшеный алгоритм для восстановления файлов по их сигнатурам: данная функция позволяет распознать типовые характеристики структур распространенных типов файлов и восстановить данные с устройств, на которых файловая система повреждена или неизвестна (HDD, CD, DVD, дискет, USB дисков, ZIP дисков, устройств флеш-памяти (Compact Flash Card, memory sticks) и других съемных носителей).

Пользовательские известные типы файлов. Пользователь может создавать и добавлять в состав R-Studio новые типы файлов любой степени сложности для их точной идентификации.

Поддерживаемые Операционные Системы: файлы могут быть восстановлены , на которых установлены ОС Win2000, XP, Vista, Win7, Win8, Mac OS X или Linux и определенные ОС платформы UNIX.

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

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

Создание файла-образа: при помощи R-Studio можно создать файл-образ целого физического диска, логического диска или раздела. Такие образы являются точными копиями объектов и совместимы со всеми предыдущими версиями R-Studio.

Дополнительные возможности при создании файла-образа (другой формат файла-образа): образы могут быть разделены на неколько частей, сжаты и защищены паролем. Они совместимы только с текущими версиями R-Studio и с программой R-Drive Image.

Создавать образ и сканировать копируемые данные можно одновременно.

Модуль копирования диска: возможно побайтное копирование любого объекта панели Диски (Drives), а также копирование разделов и жестких дисков с изменением их параметров.

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

Загрузочное устройство R-Studio Emergency. R-Studio Emergency запускается с внешнего USB диска, CD/DVD или комплекта дискет. Это весьма полезно тогда, когда необходимо восстановить данные с компьютера, который не загружается по причине повреждения файловой системы.

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

Мониторинг параметров S.M.A.R.T. R-Studio может отображать параметры S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) для жестких дисков которые показывают состояние их аппаратной части и предсказывать их возможные отказы. Нужно избегать любую дополнительную нагрузку на такие диски если появляются предупреждения от системы S.M.A.R.T. Иконки жестких дисков в Drive View (панель Диски) используются для показа общего состояния S.M.A.R.T. для дисков.

Иногда так случается, что мы удаляем, как казалось бы ненужные файлы (изображения, видео, текстовые документы и пр.), а потом вдруг сожалеем об этом, т.к. среди удалённых, оказались нужные. Хорошо если мы удаляем файлы в Корзину , откуда очень просто восстановить, нажав сочетание клавиш Ctrl+Z и тогда все файлы, что находятся в Корзине будут восстановлены по своим прежним папкам или можно выборочно, кликнув правой кнопкой на нужный файл в Корзине и в контекстном меню - Восстановить .

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

Scalpel — простое высокодейственное средство восстановления файлов.
Scalpel — это средство быстрого восстановления файлов, которое читая из базы данных начало и конец файлов известных форматов, пытается найти их на диске. Уникальность данного ПО заключается в том, что оно не зависит от файловой системы. Поэтому, восстановление возможно как с FATx, NTFS, ext2/3 , так и с "голых" (raw) разделов . Инструмент может использоваться как для цифрового поиска информации, так и для восстановления файлов.

Scalpel есть в репозиториях практически всех дистрибутивах Linux . В Ubuntu и производных вы можете установить его из Центра приложений или выполнить команду в терминале на установку:

sudo apt-get install scalpel

После установки вы не найдёте в системном меню Scalpel , т.к. я упоминал выше, этот инструмент запускается из терминала определённой командой. Но прежде чем запустить команду на поиск безвозвратно удалённых файлов, вы должны в конфигурационном файле scalpel.conf раскомментировать строку (убрать знак решётки) с расширением нужного файла (Все типы файлов "по умолчанию" закомментированы). Выполните команду в терминале на открытие конфигурационного файла scalpel.conf:

sudo gedit /etc/scalpel/scalpel.conf

Примечание . В команде gedit (Ubuntu; Linux Mint Cinnamon) измените на название текстового редактора своего дистрибутива, установленного по умолчанию.

Для примера я выбрал поиск потерянных файлов изображений c расширением JPG и раскомментировал данную строку в открывшемся редакторе с файлом scalpel.conf :


Вы можете выбрать любой другой файл. Сохраните изменённый файл (Ctrl+S ) и закройте редактор.

И вот теперь нужно выполнить терминальную команду с инструментом
scalpel для поиска утраченных файлов:

sudo scalpel /dev/sda8 -o /home/vladimir /JPG /output/

sda8 - это раздел на ж/диске моей актуальной системы. Чтобы вам определить свой раздел и изменить его в команде, выполните команду:


В терминале должны отобразиться все разделы ж/диска. Как показано на снимке стрелкой, косой чертой или слешем отмечена точка монтирования моего раздела - sda8 , который я ввёл в команду. У вас должен быть отмечен свой.

/home/vladimir - это имя моей Домашней папки . Измените vladimir на своё.

/JPG - это название папки в команде, которая будет создана а вашей Домашней папке , куда будут сохранены все восстановленные файлы, которое вы также можете изменить на своё.

Итак, выполняем команду и ждём окончания восстановления:


Как видно на снимке, процесс поиска и восстановления файлов изображений с расширением JPG на моём компьютере будет происходить за два шага, а также время, в зависимости от объёма указанного раздела (ГБ) и количества изображений, находящихся на нём.
Сразу хочу сказать, что процесс не быстрый.

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

sudo nautilus

Вместо nautilus укажите название файлового менеджера своего дистрбутива (например: Linux Mint - nemo или сaja ; и т.п.).


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

Заключение. Хотелось бы заметить, что инструмент scalpel находит все файлы с указанным расширением, даже те, что были раньше на этом разделе, когда на нём когда-то были установлены другие операционные системы. Данная утилита также используется спецслужбами разных стран для поиска компромата пользователя компьютером в случае необходимости. Так что чем бы мы не удаляли файлы безвозвратно, они всё-равно оставляют свой след на ж/диске.

Только физическое уничтожение ж/диска избавит пользователя компьютером от компрометирующих файлов .