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

Publicados: 2022-07-13
Laptop Linux mostrando um prompt bash
fatmawati achmad zaenuri/Shutterstock.com

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

Começou com conectividade

Pesquisadores do governo estavam começando a conectar diferentes redes já na década de 1960, dando origem a redes interconectadas . Mas o nascimento da internet como a conhecemos aconteceu em 1º de janeiro de 1983, quando o protocolo TCP/IP foi implementado. Este era o elo perdido. Permitiu que computadores e redes díspares se comunicassem usando um padrão comum.

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

Como funciona a Internet?
RELACIONADO Como funciona a Internet?

Esses dois marcos – a internet e a web – representam faces muito diferentes da conectividade. Mas eles compartilham muito da mesma funcionalidade também.

Conectividade significa exatamente isso. Você está se conectando a algum dispositivo remoto, como um servidor. E você está se conectando a ele porque há algo nele que você precisa ou deseja. Mas como você recupera esse recurso hospedado remotamente em 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 cURL que foi lançado em dezembro. Ambos operam na linha de comando do Linux. Ambos se conectam a servidores remotos e ambos recuperam coisas para você.

Mas este não é apenas o caso usual do Linux fornecer duas ou mais ferramentas para fazer o mesmo trabalho. Esses utilitários têm diferentes propósitos e diferentes especialidades. 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 faça sua cirurgia de revascularização do miocárdio, 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 imediatos um do outro.

O mesmo vale para wget e cURL .

Diferentes propósitos, diferentes recursos, algumas sobreposições

O “w” no comando wget é um indicador do propósito pretendido. Seu objetivo principal é baixar páginas da web ou até mesmo sites inteiros. Sua página man descreve-o como um utilitário para baixar arquivos da Web usando os protocolos HTTP, HTTPS e FTP.

Por outro lado, o cURL funciona com 26 protocolos, incluindo SCP, SFTP e SMSB, bem como HTTPS. Sua página man diz que é uma ferramenta para transferir dados de ou para um servidor. Ele não é adaptado para trabalhar com sites, especificamente. Destina-se a interagir com servidores remotos, usando qualquer um dos muitos protocolos de Internet que ele suporta.

Portanto, o wget é predominantemente centrado em sites, enquanto o cURL é algo que opera em um nível mais profundo, no nível da internet simples.

wget é capaz de recuperar páginas da Web e pode navegar recursivamente em estruturas de diretório 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 em seu computador local e não para suas contrapartes no servidor da Web remoto.

cURL permite interagir com o servidor remoto. Ele pode fazer upload de arquivos, bem como recuperá-los. cURL funciona com proxies SOCKS4 e SOCKS5 e HTTPS para o proxy. Ele suporta a descompactação automática de arquivos compactados nos formatos GZIP, BROTLI e ZSTD. cURL também permite baixar várias transferências em paralelo.

A sobreposição entre eles é que wget e cURL permitem recuperar páginas da Web e usar servidores FTP.

É apenas uma métrica aproximada, mas você pode obter alguma apreciação dos conjuntos de recursos relativos das duas ferramentas observando o comprimento de suas páginas de man . Em nossa máquina de teste, a página de manual do wget tem 1433 linhas. A página de man para cURL é de 5296 linhas.

Uma espiada rápida no wget

Como o wget faz parte do projeto GNU, você deve encontrá-lo pré-instalado em todas as distribuições Linux. Usá-lo é simples, especialmente para seus usos mais comuns: download de páginas da web ou arquivos.

Basta usar o comando wget com a URL para a 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 opção -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 para o nome fornecido na linha de comando

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

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

RELACIONADO: Como usar o wget, a ferramenta de download de linha de comando final

Uma espiada rápida no cURL

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

Este é o comando para instalar o cURL no Ubuntu.

 sudo apt instalar curl 

Instalando o cURL no Ubuntu

Para baixar o mesmo arquivo que fizemos com wget e salvá-lo com o mesmo nome, precisamos usar este comando. Observe que a opção -o (saída) é 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 opção -u (usuário) e forneça um par de nome de usuário e senha, assim:

 curl -o test.png -u demo:password 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

RELACIONADO: Como usar o curl para baixar arquivos da linha de comando do Linux

Não Há Melhor

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

Depois de entender o que o wget e o cURL fazem, você perceberá que eles não estão competindo. Eles não atendem ao mesmo requisito e não estão tentando fornecer a mesma funcionalidade.

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