Se você perguntar a um grupo de usuários de 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?
Índice
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 cURL
que foi lançado em dezembro. Ambos operam na linha de comando do Linux. Ambos se conectam a servidores remotos e recuperam coisas para você.
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 wget
e cURL
.
wget e cURL comparados
O “w” no wget
comando é 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, cURL
funciona 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 cURL
seja 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.
cURL
permite 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. cURL
também permite baixar várias transferências em paralelo.
A sobreposição entre eles é que wget
ambos cURL
permitem 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 wget
tem 1.433 linhas. O
man
página cURL
tem impressionantes 5.296 linhas.
Uma rápida olhada no wget
Por wget
fazer 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 wget
comando 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
O arquivo é recuperado e salvo em seu computador com seu nome original.
Para salvar o arquivo com um novo nome, use a -O
opçã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 -O
opção ao recuperar sites. Se você fizer isso, todos os arquivos recuperados serão anexados em um.
Para recuperar um site inteiro, use a -m
opção (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 --convert-links
opçã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.
Este é o comando para instalar 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 -o
opçã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
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 -u
opçã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
Isso baixa e renomeia um arquivo de um servidor FTP de teste.
Não há melhor
É impossível responder “Qual devo usar” sem perguntar “O que você está tentando fazer?”
Depois de entender o que wget
e cURL
fazer, 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 wget
reside 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
.