Я пытаюсь загрузить данные за год с FTP-сервера NOAA с помощью wget (или ncftpget). Тем не менее, это занимает больше времени, чем следовало из-за накладных расходов FTP (я думаю). Например, эта команда
time wget -nv -m ftp://ftp:email@ftp.ncdc.noaa.gov/pub/data/noaa/2015 -O /weather/noaa/2015
Или аналогично, через ncftpget
ncftpget -R -T -v ftp.ncdc.noaa.gov /weather/noaa/ /pub/data/noaa/2015
Дает результат. 53 минуты на перевод 30М!
FINISHED --2015-01-03 16:21:41--
Total wall clock time: 53m 32s
Downloaded: 12615 files, 30M in 7m 8s (72.6 KB/s)
real 53m32.447s
user 0m2.858s
sys 0m8.744s
Когда я наблюдаю эту передачу, каждый отдельный файл передается довольно быстро (500 КБ / с), но процесс загрузки 12 000 относительно небольших файлов влечет за собой огромные накладные расходы и замедляет весь процесс.
Мои вопросы:
- Я правильно оцениваю ситуацию? Я понимаю, что трудно понять, не зная серверов, но действительно ли FTP так много сосет при передаче тонны маленьких файлов?
- Есть ли какие-либо настройки для wget или ncftpget, чтобы они могли лучше играть с удаленным FTP-сервером? Или, может быть, какой-то параллелизм?
В качестве альтернативы, если у вас есть доступ на запись на вашем хосте (в этом случае, я бы предположил, что вы входите в систему анонимно и не имеете доступа на запись), zip / tar файлы перед загрузкой
источник
Да вы правы. К сожалению, несмотря на то, что спецификации ftp предлагают альтернативный режим передачи, способный собирать несколько файлов через одно соединение для передачи данных, в последний раз, когда я проводил обзор доступного программного обеспечения (которое, по общему признанию, было еще в 1998 году), никто не поддерживал его. Я не думаю, что ситуация изменилась, потому что интерес к ftp был довольно низким. Большинство организаций с такими наборами данных предоставляют доступ к ним через http или в больших архивах, чтобы избежать этой проблемы. Вы должны проверить, если NOAA делает это.
источник