Como baixar arquivos com cURL
Baixar conteúdo de servidores remotos é uma tarefa comum tanto para administradores quanto para desenvolvedores. Embora existam diversas ferramentas para essa tarefa, o cURL se destaca por sua flexibilidade e simplicidade. Trata-se de uma ferramenta de linha de comando que oferece suporte a protocolos como HTTP, HTTPS, FTP e SFTP, tornando-se essencial para automação, scripts e transferências de arquivos eficientes.
Você pode executar o cURL diretamente no seu computador para obter arquivos. Também é possível incluí-lo em scripts para otimizar o processamento de dados, reduzindo o esforço manual e os erros. Este guia demonstra várias maneiras de baixar arquivos com o cURL. Seguindo esses exemplos, você aprenderá a lidar com redirecionamentos, renomear arquivos e monitorar o progresso dos downloads. Ao final, você será capaz de usar o cURL com confiança para tarefas em servidores ou ambientes em nuvem.
Comando básico do cURL para baixar arquivos Copiar link
O comando curl funciona com vários protocolos, mas é usado principalmente com HTTP e HTTPS para se conectar a servidores web. Quando necessário, também pode interagir com servidores FTP ou SFTP.
Por padrão, o cURL recupera um recurso de uma URL especificada e o exibe no terminal (saída padrão). Isso é útil para visualizar o conteúdo de um arquivo sem salvá-lo, especialmente se for um arquivo de texto pequeno.
Exemplo: para visualizar o conteúdo de um arquivo de texto hospedado em https://example.com/file.txt, execute:
curl https://example.com/file.txtPara documentos curtos, essa abordagem funciona bem. No entanto, arquivos grandes ou binários podem encher a tela com dados ilegíveis, portanto, geralmente você vai querer salvá-los.
Salvar arquivos remotos Copiar link
Na maioria das vezes, o objetivo principal é armazenar o arquivo baixado localmente em vez de exibi-lo no terminal. O cURL simplifica isso com a opção -O (O maiúsculo), que mantém o nome original do arquivo remoto.
curl -O https://example.com/file.txtIsso baixa file.txt e o salva no diretório atual com o mesmo nome. Esse método é rápido e mantém o nome original, o que pode ser útil se o nome do arquivo tiver relevância.
Escolher um nome de arquivo diferente Copiar link
Às vezes, é importante renomear o arquivo baixado para evitar conflitos ou criar um padrão de nomenclatura claro. Nesse caso, use a opção -o (o minúsculo):
curl -o meu_arquivo.txt https://example.com/file.txtAqui, o cURL baixa o arquivo remoto file.txt, mas o salva localmente como meu_arquivo.txt. Isso ajuda a manter os arquivos organizados e evita sobrescritas acidentais. É especialmente útil em scripts que exigem nomes de arquivo descritivos.
Seguir redirecionamentos Copiar link
Ao solicitar um arquivo, os servidores podem instruir seu cliente a ir para outra URL. Entender e gerenciar redirecionamentos é essencial para concluir downloads com sucesso.
Por que redirecionamentos são importantes Copiar link
Redirecionamentos são comuns em sites reorganizados, arquivos movidos ou links espelhados. Sem suporte a redirecionamentos, o cURL para após receber uma resposta “movido”, e você não obterá o arquivo.
Usar -L ou --location Copiar link
Para instruir o cURL a seguir uma cadeia de redirecionamentos até o destino final, use -L (ou --location):
curl -L -O https://example.com/redirected-file.jpgIsso permite que o cURL obtenha o arquivo correto, mesmo que a URL original aponte para outro local. Se você omitir -L, o cURL exibirá apenas a mensagem de redirecionamento e encerrará, o que pode causar problemas em sites com múltiplos redirecionamentos.
Baixar múltiplos arquivos Copiar link
O cURL também pode lidar com múltiplos downloads simultaneamente, evitando a necessidade de executar o comando repetidamente.
Usar chaves e padrões Copiar link
Se os nomes dos arquivos compartilham um padrão, você pode usar chaves {} para especificar cada nome de forma concisa:
curl -O https://example.com/files/{file1.jpg,file2.jpg,file3.jpg}O cURL baixa cada arquivo em sequência, o que é útil para fluxos de trabalho automatizados.
Usar intervalos Copiar link
Para uma série de arquivos numerados ou rotulados alfabeticamente, especifique um intervalo entre colchetes:
curl -O https://example.com/files/file[1-5].jpgO cURL percorre automaticamente os arquivos file1.jpg até file5.jpg. Isso é ideal para sequências de arquivos com nomes consistentes.
Encadear múltiplos downloads Copiar link
Se você tiver URLs diferentes para cada arquivo, pode encadeá-las:
curl -O https://example1.com/file1.jpg -O https://example2.com/file2.jpgEssa abordagem baixa file1.jpg do primeiro site e file2.jpg do segundo, sem precisar executar vários comandos.
Limitação de velocidade e tempo limite Copiar link
Em certas situações, pode ser necessário controlar a velocidade de download ou evitar que o cURL espere demais por um servidor sem resposta.
Controle de largura de banda Copiar link
Para evitar sobrecarregar sua rede ou simular conexões lentas, limite a taxa de download com --limit-rate:
curl --limit-rate 2M -O https://example.com/bigfile.zip2M significa 2 megabytes por segundo. Você também pode usar K para kilobytes ou G para gigabytes.
Tempo limite Copiar link
Se um servidor estiver muito lento, você pode configurar o cURL para parar após um determinado tempo. A opção --max-time faz exatamente isso:
curl --max-time 60 -O https://example.com/file.isoAqui, o cURL interrompe a operação após 60 segundos, o que é útil em scripts que precisam falhar rapidamente.
Modo silencioso e detalhado Copiar link
O cURL pode ajustar sua saída para mostrar o mínimo de informações ou detalhes completos.
Downloads silenciosos Copiar link
Para tarefas automatizadas ou cron jobs em que não há necessidade de barras de progresso, inclua -s (ou --silent):
curl -s -O https://example.com/file.jpgIsso oculta o progresso e os erros, tornando os logs mais limpos. No entanto, a depuração se torna mais difícil se ocorrer um erro silencioso.
Modo detalhado Copiar link
Por outro lado, -v (ou --verbose) exibe informações detalhadas sobre solicitações e respostas:
curl -v https://example.comA saída detalhada é valiosa para depurar problemas como certificados SSL inválidos ou redirecionamentos incorretos.
Autenticação e segurança Copiar link
Alguns downloads exigem credenciais ou uma conexão segura.
Autenticação HTTP/FTP Copiar link
Quando um servidor requer nome de usuário e senha, use -u:
curl -u username:password -O https://example.com/protected/file.jpgIncluir credenciais diretamente pode ser arriscado, pois elas podem aparecer em logs ou listas de processos. Considere usar variáveis de ambiente ou arquivos .netrc para um gerenciamento mais seguro.
HTTPS e certificados Copiar link
Por padrão, o cURL verifica certificados SSL. Se o certificado for inválido, o cURL bloqueia a transferência. Você pode ignorar essa verificação com -k ou --insecure, mas isso traz riscos de segurança. Sempre que possível, use uma autoridade certificadora confiável para garantir conexões autenticadas.
Usar um proxy Copiar link
Em alguns ambientes, o tráfego deve passar por um servidor proxy antes de chegar ao destino.
Baixar através de um proxy Copiar link
Use a opção -x ou --proxy para especificar o proxy:
curl -x http://proxy_host:proxy_port -O https://example.com/file.jpgSubstitua proxy_host e proxy_port pelos valores correspondentes. O cURL encaminha a solicitação ao proxy, que então recupera o arquivo para você.
Autenticação de proxy Copiar link
Se o seu proxy exigir credenciais, inclua-as na URL:
curl -x https://proxy.example.com:8080 -U myuser:mypassword -O https://example.com/file.jpgMais uma vez, armazenar dados sensíveis em texto simples é perigoso. Prefira usar variáveis de ambiente ou arquivos de configuração.
Monitorar o progresso do download Copiar link
Acompanhar o progresso do download é essencial para arquivos grandes ou conexões lentas.
Medidor de progresso padrão Copiar link
Por padrão, o cURL exibe um medidor de progresso com tamanho total, velocidade de transferência e tempo estimado para conclusão. Por exemplo:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1256 100 1256 0 0 2243 0 --:--:-- --:--:-- --:--:-- 2246Essa saída ajuda a avaliar quanto falta e se a velocidade de transferência está adequada.
Barra de progresso compacta Copiar link
Se preferir menos detalhes, adicione -#:
curl -# -O https://example.com/largefile.isoUma barra mais simples mostra o progresso geral em porcentagem. É mais agradável visualmente, mas não exibe estatísticas detalhadas como a velocidade atual.
Registrar progresso em scripts Copiar link
Ao usar o cURL em scripts, você pode querer registrar as informações de progresso. Normalmente, o cURL envia esses dados para stderr, então você pode redirecioná-los:
curl -# -O https://example.com/largefile.iso 2>progress.logAqui, progress.log contém as atualizações de status, que podem ser analisadas ou armazenadas para revisão posterior.
Conclusão Copiar link
O cURL se destaca como uma ferramenta de linha de comando flexível para baixar arquivos em vários protocolos e ambientes. Seja para lidar com redirecionamentos complexos, renomear arquivos dinamicamente ou limitar a largura de banda, o cURL tem tudo o que você precisa. Ao dominar suas principais opções e modos, você poderá integrá-lo perfeitamente ao seu fluxo de trabalho diário para scripting, automação e transferências de arquivos mais eficientes.