Загрузка очень больших файлов с помощью HTTP

Загрузка очень больших файлов с помощью HTTP

Я скачиваюPlaceNetСжатая база данных изображений мест (~132GiB). К сожалению, загруженный файл поврежден. Я пробовал несколько раз, каждый раз извлечение останавливалось в разных позициях (приблизительные смещения могли быть 10GiB, 30GiB и т. д.)PlaceNetне предоставляет разделенные версии для загрузки. Ну, проблема должна быть в некоторых байтах в загруженном файле, что я могу сделать, чтобы избежать повторной загрузки всего файла?

Мои идеи таковы:

  1. Есть ли расширение TCP для улучшенной контрольной суммы датаграммы? И как его использовать?

  2. Могу ли я увидеть смещение (приблизительное) до первого байта ошибки, когдапистолет-молнияпинг?

  3. я используюаксельдля загрузки. Когда загрузка завершится, можно ли повторно загрузить некоторые части файла? То есть, создать файл XXX.stдля axel, отметить какой-то диапазон как не загруженный и снова запустить axel.

решение1

Вы можете попробовать другой подход, т. е. использовать обертку FUSE для "монтирования" удаленного файла через HTTP и вызова стандартных инструментов на нем. Инструменты попытаются прочитать определенные байты, и эти попытки будут транслироваться в запросы HTTP GET с диапазоном байтов.

Это обсуждалось на StackOverflow, вэтот отличный ответкАдамкоторый используетHTTPFS:

Смонтируйте удаленный zip-файл и извлеките из него один файл:

mkdir mount_pt
sudo ./httpfs http://server.com/zipfile.zip mount_pt
sudo ls mount_pt zipfile.zip
sudo unzip -p mount_pt/zipfile.zip the_file_I_want.txt > the_file_I_want.txt
sudo umount mount_pt

В вашем случае, если файл не является ZIP-архивом, а, например, tar.gzфайлом (я не могу проверить, так как предоставленная вами ссылка требует регистрации), то вы можете адаптировать шаги:

mkdir mount_pt
sudo ./httpfs http://example.com/file.tar.gz mount_pt
sudo tar xzvf mount_pt/file.tar.gz

Или даже вызовите file-rollerдругой графический инструмент для архива.

Связанный контент