|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 7, 2004 16:14:56 Я в ШОКЕ!!! Скачал из интернета за ~6 часов архивный файл (RAR) размером 31Mb, а он получился битым(((((( Потратил свою карточку на пол месяца вперед… Кексы, выложившие его, не только не догадались разбить его на части, но даже не включили в него инфу для восстановления(((((( Сижу вот, пью пиво с горя. Ладно оставим лирику! Пришла мне мысль слабать утилитку для восстановления файлов в таких случаях. Моя идея зиждется на следующих предположениях: 1) Этот файл скачало себе куча народа (интересный такой файлик); 2) Есть возможность (которая вытекает из п.1) найти хотя бы одного человека, у которого этот файл скачался нормально, и который не откажет в помощи! Принцип работы утилитки: a) Человек, у которого есть эталонная копия файла (далее просто С.) запускает эту программку на своем компе и скармливает ей эталонный файл. Она виртуально разбивает его на множество мелких частей и для каждой из них находит контрольную сумму. В ходе своей работы в этом режиме она создает файл, в который записываются все полученные контрольные суммы. Далее, этот файл передается пострадавшему (далее просто П.); b) П. в свою очередь запускает на своем компе эту утилитку в режиме сканирования и сравнения и скармливает ей поврежденный файл и файл со списком контрольных сумм. Утилитка виртуально разбивает поврежденный файл на множество мелких частей и для каждой из них находит контрольную сумму и сравнивает с проверочным файлом. В процессе своей работы в этом режиме она создает файл, куда записывает номера частей имеющих контрольные суммы, отличающиеся от оригинальных. Далее этот файл передается С., который снова у себя запускает эту утилитку в режиме рипанья нужных блоков и скармливает ей свой эталон и полученный от П. файл. Утилитка создает новый файл, в который записывает все нужные блоки. После чего этот файл передается П.; c) П. запускает у себя эту утилитку в режиме восстановления и скармливает ей три файла: поврежденный, с номерами поврежденных частей и собственно файл содержащий запчасти. Теперь утилитка просто заменяет поврежденные части на новые.; d) Ву-а-ля, поврежденный файл восстановлен! Причем утилитка должна учитывать и корректно обрабатывать ситуацию, когда эталонный файл и поврежденный будут иметь разный размер. В итоге, я думаю, что файл с запчастями получится значительно легче чем оригинал! Что вы скажете по поводу этой идеи? Может быть, уже существует что-то подобное и не стоит изобретать велосипед? З.З.Ы.: Конечно, такую программку можно было бы, в идеале, оформлять не в виде отдельной утилитки, а в виде плагина к архиватору… |
|
|
Дата: Ноя 7, 2004 16:37:08 одно плохо - человека с именем С. часто не так просто найти... :( а вообще идея неплохая |
|
|
Дата: Ноя 7, 2004 16:52:18 Funbit человека с именем С. часто не так просто найти... :( В моем случае речь идет о файле: IDA.Pro.Standard.v4.70.830.with.Flair.and.SDK.rar (ссылку не даю, т.к. это варез). Я думаю, что его себе скачало куча народа... А ремонтный файл, теоретически, должен оказаться крохотным, если размер одного блока будет, к примеру, 4Kb... |
|
|
Дата: Ноя 7, 2004 18:05:53 Скачал из интернета за ~6 часов архивный файл (RAR) размером 31Mb, а он получился битым(((((( Я вот как-то по диалапу слил intel C compiler (где-то 86+Mb), ReGet с интеловским сайтом как-то хреново работает, в каждом отдельном потоке закачивал начало файла. Дык у меня и получилось 86Мегов этих кусочков по 1-2 Мега начальной информации в одном файле %). Это я к чему пишу: - ничто так не утешает, как несчастье ближнего =) - Как в этом случае поможет утилита ? ;-) ЗЫ: На самом деле в том инталяторе лежит 2 версии - для x86 и IA64, дык во 2й раз я слил себе только первые 52%, съэекономил :-) |
|
|
Дата: Ноя 7, 2004 19:31:25 S_T_A_S_ - ничто так не утешает, как несчастье ближнего =) Графа Монте-Кристо цитируешь? :)) - Как в этом случае поможет утилита ? ;-) Сформирует ремонтный файл из недостающих блоков и вылечит битый файл:)) А если серьезно, то я и не обещал панацею от всех напастей. Но существует определенный круг проблем, где она действительно в силах будет помочь... Хочу верить, что моя входит в их состав, т.к. это оставляет мне надежду. Кстати, я качал этот файл с помощью ReGet Deluxe 4.1 . |
|
|
Дата: Ноя 8, 2004 00:29:52 Oleg_SK, а зачем тут специальная навороченная утилита? Описаная ситуация весьма нестандартная и редкая, так что можно и вручную все сделать. Достаточно трех простейших программ - для вырезания блока из файла, для вставки в файл и для расчета контрольных сумм. А дальше - прямые руки и e-mail :) |
|
|
Дата: Ноя 8, 2004 03:48:12 Oleg_SK да, файлик действительно скачало куча народа, даже у меня есть %) если что, могу помочь кстати, каков точный размер рар файла? (все это лучше в icq) |
|
|
Дата: Ноя 10, 2004 09:22:22 By the way... Насколько мне не изменяет память ;), по описанному принципу работают пиринговые сети... |
|
|
Дата: Ноя 11, 2004 12:36:42 Oleg_SK В моем рар для 4.7 standart есть recovery record. Посмотри, может поможет. И конечно не мешает проверить гипотезу, что твой файл просто несколько склеенных "начал". Тогда твоя метода бесполезна. Проще тогда в eMule поколдовать с .met файлами. StoneColdCrazy Насколько мне не изменяет память ;), по описанному принципу работают пиринговые сети... Только кусок там ( в eMule) 9 Мб. |
|
|
Дата: Ноя 11, 2004 12:57:04 Есть уже несколько таких программ. 1) Zidrav. Вычисляет CRC блоков (по умолчанию 16КБ), и предоставляет несколько вариантов передачи информации из испорченных участков. Примерно то, что вы тут описываете. 2) Par/Par2. Делает набор файлов с симметричными суммами так, что для восстановления поврежденного участка нужен набор любых контрольных файлов, главное чтобы достаточного суммарного объема. В новых версиях rar тоже появилась такая возможность (.rev файлы). 3) BitTorrent. Хранит в .torrent файле md5 чексуммы блоков, и докачивает только испорченные блоки. Ну и наверно еще есть несколько, про которые я не знаю :) |
|
|
Дата: Ноя 12, 2004 12:05:01 Oleg_SK Если у тебя это, то я готов. ====================== IDA.Pro.v4.7.0.830.Standard.+.SDK.RETAIL.SSG.by.TiTBiT.rar============ ============== Ссылка на проект zidrav http://sourceforge.net/project/showfiles.php?group_id=50757 _1741267452__zidravbinary_win32_3.3.zip |
|
|
Дата: Ноя 17, 2004 00:46:07 · Поправил: Oleg_SK Привет всем! Извиняюсь за задержку с ответом. Благодаря тому, что Funbit согласился помочь мне, я все-таки слабал эту программу, хотя ее работа и использование чуть-чуть отличаются от того, что я описал в начале (у меня было время немного подумать над этим на трезвую голову). Хочу с радостью сообщить, что я решил свою проблему – файл восстановлен, причем для его восстановления понадобился ремонтный файл размером всего 96.1 Кб.:)))) Я хочу здесь еще раз выразить ОГРОМНУЮ благодарность Funbit’у за помощь!!! ava Вы правильно заметили, что все это можно сделать и вручную с помощью нескольких утилит. Но вы представляете сколько на это уйдет времени? Основной целью, при создании утилиты была как раз автоматизация этого процесса для сокращения времени требуемого для ремонта файла. IMHO, количество времени необходимое для выполнения какой-либо работы обратно пропорционально количеству людей, которые захотят (или смогут) вам помочь. Особенно это касается тех случаев, когда задача сама по себе этим людям не интересна… Нужно просто помнить о том, что люди здесь в основном занятые и нужно ценить их время… valterg и reverser Спасибо за ваши ответы. К сожалению (или к счастью) я прочитал ваши посты уже после того, как написал свою программу. В результате, хотя я и не смог благодаря вам сэкономить время, но зато прикольно его провел… Из всех указанных вами утилиток меня заинтересовала в основном програмулина – Zidrav, так как она действительно, в общем, очень напоминает мою. Но нужно сказать, что Zidrav – это видимо дальнейшее развитие этой идеи. Хотя я и не представляю, в каких случаях операцию восстановления нужно производить не только над отдельными файлами, но и над группой файлов (которые, как я понял, должны находиться в одной папке), тем не менее эта программка позволяет это делать. Единственное, что меня смущает – это то, что эта утилитка похоже рассчитывает на то, что битый файл и оригинал будут иметь одинаковый размер. Если это условие не соблюдается, то программа сообщает, что отличий между ними ей не найдено… В то же время моя утилитка в такой ситуации будет работать адекватно, т.е. восстановит битый файл (правда, только в том случае, когда размер битого файла меньше чем у оригинального, но обратного я никогда и не видел…). Теперь я подвиду итог в сравнении этих двух утилиток, перечислив все плюсы и минусы Zidrav по сравнению с моей (все это конечно - IMHO). Плюсы: 1. Возможность обработки группы файлов за раз. Я отмечаю это как достоинство программы, хотя и не вижу этому практического применения. 2. Возможность произвольно выбрать размер блока в байтах. У нее имеется для этого несколько фиксированных значений (4096, 8192, 16384, 32768, 65536) а также поле для ввода произвольного значения. По умолчанию стоит значение: 16384. Моя же программа для этого использует фиксированное значение: 4096. В общем-то, я думаю, что смог бы довольно легко реализовать такой подход в своей программе. 3. При работе показывает полоску прогресса. Я же, в своей программе, не стал этого делать, т.к. все происходит очень быстро (буквально несколько секунд для файла размером 31 Mb, на машине: Pentium III 1Ghz, 256 Mb PC133, IDE HDD 30Gb ATA 100 7200 rpm). При необходимости я мог бы это исправить… 4. Поля ввода позволяют использовать механизм Drag&Drop для указания нужного файла. Я же об этом не подумал, но могу легко это реализовать… Минусы: 1. Относительно большой размер программы – 82 Кб. Размер моей проги – 22 Кб. Причем я мог бы уменьшить размер своей проги примерно в два раза, за счет удаления из ее интерфейса не стандартных элементов управления. Я прикола ради, рисую кнопку вызывающую диалог выбора файла (каталога) внутри поля ввода, с которым она связанна. Но думаю, что при таких размерах это не очень важно. 2. Не правильно работает, когда размеры битого и эталонного файла различаются (это проверено только для ситуации, когда битый файл меньше чем эталонный)… Я считаю что это - большой минус, т.к. сам довольно часто сталкивался с такими ситуациями. 3. Мне не понравился ее интерфейс. Уж если программа была написана на Visual C++ (я сужу об этом опираясь на показания - PEiD) то, наверно, стоило бы сделать что ни будь по красивее… Но это мое IMHO. Производительность программ при обработке одиночного файла на первый взгляд одинакова. Вот так, теперь и не знаю: стоит ли развивать свою версию или нет? Нужна ли она кому ни будь? Что скажете? Valterg Спасибо за ваше стремление помочь! |
|
|
Дата: Ноя 17, 2004 00:47:52 |
|
|
Дата: Ноя 17, 2004 23:05:40 Oleg_SK если что, готов еще раз помочь :) |
|
|
Дата: Ноя 18, 2004 01:06:21 · Поправил: Asterix Oleg_SK > Скачал из интернета за ~6 часов архивный файл (RAR) размером 31Mb Оказывается бывает скорость пониже моей %) У меня за час обычно закачивается 10-12Mb S_T_A_S_ > ReGet с интеловским сайтом как-то хреново работает ReGet вообще глюкавая штука ;-) Oleg_SK > Кстати, я качал этот файл с помощью ReGet Deluxe 4.1 . Ещё одно подтверждение глюкавости ;-) > Да, забыл приаттачить самму программку. Может кому понадобится... Угу, и исходники тоже могли бы понадобиться кому-нибудь, тем более после такой рекламы ;-) Кстати, win98 твоя прога вешает намертво, причем сразу же после старта, т.е. до каких-либо манипуляций с файлами ;-) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.045 |