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

O Linux ondulação O comando pode fazer muito mais do que apenas baixar arquivos. Descobrir o que ondulação é capaz de, e quando você deve usá-lo em vez de wget.

curl vs. wget: Qual é a diferença?

As pessoas muitas vezes lutam para identificar os pontos fortes relativos do wget e ondulação comandos. Os comandos têm alguma sobreposição funcional. Cada um deles pode recuperar arquivos de locais remotos, mas é aí que termina a semelhança.

wget é uma ferramenta fantástica para baixar conteúdo e arquivos. Ele pode baixar arquivos, páginas da web e diretórios. Ele contém rotinas inteligentes para percorrer links em páginas da web e fazer download recursivamente de conteúdo em um site inteiro. É insuperável como gerenciador de download de linha de comando.

ondulação satisfaz uma necessidade totalmente diferente. Sim, ele pode recuperar arquivos, mas não pode navegar recursivamente em um site à procura de conteúdo para recuperar. o que ondulação na verdade, permite que você interaja com sistemas remotos fazendo solicitações a esses sistemas e recuperando e exibindo suas respostas para você. Essas respostas podem ser arquivos e conteúdo de página da web, mas também podem conter dados fornecidos por meio de um serviço da web ou API como resultado da “pergunta” feita pela solicitação curl.

E ondulação não se limita a sites. ondulação suporta mais de 20 protocolos, incluindo HTTP, HTTPS, SCP, SFTP e FTP. E, indiscutivelmente, devido ao seu manuseio superior de tubos Linux, ondulação pode ser mais facilmente integrado com outros comandos e scripts.

O autor de ondulação tem uma página da web que descreve as diferenças que ele vê entre ondulação e wget.

Instalando curl

Dos computadores usados ​​para pesquisar este artigo, o Fedora 31 e o Manjaro 18.1.0 tinham ondulação já instalado. ondulação teve que ser instalado no Ubuntu 18.04 LTS. No Ubuntu, execute este comando para instalá-lo:

sudo apt-get install curl

A versão curl

O --versão opção fazondulaçãorelatar sua versão. Ele também lista todos os protocolos compatíveis.

curl - versão

Recuperando uma página da web

Se apontarmos ondulação em uma página da web, ele irá recuperá-lo para nós.

curl //www.bbc.com

Mas sua ação padrão é despejá-lo na janela do terminal como código-fonte.

Cuidado: Se você não contar ondulação você quer algo armazenado como um arquivo, sempre despejá-lo na janela do terminal. Se o arquivo que está recuperando for um arquivo binário, o resultado pode ser imprevisível. O shell pode tentar interpretar alguns dos valores de byte no arquivo binário como caracteres de controle ou sequências de escape.

Salvando dados em um arquivo

Vamos dizer ao curl para redirecionar a saída para um arquivo:

curl //www.bbc.com> bbc.html

Desta vez, não vemos a informação recuperada, ela é enviada diretamente para o arquivo para nós. Como não há saída de janela de terminal para exibir, ondulação produz um conjunto de informações de progresso.

Isso não aconteceu no exemplo anterior porque as informações de progresso estariam espalhadas por todo o código-fonte da página da web, então ondulação suprimiu-o automaticamente.

Neste exemplo,ondulação detecta que a saída está sendo redirecionada para um arquivo e que é seguro gerar as informações de progresso.

As informações fornecidas são:

  • % Total: O valor total a ser recuperado.
  • % Recebido: A porcentagem e os valores reais dos dados recuperados até o momento.
  • % Xferd: A porcentagem e o envio real, se os dados estiverem sendo carregados.
  • Dload de velocidade média: A velocidade média de download.
  • Velocidade média de upload: A velocidade média de upload.
  • Tempo Total: A duração total estimada da transferência.
  • Tempo gasto: O tempo decorrido até o momento para esta transferência.
  • Tempo restante: O tempo estimado restante para a conclusão da transferência
  • Velocidade atual: A velocidade de transferência atual para esta transferência.

Porque redirecionamos a saída de ondulação para um arquivo, agora temos um arquivo chamado “bbc.html”.

Clicar duas vezes nesse arquivo abrirá seu navegador padrão para que ele exiba a página da web recuperada.

Observe que o endereço na barra de endereços do navegador é um arquivo local neste computador, não um site remoto.

Nós não temos que redirecionar a saída para criar um arquivo. Podemos criar um arquivo usando o -o (saída) opção, e dizendo ondulação para criar o arquivo. Aqui estamos usando o -o opção e fornecendo o nome do arquivo que desejamos criar “bbc.html.”

curl -o bbc.html //www.bbc.com

Usando uma barra de progresso para monitorar downloads

Para que as informações de download baseadas em texto sejam substituídas por uma barra de progresso simples, use o -# (barra de progresso) opção.

curl -x -o bbc.html //www.bbc.com

Reiniciando um download interrompido

É fácil reiniciar um download que foi encerrado ou interrompido. Vamos começar o download de um arquivo considerável. Usaremos a versão mais recente do Suporte de longo prazo do Ubuntu 18.04. Estamos usando o --resultado opção para especificar o nome do arquivo que desejamos salvá-lo em: “ubuntu180403.iso.”

curl --output ubuntu18043.iso //releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso

O download começa e segue seu caminho até a conclusão.

Se interrompermos forçosamente o download com Ctrl + C , voltamos ao prompt de comando e o download é abandonado.

Para reiniciar o download, use o -C (continue em) opção. Isso faz com que ondulação para reiniciar o download em um ponto especificado ou Deslocamento dentro do arquivo de destino. Se você usar um hífen - como o deslocamento, ondulação examinará a parte já baixada do arquivo e determinará o deslocamento correto a ser usado.

curl -C - --output ubuntu18043.iso //releases.ubuntu.com/18.04.3/ubuntu-18.04.3-desktop-amd64.iso

O download é reiniciado. ondulação relata o deslocamento em que está reiniciando.

Recuperando cabeçalhos HTTP

Com o -EU (cabeça), você pode recuperar apenas os cabeçalhos HTTP. Isso é o mesmo que enviar o comando HTTP HEAD para um servidor da web.

curl -I www.twitter.com

Este comando recupera apenas informações; ele não baixa nenhuma página da web ou arquivos.

Baixando vários URLs

Usando xargs podemos baixar vários URLs de uma vez. Talvez queiramos baixar uma série de páginas da web que constituem um único artigo ou tutorial.

Copie esses URLs para um editor e salve-os em um arquivo chamado “urls-to-download.txt”. Podemos usar xargs para tratar o conteúdo de cada linha do arquivo de texto como um parâmetro que irá alimentar ondulação, por sua vez.

//tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#0 //tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#1 //tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#2 //tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#3 //tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#4 //tutorials.ubuntu.com/tutorial/tutorial-create-a-usb-stick-on-ubuntu#5

Este é o comando que precisamos usar para ter xargs passar esses URLs para ondulação um por vez:

xargs -n 1 curl -O <urls-to-download.txt

Observe que este comando usa o -O (arquivo remoto) comando de saída, que usa um “O” maiúsculo. Esta opção causa ondulação para salvar o arquivo recuperado com o mesmo nome do arquivo no servidor remoto.

O -n 1 opção diz xargs para tratar cada linha do arquivo de texto como um único parâmetro.

Ao executar o comando, você verá vários downloads começarem e terminarem, um após o outro.

Verificar no navegador de arquivos mostra que vários arquivos foram baixados. Cada um tem o nome que tinha no servidor remoto.

RELACIONADO:Como usar o comando xargs no Linux

Baixando arquivos de um servidor FTP

Usando ondulação com um servidor de protocolo de transferência de arquivos (FTP) é fácil, mesmo se você tiver que autenticar com um nome de usuário e senha. Para passar um nome de usuário e senha com ondulação use o -você (usuário) e digite o nome de usuário, dois pontos “:” e a senha. Não coloque um espaço antes ou depois do cólon.

Este é um servidor FTP gratuito para teste hospedado pela Rebex. O site FTP de teste tem um nome de usuário predefinido de “demo” e a senha é “senha”. Não use este tipo de nome de usuário e senha fracos em uma produção ou servidor FTP “real”.

curl -u demo: senha ftp://test.rebex.net

ondulação descobre que o estamos apontando para um servidor FTP e retorna uma lista dos arquivos que estão presentes no servidor.

O único arquivo neste servidor é um arquivo “readme.txt”, de 403 bytes de comprimento. Vamos recuperá-lo. Use o mesmo comando de um momento atrás, com o nome do arquivo anexado a ele:

curl -u demo: senha ftp://test.rebex.net/readme.txt

O arquivo é recuperado e ondulação exibe seu conteúdo na janela do terminal.

Em quase todos os casos, será mais conveniente ter o arquivo recuperado salvo em disco para nós, em vez de exibido na janela do terminal. Mais uma vez, podemos usar o -O (arquivo remoto) comando de saída para que o arquivo seja salvo no disco, com o mesmo nome de arquivo que possui no servidor remoto.

curl -O -u demo: senha ftp://test.rebex.net/readme.txt

O arquivo é recuperado e salvo no disco. Podemos usar ls para verificar os detalhes do arquivo. Ele tem o mesmo nome do arquivo no servidor FTP e o mesmo comprimento, 403 bytes.

ls -hl readme.txt

RELACIONADO:Como usar o comando FTP no Linux

Enviando Parâmetros para Servidores Remotos

Alguns servidores remotos aceitarão parâmetros em solicitações enviadas a eles. Os parâmetros podem ser usados ​​para formatar os dados retornados, por exemplo, ou podem ser usados ​​para selecionar os dados exatos que o usuário deseja recuperar. Muitas vezes é possível interagir com interfaces de programação de aplicativos (APIs) da web usando ondulação.

Como um exemplo simples, o site ipify tem uma API que pode ser consultada para verificar seu endereço IP externo.

curl //api.ipify.org

Adicionando o formato parâmetro para o comando, com o valor de “json” podemos novamente solicitar nosso endereço IP externo, mas desta vez os dados retornados serão codificados no formato JSON.

curl //api.ipify.org?format=json

Aqui está outro exemplo que usa uma API do Google. Ele retorna um objeto JSON que descreve um livro. O parâmetro que você deve fornecer é o número do International Standard Book Number (ISBN) de um livro. Você pode encontrá-los na contracapa da maioria dos livros, geralmente abaixo de um código de barras. O parâmetro que usaremos aqui é “0131103628”.

curl //www.googleapis.com/books/v1/volumes?q=isbn:0131103628

Os dados retornados são abrangentes:

Às vezes curl, às vezes wget

Se eu quisesse baixar conteúdo de um site e ter a estrutura em árvore do site pesquisada recursivamente por esse conteúdo, eu usaria wget.

Se eu quisesse interagir com um servidor remoto ou API, e possivelmente baixar alguns arquivos ou páginas da web, eu usaria ondulação. Especialmente se o protocolo fosse um dos muitos não suportados por wget.


$config[zx-auto] not found$config[zx-overlay] not found