4get
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору EXTERMINATOR случаи есть, а автоматического способа нет точнее так - я последний раз битый файл получал под зависшей win98 и пока ни разу на 2k/xp + ntfs + опция reserve space on disk for entire file, но это у меня со светом все в порядке :P а вот есть кто периодически мучается: Цитата: From: "Konstantin L. Shustik" <shustik@spb.cityline.ru> Newsgroups: regetsoft.public.regetdx.ru Subject: Re: Как восстановить закачку???????? Date: Wed, 20 Feb 2002 03:18:46 +0300 > Случилась следующая ситуация: при закачке ОЧЕНЬ большого файла вырубили > свет. > После перзагрузки и попытки продолжения ReGet предложил начать всё сначала. > ВОПРОС: можно как-то исправить ситуацию??? Я решил данную проблему очень просто: 1. Файл обрезается до некоторого немного меньшего размера. 2. В конец файла дописывается служебная информация ReGet-а (вручную или с помощью написанной на Delphi программы) 3. Продолжается закачка файла. Это очень просто, если происходила закачка в одну нить. Если в более, чем в одну, то нужно найти "дыры" в файле (области незакаченной информации) и опять же дописать служебную информацию ReGet-а. Данный "фокус" был мне полезен в ситуации, когда файл был скачан с ошибкой. Пришлось найти испорченную область и "заставить" ReGet скачать ее заного. После этого файл стал в порядке. Кстати, мож но ведь данную фичу (закачать область файла с байта X по байт Y) ввести прямо в ReGet, думаю будет полезной. | Цитата: From: "Konstantin L. Shustik" <shustik@spb.cityline.ru> Newsgroups: regetsoft.public.regetdx.ru Subject: Re: Как восстановить закачку???????? И КОЕ-ЧТО РАЗРАБОТЧИКАМ Date: Thu, 21 Feb 2002 02:43:52 +0300 > А попдробнее можно (как узнать, где-что обрезать и, главное, как добавить > информацию) > О закачке - zip, 125M, 3 секции, на данный момент 89M > ЗЫ: К РАЗРАБОТЧИКАМ - может стоить служебную информацию перенести в начало > файла (или в отдельный файл, напр., descript.ion) и обновлять при каждом > корректном (не ресетом/выкл пит) завершении (пауза в т.ч.). > Тогда, при некорректном завершении потеряется только последний(-ие) > фрагмент(-ы) файла и продолжится закачка с откатом Я все это выяснил с помощью 16-ричного вьюера. Служебная информация ReGet-а имеет следующую структуру: 1. Размер закаченной области файла дополняется в конце нулями до кратности размера 4096 байт (4Кб). 2. Каждая сессия закачки занимает в конце файла 16 байт (4 LongWord-а (32 битное целое без знака)): 1) Сигнатура 0x2F772145 2) Байт начала сессии (0 - ...) 3) Количество закаченных байт 4) Размер сессии 3. Для первой сессии 2) всегда равен 0, а 4) равен размеру файла. 4. Для следующих сессий 4) всегда равен 0 Вот пример последних байтов одного из моих файлов с одной сессией: 0AC81FC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0AC81FD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0AC81FE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0AC81FF0: 45 21 77 2F 00 00 00 00 93 13 C8 0A D3 9A E4 22 0AC82000: Вот пример последних байтов одного из моих файлов с четырьмя сессиями: 0288CFC0: 45 21 77 2F 00 00 00 00 19 55 01 00 00 90 60 03 0288CFD0: 45 21 77 2F 8F 85 D8 00 1A 21 00 00 00 00 00 00 0288CFE0: 45 21 77 2F 4E 4A B0 01 56 16 01 00 00 00 00 00 0288CFF0: 45 21 77 2F D0 8E 88 02 EA 37 00 00 00 00 00 00 0288D000: Я просто убирал последние байты файла (4-8 килобайт) и воссоздавал служебную информацию (искал незакаченные области в 16-ричном вьюере, которые есть много-много нулей), давал файлу требуемое расширение (если это установлено в ReGet-е) и запускал закачку. По опыту могу дать рекомендацию: файлы больших объемов лучнше всего качать в одну сессию. Если очень нужно, то могу послать мою программульку по вводу/редактированию служебной информации. | Цитата: From: Andrew Kulikoff <eliot89@mail.uar.net> Newsgroups: regetsoft.public.regetdx.ru Subject: Вырезать кусок руками в файле закачки -- попросить докачать Date: Sat, 15 Mar 2003 11:52:26 +0200 Здравствуйте. Скачал разок -- архив битый, скачал второй раз -- битый. На третий -- ОК. Так вот, чтобы не качать заново приличный весом файл, подумал поделить на две-три-четыре части зарезервированный Регетом пустой файл, залить в эти части из уже скачанного и битого, и пустить закачивать снова только нужную секцию. Открыл зарезервированный файл, и вижу: количество секций и что-куда, записано в конце файла. Большой ли это секрет, чтобы публично подсказать формат этой записи? Хотя бы кратко, сколько строк дописано и что? Если уж место под файл резервируется, грех не попробовать на больших размерах качать указанные юзером части файлов -- вероятность вытянуть именно битую половину/треть/четверть очень высока, особенно если предполагаешь, в каком месте это могло случиться (ну, там, при 99% закачки модем на пол уронили...:0). А пропо, у меня один раз именно так и было... При закачке МР3 или фильмов многие этим воспользовались бы. Если, конечно, догадаются, как этим куском пользоваться. А может, просто ввести опцию в UI Регета: Content-range: 5 000 000 - 6 000 000 / 10 000 000 ? | Добавлено впрочем и то как у меня терялось это чуть другое, у меня именно затиралась служебная запись о состоянии потока, при однопоточном скачивании..тогда еще и reserve space on disk for entire file не существовало |