Укрощение @Интернет@


A: Как восстановить файл, некорректно принятый ReGet? - часть 4


Звучит заманчиво, но как все это выглядит на практике? Для начала создадим резервную копию испорченного файла, для чего воспользуемся любой привычной оболочкой или же командой copy из MS-DOS "Copy image4.zip back.me"

Теперь смело урежем оригинальный файл, поднявшись немного выше начала сбойного фрагмента (в HIEW-е это осуществляется нажатием <F3>, <F10>). Запускаем ReGet и терпеливо ждем пока десяток-другой килобайт не упадут на наш жесткий диск (ждать, очевидно, придется недолго).

Для определения границ сбоя и уверенности, что мы их гарантированно миновали, выполним побайтовое сравнение старого и нового файлов утилитой MS-DOS fc.exe: "Fc image4.zip back.me /b > log.txt". Заглянем в полученный файл log.txt

 

Сравнение файлов images4.zip

и back.me

002E6480: 33 00

002E6481: AA 00

002E6482: 31 00

002E6483: 0F 00

002E6484: FD 00

002E6485: EB 00

002E6486: D9 00

: : :

002E6607: 84 00

002E65F8: FB 00

002E65F9: 72 00

002E65FE9 00

002E65FB: 60 00

002E65FC: D7 00

002E65FD: 4E 00

002E65FE: C5 00

002E65FF: 3C 00

002E6600: C3 10

002E6601: CE A4

002E6602: A2 01

002E6603: 18 00

002E6604: 92 03

002E6605: 06 00

002E6606: 82 05

; ^^^^^^^ - последний байт сбоя

 

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

Теперь остается дописать остаток "хвоста", взятого из резервной копии файла, что без труда можно сделать с помощью того же HIEW. Откроем резервный файл и переведем курсор на байт по смещению 0x236607 (<F5>, "236607") и, нажав звездочку на цифровой клавиатуре, выделим блок до конца файла. Затем еще раз звездочку для завершения выделения и <F2> для записи "хвоста" в укороченный файл.

Попробуем его распаковать: о, чудо! Это сработало! Простыми операциями нам удалось сэкономить уйму времени (и денег, кстати, тоже).

Конечно, ничего этого не потребовалось бы, будь ReGet устойчив к сбоям по питанию (как, например, GetRight – который всегда отрезает несколько килобайт от хвоста файла после каждого обрыва). Но, как знать, быть может, в следующих версиях это и будет исправлено?

 

Родственные вопросы:

Необходимо скачать большой файл, но соединение постоянно рвется, а сервер не поддерживает "докачки"… (следующий)

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

 

 




Начало  Назад  Вперед



Книжный магазин