Cómo descargar archivos con cURL
La descarga de contenido desde servidores remotos es una tarea habitual tanto para administradores como para desarrolladores. Aunque existen numerosas herramientas para este trabajo, cURL destaca por su adaptabilidad y simplicidad. Es una utilidad de línea de comandos que admite protocolos como HTTP, HTTPS, FTP y SFTP, lo que la hace esencial para la automatización, los scripts y las transferencias de archivos eficientes.
Puedes ejecutar cURL directamente en tu computadora para obtener archivos. También puedes incluirlo en scripts para optimizar el manejo de datos, reduciendo así el esfuerzo manual y los errores. Esta guía muestra varias formas de descargar archivos con cURL. Siguiendo estos ejemplos, aprenderás a manejar redirecciones, renombrar archivos y monitorear el progreso de las descargas. Al final, deberías poder usar cURL con confianza para tareas en servidores o entornos en la nube.
Comando básico de cURL para descargar archivos Copiar enlace
El comando curl funciona con varios protocolos, pero se utiliza principalmente con HTTP y HTTPS para conectarse a servidores web. También puede interactuar con servidores FTP o SFTP cuando sea necesario.
Por defecto, cURL recupera un recurso de una URL especificada y lo muestra en tu terminal (salida estándar). Esto es útil para previsualizar el contenido de archivos sin guardarlos, especialmente si se trata de archivos de texto pequeños.
Ejemplo: Para ver el contenido de un archivo de texto alojado en https://example.com/file.txt, ejecuta:
curl https://example.com/file.txtPara documentos de texto cortos, este enfoque es adecuado. Sin embargo, los archivos grandes o binarios pueden llenar la pantalla con datos ilegibles, por lo que normalmente querrás guardarlos en su lugar.
Guardar archivos remotos Copiar enlace
A menudo, el objetivo principal es almacenar el archivo descargado en tu máquina local en lugar de verlo en la terminal. cURL simplifica esto con la opción -O (O mayúscula), que conserva el nombre original del archivo remoto.
curl -O https://example.com/file.txtEsto descarga file.txt y lo guarda en el directorio actual con el mismo nombre. Este método es rápido y mantiene el nombre del archivo existente, lo cual puede ser útil si el nombre tiene relevancia.
Elegir un nombre de archivo diferente Copiar enlace
A veces es importante renombrar el archivo descargado para evitar conflictos o crear un esquema de nombres claro. En este caso, utiliza la opción -o (o minúscula):
curl -o myfile.txt https://example.com/file.txtAquí, cURL descarga el archivo remoto file.txt pero lo guarda localmente como miarchivo.txt. Esto ayuda a mantener los archivos organizados o evita sobrescrituras accidentales. Es especialmente útil en scripts que requieren nombres de archivo descriptivos.
Seguir redirecciones Copiar enlace
Cuando se solicita un archivo, los servidores pueden instruir a tu cliente para que vaya a una URL diferente. Comprender y manejar las redirecciones es fundamental para realizar descargas exitosas.
Por qué las redirecciones son importantes Copiar enlace
Las redirecciones se usan comúnmente en sitios web reorganizados, archivos movidos o enlaces espejo. Sin soporte para redirecciones, cURL se detiene después de recibir una respuesta de “movido” y no obtendrás el archivo.
Usar -L o --location Copiar enlace
Para indicarle a cURL que siga una cadena de redirecciones hasta llegar al destino final, utiliza -L (o --location):
curl -L -O https://example.com/redirected-file.jpgEsto permite que cURL obtenga el archivo correcto incluso si la URL original apunta a otro lugar. Si omites -L, cURL simplemente mostrará el mensaje de redirección y finalizará, lo que puede causar problemas en sitios con múltiples redirecciones.
Descargar múltiples archivos Copiar enlace
cURL también puede manejar múltiples descargas a la vez, evitando que ejecutes el comando repetidamente.
Usar llaves y patrones Copiar enlace
Si los nombres de los archivos comparten un patrón, las llaves {} te permiten especificar cada nombre de manera concisa:
curl -O https://example.com/files/{file1.jpg,file2.jpg,file3.jpg}cURL descarga cada archivo en secuencia, lo que resulta práctico para flujos de trabajo automatizados.
Usar rangos Copiar enlace
Para una serie de archivos numerados o etiquetados alfabéticamente, especifica un rango entre corchetes:
curl -O https://example.com/files/file[1-5].jpgcURL itera automáticamente por los archivos file1.jpg hasta file5.jpg. Esto es ideal para secuencias de archivos con nombres consistentes.
Encadenar múltiples descargas Copiar enlace
Si tienes diferentes URLs para cada archivo, puedes encadenarlas juntas:
curl -O https://example1.com/file1.jpg -O https://example2.com/file2.jpgEste método descarga file1.jpg del primer sitio y file2.jpg del segundo, sin necesidad de ejecutar múltiples comandos.
Límite de velocidad y tiempos de espera Copiar enlace
En ciertas situaciones, puede que quieras controlar la velocidad de descarga o evitar que cURL espere demasiado por un servidor que no responde.
Control de ancho de banda Copiar enlace
Para evitar saturar tu red o simular condiciones lentas, limita la velocidad de descarga con --limit-rate:
curl --limit-rate 2M -O https://example.com/bigfile.zip2M significa 2 megabytes por segundo. También puedes usar K para kilobytes o G para gigabytes.
Tiempos de espera Copiar enlace
Si un servidor es demasiado lento, puede que quieras que cURL se detenga después de cierto tiempo. La opción --max-time hace precisamente eso:
curl --max-time 60 -O https://example.com/file.isoAquí, cURL se detiene después de 60 segundos, lo cual es útil en scripts que necesitan fallar rápidamente cuando hay problemas.
Modo silencioso y detallado Copiar enlace
cURL puede ajustar su salida para mostrar información mínima o detalles extensos.
Descargas silenciosas Copiar enlace
Para tareas automáticas o cron jobs donde no necesitas ver barras de progreso, incluye -s (o --silent):
curl -s -O https://example.com/file.jpgEsto oculta el progreso y los errores, lo cual es útil para registros más limpios. Sin embargo, la depuración es más difícil si ocurre un error silencioso.
Modo detallado Copiar enlace
En contraste, -v (o --verbose) muestra información detallada sobre las solicitudes y respuestas:
curl -v https://example.comLa salida detallada es invaluable para depurar problemas como certificados SSL inválidos o redirecciones incorrectas.
Autenticación y seguridad Copiar enlace
Algunas descargas requieren credenciales o una conexión segura.
Autenticación HTTP/FTP Copiar enlace
Cuando un servidor requiere un nombre de usuario y contraseña, usa -u:
curl -u username:password -O https://example.com/protected/file.jpgIncrustar credenciales directamente puede ser riesgoso, ya que podrían aparecer en registros o listas de procesos. Considera usar variables de entorno o archivos .netrc para un manejo más seguro.
HTTPS y certificados Copiar enlace
Por defecto, cURL verifica los certificados SSL. Si el certificado no es válido, cURL bloquea la transferencia. Puedes omitir esta verificación con -k o --insecure, aunque esto implica riesgos de seguridad. Siempre que sea posible, usa una autoridad certificadora de confianza para mantener las conexiones autenticadas.
Uso de un proxy Copiar enlace
En algunos entornos, el tráfico debe pasar por un servidor proxy antes de llegar al destino.
Descargar a través de un proxy Copiar enlace
Usa la opción -x o --proxy para especificar el proxy:
curl -x http://proxy_host:proxy_port -O https://example.com/file.jpgReemplaza proxy_host y proxy_port con los datos correspondientes. cURL envía la solicitud al proxy, que luego recupera el archivo por ti.
Autenticación del proxy Copiar enlace
Si tu proxy requiere credenciales, inclúyelas en la URL:
curl -x https://proxy.example.com:8080 -U myuser:mypassword -O https://example.com/file.jpgNuevamente, almacenar datos sensibles en texto plano puede ser peligroso, por lo que las variables de entorno o los archivos de configuración son opciones más seguras.
Monitorear el progreso de descarga Copiar enlace
El seguimiento del progreso de la descarga es crucial para archivos grandes o conexiones lentas.
Medidor de progreso predeterminado Copiar enlace
Por defecto, cURL muestra un medidor de progreso que incluye el tamaño total, la velocidad de transferencia y el tiempo estimado de finalización. Por ejemplo:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1256 100 1256 0 0 2243 0 --:--:-- --:--:-- --:--:-- 2246Esta salida te ayuda a estimar cuánto falta y si la velocidad de transferencia es adecuada.
Barra de progreso compacta Copiar enlace
Si prefieres menos detalles, agrega -#:
curl -# -O https://example.com/largefile.isoUna barra más simple muestra el progreso general en porcentaje. Es más fácil de leer pero no incluye estadísticas detalladas como la velocidad actual.
Registrar el progreso en scripts Copiar enlace
Cuando uses cURL dentro de scripts, quizás quieras registrar los datos del progreso. Normalmente, cURL envía esta información a stderr, por lo que puedes redirigirla:
curl -# -O https://example.com/largefile.iso 2>progress.logAquí, progress.log contiene las actualizaciones de estado que puedes analizar o guardar para revisarlas más tarde.
Conclusión Copiar enlace
cURL destaca como una herramienta flexible de línea de comandos para descargar archivos a través de múltiples protocolos y entornos. Ya sea que necesites manejar redirecciones complejas, renombrar archivos al vuelo o limitar el ancho de banda, cURL te ofrece las opciones adecuadas. Al dominar sus principales parámetros y modos, podrás integrar cURL sin problemas en tu flujo de trabajo diario para scripting, automatización y transferencias de archivos más eficientes.