Learning Center
O sistema Linux

Como baixar arquivos com cURL

20 out. 2025
Emmanuel Oyibo
Emmanuel Oyibo

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.txt

Para 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.txt

Isso 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.txt

Aqui, 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.jpg

Isso 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].jpg

O 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.jpg

Essa 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.zip

2M 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.iso

Aqui, 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.jpg

Isso 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.com

A 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.jpg

Incluir 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.jpg

Substitua 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.jpg

Mais 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 --:--:-- --:--:-- --:--:--  2246

Essa 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.iso

Uma 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.log

Aqui, 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.