Usando cURL para baixar arquivos remotos da linha de comando
Índice:
- Baixar arquivos de correspondência exata com curl -O
- Salvando um arquivo remoto com um nome diferente com curl -o
- Baixando vários arquivos simultaneamente com o curl
Para os fins deste passo a passo, vamos nos concentrar principalmente no download de arquivos dos dois protocolos HTTP e SFTP comumente encontrados, embora deva ser observado que o cURL oferece suporte a muitos outros protocolos. Embora o curl seja fácil de usar, é recomendável ter algum conhecimento da linha de comando.
Baixar arquivos de correspondência exata com curl -O
Usar o sinalizador -O maiúsculo com curl baixa o arquivo do servidor remoto enquanto mantém o nome exato do arquivo, a sintaxe básica para isso é a seguinte:
curl -O
Isso significa que, se o arquivo de URL especificado for denominado “sample.zip”, ele será baixado com o nome de arquivo “sample.zip” e, se o nome do arquivo for enorme e complicado, como “LongExampleFileNameForOSXDaily-v- 1-3-51-revision-515b12-readme.txt” no servidor remoto, ele será salvo com esse nome exato na máquina local. Nomes de arquivo mais longos geralmente são melhor tratados com o sinalizador -o em vez de -O, que abordaremos em breve.
Leitores regulares podem se lembrar de que usamos o comando curl -O ao explicar como extrair o conteúdo de áudio real de um arquivo de streaming m3u.
Iniciar qualquer download com curl mostra a porcentagem transferida, o tempo gasto no download, o tempo restante e a velocidade de transferência.
A captura de tela oferece uma representação melhor do que o exemplo colado abaixo, mas é mais ou menos assim:
% Total % Recebido % Xferd Velocidade Média Tempo Tempo Tempo Atual Dload Upload Total Gasto Velocidade Esquerda 100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k
Com a exibição da velocidade de transferência, você pode redirecionar a saída do curl para /dev/null e usá-lo para testar a velocidade da conexão com a Internet, mas o comando wget tem uma barra de transferência mais fácil de ler e seguir, portanto, o wget é melhor adequado para essa tarefa.
Salvando um arquivo remoto com um nome diferente com curl -o
O uso de um sinalizador -o em minúscula permitirá que você especifique um nome de arquivo diferente para o arquivo baixado do que como ele é nomeado no servidor remoto. Isso pode ser útil para reduzir nomes de arquivo longos ou apenas rotular algo para que seja mais fácil de encontrar por conta própria. A sintaxe geral seria:
curl -o
Por exemplo, se você quiser salvar um arquivo iOS IPSW que encontrou listado nos servidores da Apple sem ter o nome completo longo, você pode usar o seguinte:
curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ipsw
Isso fará o download do arquivo “iPhone5, 3_7.0.4_11B554a_Restore.ipsw”, mas com um nome mais curto como o mais significativo “iPhone5C-704.ipsw”.
Se preferir não salvar o arquivo no diretório de trabalho atual, especifique um caminho como parte do nome do arquivo da seguinte forma:
curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg
Baixando vários arquivos simultaneamente com o curl
cURL pode facilmente baixar vários arquivos ao mesmo tempo, tudo que você precisa fazer é especificar mais de um URL como:
curl -O
Para arquivos com nomes diferentes, ou hospedados em servidores diferentes, ou em caminhos de diretórios diferentes, use a URL completa, por exemplo:
curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/ Licenses/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt
Por outro lado, se os nomes dos arquivos a serem baixados estiverem usando nomenclatura incremental, você pode usar colchetes para especificar um intervalo de download, assim:
curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1.txt
Isso pegaria os arquivos fdl-1.1.txt, fd1-1.2.txt e fd1-1.3.txt ao mesmo tempo sem precisar especificar cada URL exclusivo. Claro que isso só funciona se os arquivos estiverem juntos no mesmo diretório e no mesmo domínio.
Autenticando com curl
Você também pode passar autenticação com cURL usando o sinalizador -u:
curl -u user:pass -O ftp://remote_url/file-to-download.zip
Lembre-se de que o histórico do bash armazenará a senha em texto simples ao usar -u com um nome de usuário e senha especificados, portanto, isso não é recomendado para a maioria das situações. Você pode contornar isso colocando um espaço na frente de 'curl'.Se você não usar a barra de espaço para prefixar o comando, provavelmente desejará esvaziar o histórico de comandos posteriormente por segurança.
Protocolos curl suportados e uso além de HTTP e FTP
Como mencionado anteriormente, o uso de cURL vai muito além de HTTP e FTP, pois a entrada da página do manual do curl menciona protocolos adicionais na descrição:
Além disso, você descobrirá que o curl também pode ser usado para solicitações PUT e POST, cookies, proxies, túneis, retomar downloads e até obter informações de cabeçalho HTTP ou alterar um agente do usuário (falsificação efetiva) sem a necessidade de usar um navegador da web dedicado.
Como a maioria dos utilitários de linha de comando, você pode aprender muito mais sobre curl chamando a página de manual apropriada com o comando 'man curl'.
