Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Восстановление удалённых python-файлов  (Прочитано 1997 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ururu_2

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Доброго времени суток.
Заглючила у меня Ubuntu до такой степени, что аж файловая система на разделе накрылась. Я форматнул раздел и только потом оказалось, что один нужный проект на Python лежал только на этом разделе и резервных копий его нету. Возник вопрос, как восстановить. Сначала прогнал Photorec-ом, он восстановил, но не все файлы. Хочу попробовать scalpel и foremost, но они не в курсе, что существует какой-то там Python. Может подскажет кто, как правильно указать заголовок python-файлов для scalpel и foremost, что эти проги могли искать такие файлы?
Ну или подскажите прогу, которая работает с ext4-разделами и умеет восстанавливать Python-файлы.

Оффлайн hon

  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
Re: Восстановление удалённых python-файлов
« Ответ #1 : 30 Июнь 2014, 00:36:48 »
Система решила самоуничтожить системный раздел? Может быть кто-то выдернул питание, да еще и с отключенным журналированием?
Если форматнул раздел, попробуй grep. Для этого понадобиться знать часть содержимого файла.
sudo grep --text --context=100 'import os' /dev/sdXY'import os' — часть содержимого искомого файла. /dev/sdXY — адрес раздела.

P.S. Не пиши ничего на раздел с потерями.

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Восстановление удалённых python-файлов
« Ответ #2 : 30 Июнь 2014, 02:27:17 »
Можно попробовать testdisk, хорошо восстанавливает удаленные файлы.
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн hon

  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
Re: Восстановление удалённых python-файлов
« Ответ #3 : 30 Июнь 2014, 15:38:47 »
Phlya, раздел отформатирован. Врядли testdisk поможет после форматирования, да еще и в ту же файловую систему. Тут поможет только последняя мера — сигнатурный поиск или поиск по содержимому, что я и предложил.

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Восстановление удалённых python-файлов
« Ответ #4 : 30 Июнь 2014, 15:48:12 »
Эксперимента ради попробовал foremost'ом выковырять скрипт из disk.img в ext4 поиском по всем типам файлов и... нифига.
А если подумать, это логично, ибо какая может быть сигнатура у plain-text? %)

поиск по содержимому
Видимо, единственный вариант.

Оффлайн Ururu_2

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: Восстановление удалённых python-файлов
« Ответ #5 : 30 Июнь 2014, 16:11:18 »
Какая-то сигнатура наверняка есть, photorec тоже по ним работает и он умеет находить python-файлы.
После того, как восстановлено что можно я конечно ищу grep-ом по восстановленным файлам, только самого нужного и нет. Поэтому хочу другие инструменты попробовать, но не знаю как им описать сигнатуру.

Оффлайн hon

  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
Re: Восстановление удалённых python-файлов
« Ответ #6 : 30 Июнь 2014, 16:26:08 »
Бинарные файлы часто имеют в себе некоторую последовательность байт, одинаковую для всех файлов этого типа. По ним и происходит поиск. Файлы python могут быть скомпилированном виде, возможно он ищет по сигнатурам этих файлов.
Если задача стоит в восстановлении текстовых файлов, то тут только один вариант — искать по известному куску содержимого. Некоторые программы для восстановления считают текстовыми файлами последовательность байт, не содержащих управляющие байты ANSI.
Какая-то сигнатура наверняка есть, photorec тоже по ним работает и он умеет находить python-файлы.
Он ищет наверное по скомпилированным, а у тебя файла наверное в исходном виде.
После того, как восстановлено что можно я конечно ищу grep-ом по восстановленным файлам, только самого нужного и нет. Поэтому хочу другие инструменты попробовать, но не знаю как им описать сигнатуру.
Тебе нужно grep'ом искать по разделу с поврежденной информацией. По /dev/sdXY, а не по восстановленным файлам. Программы для восстановления обычно восстанавливают бинарные файлы, а не текстовые.

Оффлайн ArcFi

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Восстановление удалённых python-файлов
« Ответ #7 : 30 Июнь 2014, 16:28:51 »
Какая-то сигнатура наверняка есть, photorec тоже по ним работает и он умеет находить python-файлы.
Наверно, что-то вроде
#!*/bin/python*Но строго говоря, присутствие shebang в скрипте не является обязательным, потому достоверно опознать скрипт по сигнатуре невозможно.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12066
  • Xubuntu 20.04 (64bit)
    • Просмотр профиля
Re: Восстановление удалённых python-файлов
« Ответ #8 : 30 Июнь 2014, 16:30:25 »
Python файл - это текстовый файл. Он должен начинаться с комментария:
#!/usr/bin/env python
или
#!/usr/bin/python
что бы быть исполняемым.

Как то по этим признакам и надо искать.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Восстановление удалённых python-файлов
« Ответ #9 : 30 Июнь 2014, 22:21:56 »
Вроде, тестдиск в отформатированных разделах ищет. Копировать придется на другую файловую систему, да, но хоть флешку засуньте просто.
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн Ururu_2

  • Автор темы
  • Активист
  • *
  • Сообщений: 291
    • Просмотр профиля
Re: Восстановление удалённых python-файлов
« Ответ #10 : 30 Июнь 2014, 22:41:59 »
Поскольку это мои программы, они абсолютно точно начинаются с #!/usr/bin/env python3
Вопрос в том, как это правильно засунуть в scalpel.conf? Там ведь в сигнатурах не текст, а что-то типа \xd0\xcf\x11\xe0\xa1\xb1. Или прокатит, если там указать просто #!/usr/bin/env python3?

Цитировать
Вроде, тестдиск в отформатированных разделах ищет.

Да не сам testdisk, а входящий в комплект Photorec. Им я искал уже.
Цитировать
Тебе нужно grep'ом искать по разделу с поврежденной информацией.

Это как? Grep же вроде только по файловой системе ищет? А она уже очищена форматированием, нужно по сигнатуре искать.


Оффлайн hon

  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
Re: Восстановление удалённых python-файлов
« Ответ #11 : 01 Июль 2014, 00:37:51 »
Цитировать
Тебе нужно grep'ом искать по разделу с поврежденной информацией.
Это как? Grep же вроде только по файловой системе ищет? А она уже очищена форматированием, нужно по сигнатуре искать.

В линухе, да и вообще в никсах хорошо развита VFS — виртуальная файловая система, сделанная для того, чтобы не было дисков A, C, D, а можно было гибко управлять системой как файлами. В каталоге /dev находяться виртуальные файлы устройств. /dev/mem — это твоя оперативка, /dev/video0 — это твоя видеокарта, /dev/sda — это первый HDD, /dev/sda3 — это третий раздел на первом HDD.
В моем примере в качестве цели поиска ты указываешь файл /dev/sdXY (XY заменить на порядковую букву и цифру догадаешся?), grep'у пофиг, что это не настоящий файл, а устройство. grep умеет искать как среди одного файла, так и среди всех файлов в указанном каталоге.

Пользователь решил продолжить мысль 01 Июль 2014, 00:40:11:
Допустим ты повредил /dev/sdc7 (узнай через fdisk -l), тогда тебе нужно выполнить:
grep --text --context=100 '#!/usr/bin/env python3' /dev/sdc7
« Последнее редактирование: 01 Июль 2014, 00:40:11 от hon »

 

Страница сгенерирована за 0.098 секунд. Запросов: 24.