Estou tentando baixar o valor de um ano de dados de um servidor NOAA FTP usando wget (ou ncftpget). No entanto, leva muito mais tempo do que deveria devido à sobrecarga do FTP (eu acho). Por exemplo, este comando
time wget -nv -m ftp://ftp:[email protected]/pub/data/noaa/2015 -O /weather/noaa/2015
Ou da mesma forma, via ncftpget
ncftpget -R -T -v ftp.ncdc.noaa.gov /weather/noaa/ /pub/data/noaa/2015
Rende um resultado de. 53 minutos para transferir 30 milhões!
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
Quando assisto a essa transferência, cada arquivo individual é transferido rapidamente (500kb / s), mas o processo de download de 12.000 arquivos relativamente pequenos gera uma enorme quantidade de sobrecarga e atrasa todo o processo.
Minhas perguntas:
- Estou avaliando a situação corretamente? Sei que é difícil saber sem conhecer os servidores, mas o FTP realmente é um saco de tanta coisa ao transferir toneladas de arquivos pequenos?
- Existem ajustes no wget ou no ncftpget para permitir uma melhor execução do servidor FTP remoto? Ou talvez algum tipo de paralelismo?
Como alternativa, se você tiver acesso de gravação em seu host (nesse caso, eu suponho que você esteja efetuando login anonimamente e não tenha acesso de gravação) zip / tar os arquivos antes do download
fonte
Sim você está correto. Infelizmente, embora as especificações de ftp ofereçam um modo de transferência alternativo capaz de multiplicar vários arquivos em uma única conexão de dados, a última vez que fiz uma pesquisa sobre o software disponível (que reconhecidamente estava em 1998), nenhum era compatível. Não acho que a situação tenha mudado porque o interesse no ftp foi bastante baixo. A maioria das organizações com esses conjuntos de dados fornece acesso a eles via http ou em arquivos maiores para evitar esse problema. Você deve verificar se o NOAA faz isso.
fonte