Здравствуйте!
Имеем:
Оптический диск CD-RW c pdf-файлами на нем.
Данный диск был заполнен файлами следующим образом:
Под управлением ОС Windows файлы копировались на CD-RW диск при помощи <Ctrl+C> <Ctrl+V> или Drag'n'Drop (как на флешку).
На определенном этапе диск перестал читаться.Задача: извлечь содержимое диска.
Попытка решить задачу:
Для этого нужно ответить на три вопроса:
1. Предполагаемый формат ФС (iso-9660, UDF, CDFS) и его спецификация
2. Спецификация PDF-файлов
3. Не помню
Восстановление проводится под управлением ОС Линукс.
Для этой цели был установлен пакет ddrescue (45Kb.), т. к. dd отказался его читать:
dd if=/dev/cdrom /tmp/cd.iso
bla - bla - bla
I/O error
Про остальные инструменты можно не упоминать.
Что касается первого вопроса, то предполагается, что это iso-9660, однако спецификации данной ФС я не нашел, разве только "Вика" сказала, что первые 32 КБ не используются, а о дальнейшей структуре написано пространно - мол, есть там такие-то структуры, насчет смещений и размеров молчок.
Данная информация нам понадобится в том случае, если подручными инструментами прочесть не получится. Тогда берем в руки ассемблер, грузимся в ДОС, и счастливые 90-е снова оживают.
ddrescue /dev/cdrom /tmp/cd.iso
Носитель прочитала (ушло более суток, подумал, зависла, сделал <Ctrl+C>. Размер файла вышел 600 Мб из 736 Мб).
Созданный файл просмотрел в текстовом режиме - присутствуют структуры каталогов с искомыми файлами.
Выдвинуто предложение написать парсер на С++ , который будет искать сигнатуры pdf-файлов и копировать их оттуда (файлы).
Вот тут нам и нужен ответ на второй вопрос - толковой спецификации тоже не нашел, кроме, разве, сигнатур: %PDF - начало файла, %EOF - конец файла.
В принципе, этого достаточно, но нам нужна гарантия того, что файлы на носителе не фрагментированы (спецификация ФС оптических дисков вроде гарантирует это).
Другие инструменты мне под руку не попадались.
Возможно, Вы посоветуете мне, какие пути решения этой задачи Вам известны?