cURL ou xargs: mostra o progresso

0

Estou usando cURL para baixar muitos arquivos e concatená-los para STDOUT. Cerca de 100.000 arquivos pequenos. Eu gostaria de ver o progresso contra os 100.000. Isso é possível com o curl ou usando o curl em xargs?

Interessado apenas em soluções de linha de comando padrão.

    
por William Entriken 14.12.2012 / 13:38

2 respostas

1

Existem algumas coisas diferentes que você pode fazer aqui: mas sem saber exatamente a sua metodologia de curl, posso oferecer algumas sugestões.

Faça uma contagem iterativa para loop:

for file {1..100000}; do echo "downloading: $file" >&2 ; curl [whatever] ; done Isso irá redirecionar o "download: $ file" para o STDERR, então se você estiver usando um redirecionamento no STDOUT, ele não vai estragar tudo, mas você ainda pode vê-lo na tela

for file {1..100000}; do echo "downloading: $file" >> progress.out ; curl [whatever] ; done Isso grava o progresso em um arquivo para que ele não apareça na tela, então você pode simplesmente progredir -f progress.out

Se sua onda não for iterativa:

terminal 1: curl [whatever] | tee progress.out

terminal 2: watch -n5 "grep -c '[unique file delimiter]' progress.out"

tee grava uma cópia do STDOUT em um arquivo, e você conta com algo que só aparece uma vez por documento HTML ... talvez uma tag <HEAD> ou <HTML> ou outra coisa. O Watch apenas executará o grep a cada 5 segundos para informar quantos você concluiu.

    
por 14.12.2012 / 16:37
0

O GNU Parallel é mais ou menos padrão nos dias de hoje:

cat urls | parallel -j30 --eta curl ... > out

Benefício adicionado: vários cachos serão executados em paralelo.

Assista aos vídeos de introdução para saber mais: link

    
por 03.01.2013 / 01:02