LINUX.ORG.RU

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

 ,


0

1

В программировании Linux я новичок. Сейчас проходим в универе и наверное был не мой день, но вытащил задание на курсовой - «написать программу для восстановления файлов в системе ext4». Если другим выпали задания, которые я представляю, как сделать - графический или текстовый редактор, калькулятор, то тут у меня просто руки опускаются.

До этого программировал в Windows, так что опыт в программировании в принципе есть, но Linux я не знаю. Подскажите пожалуйста, в какую сторону копать. Простейшую программу а-ля «открыть файл, записать строку, закрыть» я понимаю как написать. Ну а как мне найти удаленные файлы на диске?

Писать думаю в Qt Creator

Извините за глупые вопросы)



Последнее исправление: gwyllum (всего исправлений: 1)

Изучай внутренние структуры Ext4. Далее открывай блочное устройство на чтение и...

Deleted
()

есть библиотеки для работы с ext4. Но вообще тебе надо сначала изучить формат хранения данных и прочую документацию.

в качестве примера можешь посмотреть аналогичный софт. Типа magicrescue.

anonymous
()
Ответ на: комментарий от Deleted

mironov_ivan, а можно приблизительно куда копать? Извините, просто раньше не сталкивался с такими задачами.

gwyllum
() автор топика

ох. то ли это толсто то ли это запредельная глупость.

где такое задают то?

MikeDM ★★★★★
()

можно попробовать портировать ext3grep

anonymous
()
Ответ на: комментарий от Eddy_Em

Изыди, Эдуард.

ТС: гугли что-то вроде такого, установи e2fslibs-dev (это если ubuntu, а в fedora пакет называется e2fsprogs-devel) и изучи содержимое этого пакета - заголовки в /usr/include/ext2fs/, /usr/include/e2p/e2p.h и документация в HTML - /usr/share/doc/e2fslibs/ - либо в формате GNU info.

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

quiet_readonly ★★★★
()

Уточни у преподавателя, что он имеет в виду, т.к. сложность задачи не кажется сопоставимой с калькуляторами-редакторами.

unC0Rr ★★★★★
()

extundelete.sourceforge.net

в помощь

unfo ★★★★★
()

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

dikiy ★★☆☆☆
()
Ответ на: комментарий от dikiy

Даже в нашем мухосранске с «ящиком коньяка» по профильному предмету не было «варианта»; пусть продает почку.

anonymous
()

Забей на все, отрабатывай только случай, когда «backup superblock» не стерт. Все что тебе будет нужно — найти его, «скопировать» в «main superblock» и запустить fsck.

soomrack ★★★★★
()

Для студента это не вопрос, это гроб

ttnl ★★★★★
()

Можно подойти к проблеме абстрактно.

Будем исходить из того что всегда есть бэкап файла. А как иначе?

Т.е. для восстановления нужно лишь найти этот файл в бекапе и скопировать на свое место.

П.С. Где вы учитесь? Что это за жопа что нельзя самому выбирать тему курсовой?

Int0l ★★
()
Ответ на: комментарий от Int0l

Т.е. для восстановления нужно лишь найти этот файл в бекапе и скопировать на свое место.

«Корзина» под Linux? %)

x-signal ★★
()
Ответ на: комментарий от Int0l

Спасибо всем большое за ответы. Я конечно понимаю, что пишу глупые вещи, для тех, кто хорошо разбирается в предмете.

Int0l, Учусь в Брестском государственном университете в Беларуси на специальности Автоматизированные системы управления. К сожалению, тему менять уже нельзя - когда можно было самому выбирать, я отсутствовал.

Eddy_Em, по поводу QT Creator я писал, т.к. там существует огромное количество библиотек и я думал, что библиотеки такого плана тоже есть.

Вчера-сегодня читал книгу Роберта Лава Системное программирование в Linux(надо же с чего-то начинать). Если я правильно понял, то при удалении файла удаляется только inode, а само содержимое файла остается нетронутым, разумеется, если другая программа не записала что-либо на это место. Данные о операциях хранятся в журнале файловой системе(мы берем вариант, что все журналируется, т.к. показывать буду на своем ноуте). Значит мне нужно получить данные о удаленной inode, там, как я понимаю должна храниться позиция файла на жестком диске и его размер. Считываем нужное количество байт и сохраняем на жесткий диск. Я правильно рассуждаю?

отсюда вопрос - как получить доступ к журналу ФС?

Int0l, soomrack, а можно поподробнее тему с бэкапом и backup superblock?

Огромное спасибо всем за помощь.

gwyllum
() автор топика
Ответ на: комментарий от greenman

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

gwyllum
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.