Как докачать файл при ошибке

Лечение битых файлов, закачки и докачки

Время на прочтение
7 мин

Количество просмотров 5.2K

В этом топике вы узнаете как:

  • восстановить повреждённую закачку, даже если файла нет в торрентах и других источниках, что содержат хеш его фрагментов;
  • скачать файл с докачкой, даже если она не поддерживается сервером;
  • докачивать, если сервер не даёт прямых ссылок, отдавая файл с разных адресов (но отдаёт Partial Content).

Нынче наткнулся на топик «Торрент vs. 64 кбит/с» и увидел проблему с которой сам неделю назад столкнулся.

Довольно долго, дней 10 (с перерывами), качал 3,5 Гб ISO образ на своём 100 Кбит/с. И этот самый образ повредился при скачивании. Попытался поискать это дело в торрентах и воспользоваться методом, описанным в вышеупомянутом топике — раньше я уже так восстанавливал файлы. Но файла там не оказалось (да и на ресурс откуда я скачивал он попал всего-то пару недель назад). Дабы меня не начали пинать за пиратство, сразу скажу что качал Visual Studio 2008 Professional SP1 RUS с Dreamspark.

Так вот, ждать ещё 10 дней не хотелось, как и производить особо много ручной работы, в результате чего родился скрипт, который и выполнил весь этот грязный процесс…

Идея

Требовалось минимизировать объём информации которую придётся перекачать, и собственно как-то выявить эти повреждённые кусочки. Отсюда, очевидно вытекает план действий:

  • режем скачанный файл на достаточно мелкие кусочки;
  • считаем хеш;
  • сравнимаем с неким эталонным, выявляя «плохие»;
  • скачиваем нужные куски и склеиваем.

А где же взять этот самый «правильный» хеш? Чтобы не скачивать всё целиком себе, необходимо какое-то стороннее место, куда можно скачать файл с гораздо более высокой скоростью. У меня как раз имелся доступ к площадке виртуального хостинга, в том числе и SSH — как раз то что нам нужно. Но… пространства там было совсем не 3,5 Гб, а всего 1,5 Гб. В результате пришла мысль тянуть не весь файл сразу, а по кусочкам.

Код

В результате всех этих измышлений родился следующий код (назовём файл md5_verify.php).

<?php
$md5sum 
'md5sum.txt'// файл где хранятся хеши
$tmp    'chunk.tmp';  // имя временного файла для очередного кусочка
$out    'out/';       // сюда будут сложены кусочки которые надо будет перекачать$offset 0;            // с какого места начинаем (в байтах)
$chunk  1048576;      // размер кусочка
$size   3760066560;   // размер файла$host   'http://all.files.dreamspark.com';$path   '/dl/studentdownload/7/6/3/76329869-10C4-4360-9B09-98C813F8EAFA/ru_visual_studio_2008_professional_edition_dvd_x86_x15-25526.iso';
$param  '?LCID=1033&__gda__={timestamp}_{hash}';
$cookie '__sdt__={another-hash-or-guid}';
$url    =  $host $path $param;// читаем файл с хешами как массив строк
$sums file($md5sum);

for (

$i 0$l sizeof($sums); $i $l && $offset $i $chunk $size$i++)
{
    
// начало и конец очередного кусочка
    
$start $offset $i $chunk;
    
$end   min($size$offset + ($i 1) * $chunk1;// получаем имя и хеш кусочка из файла с хешами
    
list($hash$file) = explode(' '$sums[$i intval($offset $chunk)]);$file trim($file"*rn ");// создаём временный файл
    
$fp fopen($tmp"w+");// устанавливаем параметры CURL
    
$options = array
    (
        
CURLOPT_URL     => $url,
        
CURLOPT_HEADER  => false,
        
CURLOPT_COOKIE  => $cookie,
        
CURLOPT_RANGE   => $start '-' $end,    // вот тут указывается какой диапазон байт качать
        
CURLOPT_FILE    => $fp
    
);$ch curl_init();                // инициализируем CURL
    
curl_setopt_array($ch$options); // устанавливаем параметры
    
curl_exec($ch);                   // скачивам
    
curl_close($ch);                  // убиваем объект
    
fclose($fp);                      // закрываем файл

    // наш локальный кусочек плохой если его хеш не совпадает с тем что мы сейчас скачали

$broken = ($hash != md5_file($tmp));// выводим имя файла, диапазон байт и статус этого кусочка
    
print $file.' ['.$start.'-'.$end.']: ' . ($broken 'BROKEN' 'OK') . "n";// если файл был испорчен, то откладываем этот кусочек (чтобы потом его скачать)
    
if ($broken)
        
copy($tmp$out.$file);// удаляем временный файл
    
unlink($tmp);

}



Если кратко, скрипт по частям скачивает файл, сравнивая хеш каждого очередного кусочка, с тем что мы посчитали у себя на машине. Если не совпадает — наш кусочек битый, а тот что на сервере — хороший, откладываем его для последующего скачивания.

Действуем

Для начала, то что мы скачали надо разрезать на кусочки:
C:ISO>mkdir out && cd out && split -a 3 -b 1048576 ..ru_visual_studio_2008_professional_edition_dvd_x86_x15-25526.iso

Параметр -a указывает длину суффикса, так как он буквенный (26 символов нижнего регистра), то 3 нам будет вполне достаточно: 26³ = 17576, что явно больше количества кусочков 3,5 Гб / 1 Мб ≈ 3584.

Когда всё это дело порежется, получим файлы с именами xaaa, xaab, xaac и т. д.

Теперь считаем хеш:
C:ISOout>md5sum x* > ..md5sum.txt

Этот процесс тоже довольно продолжительный, в итоге будет получен файл с содержимым вида:
26c379b3718d8a22466aeadd02d734ec *xaaa
2671dc8915abd026010f3d02a5655163 *xaab
6f539fcb0d5336dfd28df48bbe14dd20 *xaac
69f670a2d9f8cf843cdc023b746c3b8c *xaad

Затем загружаем md5_verify.php и md5sum.txt на сервер, и там же создаём папочку out, куда будут складываться кусочки которые нам надо будет перекачать. Подключаемся по SSH и тычем мордой php интерпретатор в наш скрипт. Теперь можно идти спать, гулять или смотреть House M.D.

Через несколько часов, в зависимости от ширины канала, которая вам предоставлена на площадке, работа скрипта завершится, а в папочке out будут лежать все кусочки, которые вам надо скачать.

Прячем их в архив:
tar - jcvf "chunks.tar.bz2" ./out/x*

Ну и наконец надо лишь переложить полученный архив в папочку откуда вы можете его скачать, и натравить на него свой любимый wget, curl или что вам там больше нравится.

Заменив поврежденные кусочки тем что извлекли из скачанного архива, можем склеить пациента обратно:
cat outx* > fixed.iso

Можно резать, клеить и хешировать чем хочется, но все кому поневоле приходится пользоваться Windows давно раздобыли все эти маленькие замечательные утилитки типа cat, split и md5sum, стандартные для Linux, портированными для Windows (проект GnuWin32).

Про докачку

Да, кстати, вместе с этим нашёл отличный способ качать с докачкой даже если сервер не способен отдавать Partial Content: просто напросто тянем файл на свою хостинговую площадку через шелл, а потом уже качаем оттуда как приличные люди.

Многие сервисы конечно же хотят Referer и/или Cookie, не соглашаясь просто так отдать файл. Их можно получить: нужен Firefox и расширение к нему — Live HTTP Headers.

Открываем окошечко аддона, жмём на сайте на ссылку/кнопку «Скачать», выскакивает предложение сохранить файл. Отказываемся качать файл, нажав «Отмена», а затем копируем нужные нам данные из заголовка.

Live HTTP Headers

Ну а затем пихаем эти данные в свою любимую качалку (на скринах это всё производится локально, но вам, очевидно, надо будет это выполнить через SSH на удалённом сервере):
wget --header "Referer: http://csna01.libredigital.com/" -O "output.pdf" http://csna02.libredigital.com/cgi-bin/pdf_loader.pl?v=5

wget
curl -v -e "http://csna01.libredigital.com/" -o "output.pdf" http://csna02.libredigital.com/cgi-bin/pdf_loader.pl?v=5

curl

На скрине можно увидеть использование ключа -c для wget (для curl используется -C), он позволяет докачивать, впрочем приведён тут исключительно для демонстрации, ибо сервер из примера как раз не даёт докачать.

Напоследок

Впрочем, есть смысл от использования wget и curl с докачкой непосредственно на своей машине: если оставлять одним и тем же выходное имя файла (ключ -O), то можно качать один файл частями в любое время и использую каждый раз новую ссылку (и с изменившимся cookie).

Это и есть третье «узнаете как» из обещаний в начале топика.

P.S. Вся история завершилась тем что у пацента обнаружилось ≈ 500 повреждённых частей. Потрачено пара часов на написание, отладку, нарезку и подсчёт хеша, несколько часов на работу скрипта на сервере, и около 12 часов на скачивание этих частей, что в сумме заняло примерно сутки. Тем не менее это гораздо меньше чем опять качать частями в течении десятка дней (и обязательно что-нибудь снова повредить).

Все мы прекрасно знаем, что сегодня Интернет активно используется для загрузки файлов. При этом в зависимости от скорости соединения процесс загрузки файлов может растянуться на несколько часов или дней. В этом случае может возникнуть ситуация, когда процесс загрузки обрывается из-за разрыва соединения с Интернет. После этого Вам, скорее всего, придется загружать скачиваемый файл заново, а значит, все потраченные на загрузку этого файла часы прошли впустую. Для того, чтобы иметь возможность докачать файл из Интернет, можно воспользоваться специальными программами – менеджерами загрузок. Об одной из таких программ — Download Master — мы расскажем в данной статье.

Загрузка программы

Download Master бесплатная программа, скачать ее можно с официального сайта разработчиков.

Установка программы

Следуйте инструкциям мастера установки: нажмите «Далее», прочитайте и примите условия лицензионного соглашения, обратите внимания, что во время установки у Вас должны быть закрыты любые браузеры. Выберите папку для установки Download Master, папку для хранения ярлычков и т.д. Также в процессе установки Download Master Вам будет предложено установить Яндекс.Бар (это не является обязательным). Затем нажмите «Завершить». На этом установка программы закончена.

Работа с программой

При первом запуске Download Master предлагает выбрать тип Вашего Интернет соединения (рис.1).

Рис.1 Выбор типа Интернет соединения

Рис.1 Выбор типа Интернет соединения

Основное окно Download Master представлено на рис.2.

Рис. 2 Основное окно Download Master

Рис. 2 Основное окно Download Master

Сверху расположено основное меню программы («Файл», «Закачка», «Действия» и т.д.). Присутствует пункт меню «Справка», в котором на русском языке подробно описаны возможности Download Master.

Поэтому в данной статье мы не будем подробно рассматривать все пункты меню, остановимся лишь на некоторых. Мы рекомендуем Вам посмотреть пункт «Автоматизация», в нем можно отметить настройки закачки файлов. Также обратите внимание на пункт «Инструменты», а в нем на подпункт «Настройки» (рис.3).

Рис.3 Инструменты Download Master

Рис.3 Инструменты Download Master

Отметьте галочками необходимые Вам пункты во вкладке «Общие». Также обратите внимание на вкладку «Интеграция» (рис.4).

Рис.4 Вкладка «Интеграция»

Рис.4 Вкладка «Интеграция»

Здесь можно выбрать параметры интеграции Download Master в браузеры. Если Вы хотите, чтобы все закачки сразу же передавались в Download Master, можете отметить галочками все браузеры в разделе «Другие браузеры». В данном случае мы не интегрировали Download Master в браузер Opera. Изменить место сохранения загружаемых файлов можно во вкладке «Закачка» (рис.5).

Рис.5 Вкладка «Закачка»

Рис.5 Вкладка «Закачка»

Для того, чтобы изменить место загружаемых файлов, кликните по кнопке «Изменить» и выберите любую папку или создайте новую. Также в этой вкладке можно изменить некоторые параметры Download Master, например, максимальное количество одновременных закачек.

Вы можете автоматически проверять загружаемые файлы Вашим антивирусом. Для этого выберите вкладку «Антивирус» (рис.6).

Рис. 6 Вкладка «Антивирус»

Рис. 6 Вкладка «Антивирус»

Поставьте галочку напротив надписи «Проверять файлы на вирусы после закачки», нажмите кнопку «Найти» и выберите запускаемый файл (файл с расширением .exe) Вашего антивируса. Если у Вас не отображаются расширения файлов, можете воспользоваться статьей «Отображение расширения файла».

Сейчас перейдем непосредственно к описанию закачки файлов с помощью Download Master.

Теперь при загрузке файла у Вас на экране появится такое сообщение (рис.7).

Рис.7 Информационное сообщение о загрузке файла

Рис.7 Информационное сообщение о загрузке файла

А по центру экрана отобразится сам закачиваемый файл в программе Download Master (рис.8).

Рис.8 Закачиваемый файл

Рис.8 Закачиваемый файл

Нажмите «Начать закачку», после этого начнется загрузка файла. Скачанный файл будет находиться в указанной для сохранения папке (см. рис.8). Все закачки отображаются в главном окне Download Master (рис.9).

Рис.9 Закаченный файл

Рис.9 Закаченный файл

Если в процессе закачки был разрыв Интернет соединения, Вы можете возобновить загрузку файла, кликнув по нему правой кнопкой мыши и нажав «Возобновить». При этом загрузка файла будет продолжена с места разрыва соединения с Интернет. Если Download Master не запускается автоматически, Вы можете кликнуть по загружаемому файлу правой кнопкой мыши и выбрать пункт «Копировать ссылку», а затем нажать в главном окне Download Master на синий «+» с надписью «Добавить» и вставить туда скопированную ссылку на загрузку файла (рис.10).

Рис.10 Добавления закачки в Download Master

Рис.10 Добавления закачки в Download Master

На этом рассказ о программе Download Master завершен.

Все вопросы относительно данной статьи Вы можете обсудить на нашем форуме.

Как докачать файл в Опере

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

Как докачать файл в Опере

Инструкция

Система данного браузера частенько прерывает закачку файла. Также случаются ситуации, когда загрузка прерывается из-за отсутствия подключения к интернету. Что же делать в таких ситуациях? Для начала запустите браузер заново. Вам нужно найти файл, который загружался в данном браузере. Для этого нажмите F4 и выберите в левом меню вкладку «Загрузки».

Откройте данную вкладку. Перед вами должен появиться список всех недавно загруженных файлов. Все они были загружены при помощи данного браузера. Найдите в списке файл, который вам нужно докачать. Далее нажмите на нем правой клавишей мыши и выберите пункт «Возобновить». Загрузка данного файла будет возобновлена с того места, где остановилась. Однако случаются ситуации, когда файл загружается сначала. А что ж делать, например, если было загружено около 100 Мб, да и трафик платный?

Для этого придется немного обмануть систему. Откройте папку C:Documents and SettingsAdminМои документы. Здесь по умолчанию хранятся все скачанные файлы. Если у вас другая директория, то откройте ее (посмотреть можно через кнопку «Общие настройки»). Зайдите во вкладку «Расширенные» и выберите «Загрузки». Просмотрите путь, который прописан для сохранения всех загруженных файлов. Переместите старый недокачанный файл в другую папку. Далее начните заново загружать файл, который присутствует в загрузках. Как только файл начнет закачиваться, нажмите на кнопку «Приостановить».

Теперь зайдите в папку, которая по умолчанию прописана в системе. Замените старым файлом новый. Далее нажмите во вкладке «Загрузки» на файле кнопку «Возобновить». Начнется загрузка с того места, где была остановлена впервые. Вы теперь без проблем можете закачать файл в данном браузере. При возникновении подобных проблем проделайте аналогичные действия.

Войти на сайт

или

Забыли пароль?
Еще не зарегистрированы?

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

как_докачать_файл

У Вас внезапно оборвалась связь? Вы не знаете, как докачать файл, который качали несколько часов?! Представляю Ваши эмоции… Но есть решение этой проблемы!

Думаю, что Вы догадались, о чем пойдет речь сегодня. Каждый из нас неоднократно, десятки, а может быть и сотни, раз сталкивался с такой проблемой, как необходимость докачать файл. Вспомните, как при многочасовой закачке какого-нибудь интересного фильма, вдруг пропадал интернет. Или электричество моргало. Или компьютер заглючивал. Или сами случайно закрывали браузер. Что Вы тогда чувствовали? Обиду? Горечь? Разочарование? А может быть всё это сразу? И Вы ругали всех, всё и вся? А если всё это происходило неоднократно при скачивании одного и того же файла… Я помню. У меня такое бывало частенько. И сегодня я расскажу вам, как этого избежать.

Помните, в статье “Как скачать видео с youtube” мы пользовались замечательной програмкой Download Master? Сегодня она нам снова понадобится.

Открываем Download Master

Рассмотрим для примера как докачать файл с с letitbit. Как скачать файл с летитбит смотрите в статье “Как скачать файл бесплатно”.

Выбираем закачку с letitbit.

как докачать файл с с letitbit

Нажимаем на кнопке «Ссылка на скачивание файла» правой кнопкой мыши и выбираем пункт «Скопировать адрес ссылки».

как докачать файл

Добавляем закачку в  Download Master. Жмём «Начать закачку».

Download Master

Далее закачка прерывается, либо мы сами нажимаем «Пауза».

как докачать файл с с letitbit

Жмем «Свойства».

как_докачать_файл_07

В появившемся окне выделяем и удаляем ссылку.

как докачать файл с с letitbit

Снова повторяем все действия и копируем ссылку. Она теперь будет другой.

как_докачать_файл_08

Вставляем новую ссылку и нажимаем «Ok».

как_докачать_файл_09

Жмем «Возобновить».

как_докачать_файл_10

Видим, что закачка возобновилась.

Кстати, этот способ пригодится не только при проблемах с интернетом. Бывают файлы такого большого размера, что на их скачивание необходимо более суток. А на торрентах такого файла попросту нет. И этот способ – отличное решение данной проблемы. В то время, пока Вы работаете на компьютере, файл закачивается. Не нужен компьютер, отключили закачку. На следующий день сели за ПК, возобновили закачку. Очень удобно. Главное запомнить в браузере вкладку, с которой Вы начинали закачку.

А сейчас, для закрепления хорошего настроения приглашаю Вас посмотреть прикольный мультик!

Как в программе FileZilla повторить неудавшиеся передачи

Последнее обновление — 15 января 2023 в 00:49

Недавно мне потребовалось в программе FileZilla повторить неудавшиеся передачи файлов с локального компьютера на сервер, в директорию сайта. Через Файлзиллу я хотел залить файлы движка, чтобы переустановить CMS WordPress, но потерпел фиаско, поскольку не все передачи прошли успешно.

FileZilla — бесплатный FTP клиент, менеджер сайтов, который помогает управлять файлами, загруженными на удалённый сервер, позволяет производить удалённую правку файлов.

В такой ситуации можно снова попытаться закинуть все файлы на удалённый сервер. Либо просто повторить передачу тех из них, которые не были скопированы.

Уже в процессе копирования файлов, в закладке “Неудавшиеся передачи”, программа отмечает такие файлы. На скриншоте закладка выделена красным цветом.

Процесс передачи файлов

В конечном итоге, если не все файлы удалось передать, FileZilla выкатит вот такой список, как на скриншоте.

Полный перечень неудавшихся передач

А теперь, показываю порядок действий, как повторить неудавшиеся передачи:

  1. Перейти на соответствующую вкладку и выделить все файлы. Если их очень много, сделать это можно сочетанием клавиш “Ctrl+A”.
  2. Выделить все файлы

  3. Кликнуть правой клавишей мыши по выделенным файлам и выбрать из выпавшего списка пункт “Очистить выбранные и получить снова”.
  4. Очистить выбранные файлы

  5. Файлы автоматически переместятся на вкладку “Файлы в задании”.
  6. Файлы переместились на другую вкладку

  7. Подняться вверх, к пункту меню “Передача”.
  8. Пункт меню "Передача"

  9. Кликнуть по кнопке “Передача” левой клавишей мыши и в открывшемся списке выбрать пункт “Выполнить задание”.
  10. Выполнить задание по передаче

Вот такая нехитрая инструкция поможет осуществить задуманное при помощи полезных функций FTP-клиента FileZilla. Всем WEB!

Друзья, плюсаните, вдруг пригодится!

Возможно, вам также будет интересно:

  • Как доказать что это не счетная ошибка
  • Как доказать что это не реестровая ошибка
  • Как доказать что осознал ошибку
  • Как доказать что нет кадастровой ошибки
  • Как доказать что не было счетной ошибки

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии