Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программное обеспечение > Проблема с zip !!!!!


Автор: sergejzr 8.8.2005, 21:38
На 2000 винде создал архив через правую кнопку "add to x.zip"
Через фтп послал файл на solaris. Дома на XP скачал этот архив а он говорит, что битый smile

Подозреваю, что в процесск пересылки кодировка где нить слетела. Плиз, посоветуйте что делать.. Оригинальных файлов не осталось smile

Автор: Retro 8.8.2005, 21:42
sergej.z
Есть проги которые восстанавливают битые архивы (с определенной вероятностью), когда-то пользовался, но не помню ни названия ни производителя smile , мне помогло восстановил 95% файлов из архива.

Автор: Akina 8.8.2005, 21:53
Если где-то неверно описан MIME-тип - карачун твоему архиву... впрочем с какой бы стати он неверен...

На будущее - пакуй РАРом с recovery record и переименуй в что-нить стандартное (скажем BMP)

Автор: Snowy 9.8.2005, 10:28
Цитата(sergej @ 8.8.2005, 21:38)
Дома на XP скачал этот архив а он говорит, что битый

А имена файлов показывает? А RAR что говорит?
RAR умеет восстанавливать битые ZIP, пытаясь угадывать нужные байты по CRC.
Но, если нет таблицы файлов, то можно смело хоронить.
Если есть, то есть и надежда. ZIP не делает solid компрессии, поэтому есть вероятность восстановления хирургическим путем хотя бы части файлов.

Автор: sergejzr 9.8.2005, 12:36
Рар не открывает его также.. Говорит unsupported. Прогнал его через pkzipfix. Теперь открывается, видны названия файлов. Но не распаковывается ничего. Не винраром, не винципом.

Автор: Snowy 9.8.2005, 12:42
Если данные так важны, то можно попробовать написать программу нарезки одного архива на кучку маленьких отдельных архивов - один архив = один файл.
Может какие-то и возьмет...

Автор: sergejzr 9.8.2005, 12:57
А что нибудь есть готовое? Я просто не представляю, как это сделать. С форматом разбираться времени нет..

Автор: Snowy 9.8.2005, 14:29
Готового не встречал.
Знать формат нужно приблизительно.
Делается просто: Создаем новый архив из одного файла.
От него нам потребуется только хвост. (72 байта)
Исходный файл нарезаем на куски. Каждый кусок определяем по заголовку.
Каждый файл в архиве начинается с четырех байт - 50,4B,03,04
Для надежности можем проверять размер - он в заголовке в 19-22 байтах заголовка.
Можем и не проверять - мусор некритичен.
27-30 байты - длина имени файла.
Имя файла идет сразу за длиной.
Хотя даже это все знать необязательно.
Главное нарезать на куски, в отдельные файлы. Имя файла можно генерить случайно - реальное имя все равно будет нормальным после извлечения.
Сохраняем в отдельный файл, приклеиваем наш хвост. Только в последние 8 байт пишем размер нового файла - 72 байта.
Работоспособность можно будет проверить на живом архиве.
Я думаю за час можно написать без проблем.
Повреждены могут быть не все файлы. Что-то да вытащится нормально, если не настолько все сильно покарежено, что вообще все испорчено.
Добавлено @ 14:32
Я могу написать, но готовый вариант только завтра.
Сегодня как назло весь день расписан.
Может вечерком часик выкрою, если до завтра ждет...

Автор: sergejzr 9.8.2005, 14:52
smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)