cURL vs. wget no Linux: Qual é a diferença?

Laptop Linux mostrando um prompt do bash

Se você perguntar a um grupo de usuários de Linux com o que eles baixam arquivos, alguns dirão wgete outros dirão cURL. Qual é a diferença e um é melhor que o outro?

A história do wget e cURL

Os  investigadores governamentais começaram a ligar diferentes redes já na década de 1960, dando origem a  redes interligadas . Mas o nascimento da Internet como a conhecemos ocorreu em 1º de janeiro de 1983, quando o protocolo TCP/IP foi implementado. Este era o elo que faltava. Permitiu que computadores e redes diferentes se comunicassem usando um padrão comum.

Em 1991,  o CERN  lançou seu software World Wide Web, que vinha usando internamente há alguns anos. O interesse nesta sobreposição visual para a internet foi imediato e generalizado. No final de 1994, havia  10 mil servidores web e 10 milhões de usuários .

Esses dois marcos – a internet e a web – representam faces muito diferentes da conectividade. Mas eles também compartilham muitas das mesmas funcionalidades.

Conectividade significa exatamente isso. Você está se conectando a algum dispositivo remoto, como um servidor. E você está se conectando a isso porque há algo que você precisa ou deseja. Mas como você recupera esse recurso hospedado remotamente para o seu computador local, a partir da linha de comando do Linux?

Em 1996, nasceram dois utilitários que permitem baixar recursos hospedados remotamente. Eles são wget, que foi lançado em janeiro e cURLque foi lançado em dezembro. Ambos operam na linha de comando do Linux. Ambos se conectam a servidores remotos e recuperam coisas para você.

Recomendado:  Os coolers de reposição para CPU são melhores do que os coolers de estoque da Intel?

Mas este não é apenas o caso habitual do Linux fornecer duas ou mais ferramentas para fazer o mesmo trabalho. Esses utilitários têm finalidades e especialidades diferentes. O problema é que eles são semelhantes o suficiente para causar confusão sobre qual usar e quando.

Considere dois cirurgiões. Você provavelmente não quer que um cirurgião oftalmologista realize sua cirurgia de ponte de safena, nem quer que o cirurgião cardíaco faça sua operação de catarata. Sim, ambos são profissionais médicos altamente qualificados, mas isso não significa que sejam substitutos um do outro.

O mesmo é verdade para wgete cURL.

wget e cURL comparados

O “w” no wgetcomando é um indicador da finalidade pretendida. Seu objetivo principal é baixar páginas da web – ou até mesmo sites inteiros. Isso é

 man 

page descreve-o como um utilitário para baixar arquivos da Web usando os protocolos HTTP, HTTPS e FTP .

Por outro lado, cURLfunciona com 26 protocolos, incluindo SCP, SFTP e SMSB, bem como HTTPS. Isso é

 man 

página diz que é uma ferramenta para transferir dados de ou para um servidor. Não foi feito sob medida para funcionar com sites, especificamente. Destina-se a interagir com servidores remotos, usando qualquer um dos muitos protocolos de Internet que suporta.

Portanto, wgeté predominantemente centrado no site, embora cURLseja algo que opera em um nível mais profundo, no nível simples da Internet.

wgeté capaz de recuperar páginas da web e navegar recursivamente em estruturas de diretórios inteiras em servidores da web para baixar sites inteiros. Também é capaz de ajustar os links nas páginas recuperadas para que apontem corretamente para as páginas da Web no seu computador local, e não para suas contrapartes no servidor da Web remoto.

Recomendado:  Como executar perfeitamente programas do Windows em seu Mac com o Parallels

cURLpermite interagir com o servidor remoto. Ele pode fazer upload de arquivos e também recuperá-los.

 cURL  

funciona com proxies SOCKS4 e SOCKS5 e HTTPS para o proxy. Suporta a descompactação automática de arquivos compactados nos formatos GZIP, BROTLI e ZSTD. cURLtambém permite baixar várias transferências em paralelo.

A sobreposição entre eles é que wgetambos cURLpermitem recuperar páginas da web e usar servidores FTP.

É apenas uma métrica aproximada, mas você pode avaliar os conjuntos relativos de recursos das duas ferramentas observando a duração de seus

 man 

Páginas. Em nossa máquina de teste, a página de manual wgettem 1.433 linhas. O

 man 

página cURLtem impressionantes 5.296 linhas.

Uma rápida olhada no wget

Por wgetfazer parte do projeto GNU , você deverá encontrá-lo pré-instalado em todas as distribuições Linux. Usá-lo é simples, principalmente para seus usos mais comuns: baixar páginas da web ou arquivos.

Basta usar o wgetcomando com a URL da página da web ou arquivo remoto.

wget https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc

Baixando um documento do Word com wget

O arquivo é recuperado e salvo em seu computador com seu nome original.

Saída do comando wget baixando um documento do Word

Para salvar o arquivo com um novo nome, use a -Oopção (documento de saída).

wget -O word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc

Baixando um arquivo com wget e salvando-o com um novo nome

O arquivo recuperado é salvo com o nome escolhido.

O arquivo baixado é renomeado com o nome fornecido na linha de comando

Não use a -Oopção ao recuperar sites. Se você fizer isso, todos os arquivos recuperados serão anexados em um.

Para recuperar um site inteiro, use a -mopção (espelho) e a URL da página inicial do site. Você também desejará usar --page-requisitespara garantir que todos os arquivos de suporte necessários para renderizar corretamente as páginas da Web também sejam baixados. A --convert-linksopção ajusta os links no arquivo recuperado para apontar para os destinos corretos em seu computador local, em vez de locais externos no site.

Uma rápida olhada no cURL

cURLé um projeto independente de código aberto. Ele está pré-instalado no Manjaro 21 e Fedora 36, ​​mas teve que ser instalado no Ubuntu 21.04.

Recomendado:  Você pode executar o software Windows em um M1 Mac?

Este é o comando para instalar cURLno Ubuntu.

sudo apt instalar curl

Instalando cURL no Ubuntu

Para baixar o mesmo arquivo que fizemos com wgete salvá-lo com o mesmo nome, precisamos usar este comando. Observe que a -oopção (saída) está em minúscula com cURL.

curl -o word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc

Baixando um arquivo com cURL e salvando-o com um novo nome

O arquivo é baixado para nós. Uma barra de progresso ASCII é exibida durante o download.

O arquivo é baixado e salvo com o nome especificado na linha de comando

Para se conectar a um servidor FTP e baixar um arquivo, use a -uopção (usuário) e forneça um par de nome de usuário e senha, como este:

curl -o test.png -u demo: senha ftp://test.rebex.net/pub/example/KeyGenerator.png

Baixando um arquivo de um servidor FTP com cURL

Isso baixa e renomeia um arquivo de um servidor FTP de teste.

Um download bem-sucedido de um servidor FTP com cURL

Não há melhor

É impossível responder “Qual devo usar” sem perguntar “O que você está tentando fazer?”

Depois de entender o que wgete cURLfazer, você perceberá que eles não estão competindo. Eles não atendem aos mesmos requisitos e não estão tentando fornecer a mesma funcionalidade.

Baixar páginas da web e sites é onde wgetreside a superioridade. Se é isso que você está fazendo, use wget. Para qualquer outra coisa – fazer upload, por exemplo, ou usar qualquer um dos vários outros protocolos – use cURL.