cURL vs. wget no Linux: Qual é a diferença?
Publicados: 2022-07-13 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.
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
O arquivo é recuperado e salvo em seu computador com seu nome original.
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
O arquivo recuperado é salvo com o nome escolhido.
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
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
O arquivo é baixado para nós. Uma barra de progresso ASCII é exibida durante o download.
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
Isso baixa e renomeia um arquivo de um servidor FTP de teste.
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
.