Мне нужно скачать большой файл (1 ГБ). У меня также есть доступ к нескольким компьютерам под управлением Linux, но каждый ограничен скоростью загрузки 50 КБ / с по политике администратора.
Как распределить загрузку этого файла на несколько компьютеров и объединить их после загрузки всех сегментов, чтобы я мог получить его быстрее?
download
cluster
parallelism
Meysam
источник
источник
Ответы:
Общие протоколы HTTP, FTP и SFTP поддерживают запросы диапазона , поэтому вы можете запросить часть файла. Обратите внимание, что для этого также требуется поддержка сервера, поэтому он может работать или не работать на практике.
Вы можете использовать
curl
и опцию-r
или,--range
чтобы указать диапазон и в конечном итоге простоcat
связать файлы вместе. Пример:И в конце концов, когда вы собрали отдельные части, вы объединяете их:
Вы можете получить дополнительную информацию о файле, включая его размер, с помощью
--head
опции:Вы можете получить последний кусок с открытым диапазоном:
Прочитайте справочную страницу curl для получения дополнительных опций и объяснений.
Вы также можете использовать ssh и tmux, чтобы упростить запуск и отслеживание загрузок на нескольких серверах.
источник
cat distro* > ...
проверьте сортировку файлов, так как*
развернутая вашей оболочкой может сортировать это так:distro1.iso distro10.iso distro11.iso ...
и, таким образом, объединять в неправильном порядке.cat distro{1..10}.iso
cat $(seq -fdist%g.iso 1 10)
должно быть более предсказуемым, но это не удаетсяcsh
, хотя. Замена$(…)
на заднюю часть, похоже, работает в большинстве оболочек.seq
это не переносимая команда. Вы можете использоватьdistro001.iso
,distro002.iso
...distroy010.iso
Загрузка файла объемом 1 гигабайт со скоростью 50 килобайт в секунду займет около 5,5 часов.
Кажется, что усилия по координации нескольких компьютеров для получения частичных данных могут сэкономить некоторое время.
Вы можете посмотреть на bittorrent и использовать заполнение веб-страниц вместе с переводами через одноранговый обмен. Каждый клиент может получать фрагменты и обмениваться готовыми фрагментами в локальной сети (LAN). Вы получаете один и тот же файл размером 1 ГБ на каждом компьютере, но объединение фрагментов выполняется автоматически.
источник