26 октября 2014

Как восстановить удаленные/потерянные файлы в Ubuntu и производных

Иногда так случается, что мы удаляем, как казалось бы ненужные файлы (изображения, видео, текстовые документы и пр.), а потом вдруг сожалеем об этом, т.к. среди удалённых, оказались нужные. Хорошо если мы удаляем файлы в Корзину, откуда очень просто восстановить, нажав сочетание клавиш 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 - это раздел на ж/диске моей актуальной системы. Чтобы вам определить свой раздел и изменить его в команде, выполните команду:

lsblk


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

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

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

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


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

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

sudo nautilus

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


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

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

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

Удачи.

64 комментария :

  1. Ответы
    1. Спасибо. Только не ессе, а Эссе. Без обид :)

      Удалить
    2. Может быть ессе. Если по украински )

      Удалить
    3. Если по украински, то Есе, с одной С.

      Удалить
  2. Ребята вы уж простите за это ЭЕссе. Я начинал учиться в интернате, потом кусок русской школы, потом украинской. Универ заканчивал в Беларуси. Так что мой эдъюкейшен чисто технический, а с грамматикой у меня всегда проблемы. Я уже и не пытаюсь их исправить. Так что я не в обиде на замечание. :)

    ОтветитьУдалить
  3. Спасибо Владимир. Как всегда вовремя, как будто мысли читаешь.

    ОтветитьУдалить
  4. Владимир огромное вам спасибо за этот инструмент, ваш блог введен в мою rss ленту для регулярного просмотра!

    ОтветитьУдалить
  5. >Только физическое уничтожение ж/диска избавит пользователя компьютером от компрометирующих файлов<
    А если забить диск какой-нибудь фигнёй под завязку, затем удалить и повторить.. вероятность восстановления компрометирующих файлов заметно снизится или нет?

    ОтветитьУдалить
    Ответы
    1. = вероятность восстановления компрометирующих файлов заметно снизится или нет?= Нет. Кому это нужно найдут всё, что нужно, даже если забить всё под завязку, как Вы выразились.

      Удалить
    2. Владимир, вероятно Вы правы. Остаётся воспользоваться старым способом - кувалда реально поможет.

      Удалить
    3. >Только физическое уничтожение ж/диска избавит пользователя компьютером от компрометирующих файлов<
      Да ну? dd if=/dev/zero of=/dev/sda

      Удалить
    4. None, тут:
      http://forum.ubuntu.ru/index.php?topic=84741.0
      говоря, что можно восстановить.

      Удалить
    5. можно и после затирания нулями восстановить, хоть 0 и 1 затирай, все восстановят

      Удалить
  6. а если переформатировать жёсткий в другую разметку, например в GPT ( GUID ) понасоздавать куча разделов, например до 10, и обратно переформатировать в разметку MBR и понасоздавать разделы до( 4 основных ),ну и так несколько раз для профилактики, и так тоже данные не постираются ?,и кому надо, тот тоже найдёт после всех этих манипуляций ?

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

      Удалить
    2. Дмитрий Налисниченко, так найдут. Даже я найду :) создание разделов и переразбивка не трогает пространство диска с данными а только область где указываются разделы.
      Сам по невнимательности при установке убунты прибил раздел на 3ТБ винте, с кучей видеофайлов, на который бухнулась убунта. С помощью тестдиска http://man-linux.ru/notes/testdisk/ удалось вытянуть всё, что не перезаписала под себя убунта. Даже с тех разделов на который бухнулся корень и хоум. Это по поводу разбиения разделов.
      А по поводу форматирования и похожего... если СБ припрёт то она вытащит данные даже после форматирования, банально подключившись к головкам и к контроллерам двигателя винта. Головка винта затирает не точно по той же физической дорожке на которой были данные, а чуть в стороне (это из за неточности позиционирования головки). Что показывают в пендоских фильмах (кулхацкер вытащил винт, провёл над ним электромагнитом и вуаля! инфы нет) - бред сивой кобылы. Чтобы перемагнитить сам диск там должен быть неслабый магнитный поток, и он не генерится в электромагнитах которые можно взять в руки :) Так что делайте выводы :)
      Как говорили выше - только уничтожение физически блина винта, на мелкие фракции.

      Удалить
    3. =Как говорили выше - только уничтожение физически блина винта, на мелкие фракции.= Или ф топке паровоза :)))

      Удалить
    4. Забивание нолями должно хорошо помогать. При обычном удалении файла он перестает существовать как файл, и место, им занимаемое, становится свободным с точки зрения системы. Однако информация, записанная на этом месте, никуда не девается, пока система не запишет что-то поверх. Поэтому файл еще можно восстановить. Чтобы исключить возможность восстановления, нужно принудительно забить "свободное" место нолями или рандомной информацией, желательно несколько раз :) Для этого в Линукс существуют shred, secure-delete и др. В той же bleachbit есть функция "очистки свободного места"... Физическое уничтожение диска надежнее, но, ИМХО, всё-же перебор :)
      http://ru.wikihow.com/удалить-файлы-без-возможности-восстановления

      Удалить
    5. P.S. Скриншот из bleachbit под рутом
      http://i2.5cm.ru/i/L3zp.png

      Удалить
    6. не проканает, все восстанавливается и после затирания, сложнее, но восстанавливается

      Удалить
    7. ==все восстанавливается и после затирания, сложнее, но восстанавливается==
      Если Вы имеете в виду магнитную микроскопию, то это уже не программный метод. К тому же сложный и дорогой, и не дающий никаких гарантий. Так что, затирание нулями (или случайными данными) помогает неплохо. Если "безопасное удаление данных" и не панацея, то совсем по другой причине. Гуру криминалистики всегда могут кучу других лазеек найти. Следы старых файлов могут оставаться в файле/разделе подкачки, например. Информация об удаленных изображениях может спокойно сохраниться в базе эскизов. В cookie браузера, как поговаривают, можно обнаружить адреса роликов, которые смотрел чуть ли не год назад на YouTube и т.д.

      Удалить
  7. Крррутой скальпель! Ребята, у меня даже все ваши фотки в папке с восстановленным есть (видимо, ранее-удаленные из кэша). Спасибо, Владимир! Восстановлю сестренке фотки, по глупости затертые!

    ОтветитьУдалить
  8. Было сказано на compizomania , точно не помню слова и кем " на ЖД можно записывать и стирать до безконечности " .
    Тогда возникает Вопрос: если удалёные фаилы или часть их остаются на ЖД то это значет что дисковое пространство уменьшается и приводит
    к второму Вопросу . Есле удалёные фаилы или часть их остаются на ЖД то это значет что при чтении скорость магнитнои головки уменьшается во времени . Или новые фаилы записываются поверх старых .И сообствено вопрос : Есле удалёные фаилы или часть их остаются , видет их ОС ( скажем после переустановки ) и влияет это на работоспасобность ОС ?

    ОтветитьУдалить
    Ответы
    1. >>то это значет что дисковое пространство уменьшается<<

      Нет, не означает.

      >>Или новые фаилы записываются поверх старых<<

      Место для новых файлов выбирается в соответствии с логикой файловой системы. Куда она решит, туда и запишет. Надо будет - поверх старых, ей без разницы. Старого файла уже нет, он перестал быть файлом. Его место свободно. Практически на любом "свободном" месте диска на самом деле когда-то уже были файлы :) Удаление файла - это понятие "логическое", а не "физическое", так сказать.

      Удалить
    2. А как быть с фрагментацией ?

      Удалить
    3. >>А как быть с фрагментацией ?<<
      В каком смысле "как быть"? Это файловая система решает... Повторяю, свободное место есть свободное место, файловой системе до фонаря, что там было раньше. Информация, принадлежащая удаленному файлу, остается на диске только некоторое время, пока "естественным образом" не затрется чем-нибудь другим. Это может случиться через неделю, а может - через секунду. Поэтому стопроцентной гарантии возможности полного восстановления удаленного файла дать нельзя (другое дело, если он на флешке, на которую Вы после его удаления ТОЧНО НИЧЕГО НЕ ЗАПИСЫВАЛИ, тогда он восстанавливается "в небитом виде" почти гарантированно).

      Удалить
    4. =А как быть с фрагментацией ? = Я думаю здесь имелось ввиду дефрагментация раздела ж/диска. Если это так, то многие специалисты считают, что дефрагментация в Linux не нужна.
      А вообще понятие фрагментация подразумевает образование фрагментов раздела от "падения" системы, отключения эл. энергии и пр. В этом случае появляются неиспользованные фрагменты раздела.
      Определить степень дефрагментации можно терминальной командой:

      sudo e4defrag -c /dev/sdaх

      Только х надо заменить в команде на ваш раздел, в котором находитесь.
      Последняя строка после выполнения команды выдаст информацию о дефрагментации.

      Удалить
    5. Дефрагментация не удаляет файлы. Она восстанавливает битые сектора диска. Потому и называется - ДЕфрагментация.

      Удалить
    6. Так, не за что. Как говорится, заходи на огонёк :)

      Удалить
    7. >>Дефрагментация...Она восстанавливает битые сектора диска<<

      Это совсем не так :) Дело в том, что куски информации, принадлежащие одному и тому же файлу, физически могут находиться в разных местах диска, и для их считывания требуется больше времени из-за перемещения считывающей головки. Такой файл называется фрагментированным. Дефрагментация сводит куски воедино, подряд, чтоб файл на поверхности диска шел "одним куском". Это ускоряет доступ. Файловая система ext4 практически не подвержена фрагментации (шибко умная), и для нее это не актуально. А вот виндовые NTFS-разделы рекомендуют периодически дефрагментировать, для этого в Винде встроенная утилита есть, плюс целая куча похожих утилит от сторонних разработчиков.
      https://ru.wikipedia.org/wiki/Дефрагментация_диска

      Удалить
    8. Максим, мы об одном и том же говорим. =Дефрагментация сводит куски воедино, подряд, чтоб файл на поверхности диска шел "одним куском".= Всё вено. Восстанавливает фрагменты.
      =Файловая система ext4 практически не подвержена фрагментации (шибко умная), и для нее это не актуально.= И в Linux её применение не обязательно. Опять верно.
      Но дефрагментация не удаляет файлы. Вот я к чему.

      Удалить
    9. >>Но дефрагментация не удаляет файлы. Вот я к чему.<<
      А, ну да... Я, собственно, к тому, что к битым секторам она не имеет отношения, она ничего не восстанавливает, только "перетасовывает". А так - согласен, безусловно.

      Удалить
    10. Мы с тобой, как в анекдоте:
      Встречаются два русских немца в Германии, один - волжский, другой - казахстанский, разговорились. Один другого спрашивает:
      - Ты откуда? Я из Дрезден.
      - О! И я из Дрезден. Так мы с тобой землянки!
      Другой:
      - Нет, земляники.
      :)))

      Удалить
    11. У меня btrfs и команда sudo e4defrag -c /dev/sdaх не работает.

      Удалить
  9. Здравствуйте Владимир, скажите пожалуйста, можно ли восстановить .php файлы? Спасибо.

    ОтветитьУдалить
    Ответы
    1. PHP - это скриптовый язык, который часто используется для разработки веб-страниц и интернет-приложений. Файлы с расширением .php могут содержать текст, HTML-теги и скрипты. Попробуйте раскомментировать строку с HTML.

      Удалить
  10. подскажите, пожалуйста, как восстановить *.mp3 файлы? в .conf скальпеля нет этого типа файлов.

    ОтветитьУдалить
  11. Очень толковый текст. Попытался, пользуясь им, восстановить AVI на внешнем винте. Вот стенограмма процесса
    ubuntu@ubuntu:~$ sudo scalpel /dev/sdb1 -o /home/boris/avi/output/
    Scalpel version 1.60
    Written by Golden G. Richard III, based on Foremost 0.69.

    Opening target "/dev/sdb1"

    Image file pass 1/2.
    /dev/sdb1: 93.9% |********************************************************************************************************************** | 429.7 GB /dev/sdb1: 100.0% |*************************************| 457.8 GB 00:00 ETAAllocating work queues...
    Work queues allocation complete. Building carve lists...
    Carve lists built. Workload:
    AVI with header "\x61\x6e\x64" and footer "\x44\x69\x56\x58\x2f\x4d\x50\x45\x47\x2d\x34" --> 0 files
    Carving files from image.
    Image file pass 2/2.
    /dev/sdb1: 100.0% |*************************************| 457.8 GB 00:00 ETAProcessing of image file complete. Cleaning up...
    Done.
    Scalpel is done, files carved = 0, elapsed = 18710 seconds.
    ubuntu@ubuntu:~$
    Если несложно-подскажите, плисс, где ошибка. Спасибо)

    ОтветитьУдалить
  12. Здравствуйте Владимир. Программа "диски" показывает, что мой HDD исправен, но есть один повреждённый сектор. Можно ли его исправить. У меня убунту 14.10. Спасибо.

    ОтветитьУдалить
    Ответы
    1. == Программа "диски" показывает, что мой HDD исправен, но есть один повреждённый сектор==
      Если программа "диски" показывает, что HDD исправен, то как Вы определили повреждённый сектор?
      И потом, даже если есть повреждённый сектор диска, то исправить можно только логический сектор, а не физическое повреждение HDD.
      Для диагностики HDD есть программа MHDD - это самая популярная программа для низкоуровневой диагностики жестких дисков. Программа позволяет производить очень точную диагностику механической части накопителя, просмотр SMART-атрибутов, низкоуровневое форматирование (Low-level format), «ремонт» дефектных секторов, различные тесты, а также содержит десятки других функций.
      Нужно скачать MHDD в формате iso, записать на диск и запуститься с этого диска. Все инструкции и загрузка здесь: http://www.ihdd.ru/mhdd

      Удалить
    2. Буквально недавно диск посыпался. Тоже исправен показывало и 80 плохих секторов. Прогнал через badblocks и вроде стало по-нулям. Но потом вообще стала отваливаться файловая система, 270 плохих секторов и помойка ему только теперь. Потерял нужные данные... Я к тому, что на всякий случай начинайте делать бекап. Не известно сколько он после ремапа еще проживет.

      Удалить
  13. ...Если программа "диски" показывает, что HDD исправен, то как Вы определили повреждённый сектор?
    Это программа написала. что один повреждённый сектор. Где-то читал. что якобы перемагничивнием ( вроде есть программы) исправляют поврежд. сектора.

    ОтветитьУдалить
    Ответы
    1. Цитирую Ваш предыдущий комментарий: " Программа "диски" показывает, что мой HDD исправен, но есть один повреждённый сектор." Или я чего-то не понял...? Поэтому задал вопрос: "Если программа "диски" показывает, что HDD исправен, то как Вы определили повреждённый сектор?"

      Удалить
    2. Сформулируйте свой ответ более корректно. Тогда какая программа определила, если "Программа "диски" показывает, что мой HDD исправен"?

      Удалить
    3. Программа берет показание из SMART. А уже "исправен" он или нет - это от себя наверное и от авторов программы взяла. У меня полудохлый, стучащий, с 260 плохими секторами тоже показывает как "исправнен".

      Удалить
    4. Не верь глазам своим. Есть ещё тыща миллионов "специалистов". Что показывает именно Ваша Система, значит это и верно..Линукс он такой. Какой есть у Вас , другого ни у кого больше нет. Он именно Ваш.Зачем верить или ориентироваться на других? Там покажут совершенно обратное..Просто потому что у них "другой" Линукс. И нет причин что-то и с чем-то сравнивать.

      Удалить
    5. Этот комментарий был удален автором.

      Удалить
  14. Этот комментарий был удален автором.

    ОтветитьУдалить
  15. Отлично, все довольно просто и наглядно описано. Единственное, что хотелось бы узнать, так почему нет расширения .xls и .xlsx в редактируемом файле Скальпеля? Или что то я не так понял? Как электронные таблицы восстановить?

    ОтветитьУдалить
    Ответы
    1. Можно самому соответствующие сигнатуры в интернете найти и вставить. Например, отсюда
      https://github.com/int0x80/anti-forensics/blob/master/scalpel.conf
      Полазайте по этому файлу с помощью поиска на странице (Ctrl-F), там есть .xls и .xlsx

      Удалить
  16. такой вопрос, не чайно при установке линукс, убил все разделы диска, можно восстановить файлы креме как медиа, и как прописывать например txt

    ОтветитьУдалить
    Ответы
    1. ==не чайно при установке линукс, убил все разделы диска== Нечаянно - это как???

      Удалить
    2. молча, меня в общем волнует сильно только один текстовой файл, а в conf нет и намека на текстовой файл.
      вот и спрашиваю

      Удалить
    3. ==молча== Хороший ответ. :) Остряк, обнако. Тогда и разбирайтесь "молча", чего здесь голову людям морочить.

      Удалить
  17. Добрый день.
    И, все же, можно восстановить текстовый файл?

    Спасибо.

    ОтветитьУдалить
  18. Какую строчку закоментить для востонавления ".py" файлов?

    ОтветитьУдалить
  19. tminei@Te-Amo-PC:~$ lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda 8:0 1 7,3G 0 disk
    └─sda1 8:1 1 7,3G 0 part /media/tminei/4F9D-24F1
    sdb 8:16 0 931,5G 0 disk
    ├─sdb1 8:17 0 929,5G 0 part /
    ├─sdb2 8:18 0 1K 0 part
    └─sdb5 8:21 0 2G 0 part [SWAP]
    sr0 11:0 1 1024M 0 rom
    tminei@Te-Amo-PC:~$ sudo gedit /etc/scalpel/scalpel.conf
    [sudo] password for tminei:
    tminei@Te-Amo-PC:~$ sudo scalpel /dev/sda1 -o /home/tminei/Відновдлені/flash/
    Scalpel version 1.60
    Written by Golden G. Richard III, based on Foremost 0.69.

    Opening target "/dev/sda1"

    Image file pass 1/2.
    /dev/sda1: 100.0% |*************************************| 7.3 GB 00:00 ETAAllocating work queues...
    Work queues allocation complete. Building carve lists...

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

    ОтветитьУдалить
  20. Очень интересное обсуждение. А вот вопрос:у меня есть флешка, скажем на 1 гб. Я записываю на нее фильм, смотрю, а потом стираю. И так, скажем, 10 раз. А потом она попадает к "ребятам" и те начинают восстанавливать с нее файлы. Какой фильм они найдут?

    ОтветитьУдалить