Como posso executar o comando “curl” equivalente com desempenho semelhante a este comando “wget”?

Como posso executar o comando “curl” equivalente com desempenho semelhante a este comando “wget”?

eu tenho umwgetcomando:

wget -r --no-parent -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/

Mas só funciona em versões mais recentes do wget. Infelizmente tenho uma versão mais antiga wget(GNU Wget 1.15 construída em darwin14.3.0) e não consigo atualizá-la. Especificamente, é a wget --show-progressopção que não é reconhecida.

Gostaria de saber se existe um comando equivalente paracurl? A versão do curlmeu sistema é 7.37.1 (x86_64-apple-darwin14.0).

Responder1

Mas só funciona em versões mais recentes do wget. Infelizmente tenho uma versão mais antiga wget(GNU Wget 1.15 construída em darwin14.3.0) e não consigo atualizá-la. Especificamente, é a wget --show-progress opção que não é reconhecida.

Com base no que sei sobre como curlfunciona e como wgetfunciona, eles podem parecer superficialmente iguais, mas não há equivalente à wgetfuncionalidade recursiva no curl. Para fazer algo assim, curlé necessário algum script Bash sofisticado para envolver o curlcomando.

Então, quando você diz que não pode atualizar wget, o que exatamente você quer dizer? Por wgetser uma ferramenta GNU, ela não é instalada com o Darwin (que é baseado em BSD) e geralmente é compilada a partir do código-fonte. Na verdade, os detalhes da versão que você forneceu são claramente compilados a partir do código-fonte, de alguma forma, já que a versão é “GNU Wget 1.15 construída em darwin14.3.0”. Então, se essa versão wgetfoi instalada por algo comoCerveja caseira, há esperança, pois se o Homebrew estiver em seu sistema, você também deverá ter o Xcode - e ferramentas/compiladores de linha de comando relacionados - instalados em seu sistema.

Agora sabendo disso, você deverá ser capaz de compilar uma versão atualizada do wget—como 1.16.3—a partir do código-fonte; ignorando a versão instalada do Homebrew e apenas executá-la em seu diretório inicial. Você não tem root/ sudoacesso para fazer isso; veja como você pode fazer isso.

Compilando wgetda fonte.

Primeiro pegue um arquivo compactado de um wgetsite de origem oficial:

curl -O http://ftp.gnu.org/gnu/wget/wget-1.16.3.tar.gz

Em seguida, descompacte o arquivo assim:

tar -xzf wget-1.*.tar.gz

Agora vá para o diretório descompactado:

cd wget-1.*

Execute este configurecomando:

./configure --with-ssl=openssl

Se de alguma forma esse configurecomando falhar, talvez seja necessário adicionar um --with-libssl-prefixvalor como este:

./configure --with-ssl=openssl --with-libssl-prefix=/usr/lib

Assim que o configureprocesso for concluído, execute make:

make

Se funcionar corretamente, uma versão recém-compilada do wgetbinário 1.16.3 estará pronta para você usar.

Executando a versão recém-compilada wgetem seu diretório inicial.

Agora, neste ponto, a maioria das instruções diria que você deve executar sudo make installpara wgetinstalar totalmente o sistema. Mas se você não tiver privilégios root/ sudo- ou não quiser atualizar a wgetversão que está instalada em todo o sistema - você ainda pode executar o wgetbinário que acabou de compilar desta forma. Primeiro, vamos sair do seu wgetdiretório de origem assim:

cd ~/

Agora basta executar o wgetbinário 1.16.3 que você compilou explicitamente assim para confirmar que está funcionando:

~/wget-1.16.3/src/wget --version

A saída deve ser algo assim:

GNU Wget 1.16.3 built on darwin13.4.0.

+digest +https +ipv6 -iri +large-file -nls +ntlm +opie -psl +ssl/openssl 

Wgetrc: 
    /usr/local/etc/wgetrc (system)
Compile: 
    gcc -DHAVE_CONFIG_H -DSYSTEM_WGETRC="/usr/local/etc/wgetrc" 
    -DLOCALEDIR="/usr/local/share/locale" -I. -I../lib -I../lib 
    -DNDEBUG 
Link: 
    gcc -DNDEBUG -liconv -lssl -lcrypto -ldl -lz ftp-opie.o openssl.o 
    http-ntlm.o ../lib/libgnu.a 

Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://www.gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Originally written by Hrvoje Niksic <[email protected]>.
Please send bug reports and questions to <[email protected]>.

O que significa que agora você está no mercado!

Executando seu wgetcomando em seu diretório inicial.

Agora você pode executar o wgetcomando postado na sua pergunta assim:

~/wget-1.16.3/src/wget -r --no-parent -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/

E um pequeno ajuste - mas digno de nota - é que muitas wgetopções têm nomes completos e siglas abreviadas. Portanto, --no-parentpode ser abreviado para -npfazer com que o comando fique assim:

~/wget-1.16.3/src/wget -r -np -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/

Limpeza pós-uso.

E se você quiser se livrar do wgetmaterial 1.16.3 que acabou de compilar - já que você diz que o computador em que está trabalhando não é seu - basta excluir os wgetarquivos de origem com os quais você acabou de trabalhar, assim:

rm wget-1.16.3.tar.gz
rm -rf wget-1.16.3

informação relacionada