Как скачать 1 миллион файлов?

1297
rudolph

Как я могу скачать 1 миллион файлов?

Я перепробовал множество менеджеров загрузки, все они очень медленные при импорте списка URL, в настоящее время я ждал 20 часов на Download Master, я также пробовал Internet Download Manager и JDownloader, есть ли другое программное обеспечение, которое может обрабатывать импорт URL и загрузка быстрее?

-1
В каком формате файлы? Насколько они большие? Откуда вы их скачиваете? Jay 9 лет назад 0
В основном это файлы изображений - jpg, png, gif, около 200 кб каждый, я загружаю их с URL rudolph 9 лет назад 0
Вы на Linux или Windows? Если это Linux - это супер просто Jay 9 лет назад 0
Было бы более эффективно либо передавать эти файлы по протоколу Torrent, либо объединять их в архивный файл (ZIP, RAR 7Z и т. Д.) В хост-системе перед загрузкой их в место назначения. int_541 9 лет назад 0

4 ответа на вопрос

2
Jay

В Linux это очень легко wget

Однако я предполагаю, что вы пользователь Windows.

Если это так, вы можете достичь аналогичных результатов, используя Powershell, если вы используете Powershell 3 или выше.

  1. Создайте .txt файл в блокноте с полным списком URL
  2. Откройте Powershell и cd перейдите в каталог, в котором вы сохранили файл urls.txt. Напримерcd C:\Users\jay\Documents
  3. Вставьте следующее в окно Powershell: Get-Content urls.txt | ForEach-Object
Это работает. Как я могу установить несколько потоков? rudolph 9 лет назад 0
Просто инкапсулируйте код в верхнем ответе, представленном здесь: http://stackoverflow.com/questions/4016451/can-powershell-run-commands-in-parallel Jay 9 лет назад 1
Многопоточность довольно сложна - я предлагаю вам разделить список из 1 миллиона файлов на 5 частей или что-то в этом роде, затем открыть 5 отдельных окон PowerShell и выполнить ту же команду. Jay 9 лет назад 1
1
Gricey

Если вы устанавливаете Cygwin, вы можете использовать Wget для загрузки всего в файл, содержащий список URL-адресов.

Поместите все URL в файл с именем urls.txt, вы можете запустить эту команду:

$ wget -i urls.txt

Если у вас еще нет Cygwin, просто убедитесь, что Wget выбран в качестве пакета во время установки Gricey 9 лет назад 0
Как я могу добавить папку загрузки к этой команде? Я пытался `wget -i -PD: \ folder \ urls.txt`, он показывает ошибку:` Resolving d (d) ... fail: имя или служба неизвестна. wget: невозможно определить адрес хоста 'd' -P: нет такого файла или каталога. URL-адреса не найдены в -P`. rudolph 9 лет назад 0
Я просто переместил папку cygwin64 на внешний диск и запустил там команду. Теперь все работает. Но было бы здорово, если бы был параметр для нескольких загрузок. rudolph 9 лет назад 0
Я также нашел многопоточность cmd `cat urls.txt | xargs -P 7 -n 1 wget -nv` (7 - максимальное количество подключений), может быть, это кому-нибудь пригодится. rudolph 9 лет назад 0
Извините, отсутствовал несколько дней. Я рад, что вы нашли, как использовать его, хотя Gricey 9 лет назад 0
1
Deadly-Bagel

Если вы ищете эффективность, выполнение нескольких заданий в PowerShell, вероятно, является одним из лучших подходов, но требует небольшого опыта написания сценариев.

Я заполнил файл миллионом записей, а затем рассчитал время для команды, чтобы прочитать его обратно, потребовалось 13,5 с (у меня стандартный жесткий диск 7,200 об / мин).

$down = New-Object "System.Net.WebClient" Get-Content "C:\YourFile.txt" | Foreach-Object { $down.DownloadFile($_, $_.Split("\")[-1]) } 

Просто как простой однопоточный пример, но он будет радостно улететь в фоновом режиме, если время не имеет существенного значения. В противном случае вы можете разделить файл, вручную или программно, и использовать Start-Job { //code here// }для каждого раздела.

Конечно, это полностью зависит от формата вашего файла и того, как вам нужно их сохранить и тому подобное, но все это возможно в PowerShell.

0
Vítor Dias

Существует небольшая программа для Windows под названием Mass Download, которая много раз мне очень помогала: http://www.softpedia.com/get/Internet/Download-Managers/Mass-Download.shtml . Надеюсь, это поможет вам!

Можете ли вы дать более подробную информацию, чтобы помочь пользователям? yass 7 лет назад 0
Это очень маленькая программа с графическим интерфейсом (установка не требуется). Укажите файл TXT со списком URL-адресов, затем папку назначения и нажмите «Загрузить». Он загружает до 5 файлов одновременно, и, если загрузка не удалась, он будет возобновлен после загрузки всех остальных файлов. Vítor Dias 7 лет назад 0