Cómo usar curl para descargar archivos desde la línea de comandos de Linux

El Linux curl puede hacer mucho más que descargar archivos. Averigüe qué curl es capaz de hacerlo, y cuándo debe usarlo en lugar de wget.

curl vs. wget : ¿Cuál es la diferencia?

Las personas a menudo luchan por identificar las fortalezas relativas de la wget y curl Comandos. Los comandos tienen cierta superposición funcional. Cada uno de ellos puede recuperar archivos de ubicaciones remotas, pero ahí es donde termina la similitud.

wget es un fantástica herramienta para descargar contenido y archivos. Puede descargar archivos, páginas web y directorios. Contiene rutinas inteligentes para atravesar enlaces en páginas web y descargar contenido recursivamente en todo un sitio web. Es insuperable como gestor de descargas de línea de comandos.

curl Satisface una necesidad completamente diferente. Sí, puede recuperar archivos, pero no puede navegar recursivamente por un sitio web en busca de contenido para recuperar. Qué curl en realidad, lo que hace es permitirle interactuar con sistemas remotos haciendo solicitudes a esos sistemas y recuperando y mostrando sus respuestas a usted. Esas respuestas pueden ser contenido y archivos de páginas web, pero también pueden contener datos proporcionados a través de un servicio web o API como resultado de la “pregunta” formulada por la solicitud de curl.

Y curl no se limita a los sitios web. curl admite más de 20 protocolos, incluidos HTTP, HTTPS, SCP, SFTP y FTP. Y podría decirse que, debido a su manejo superior de las tuberías de Linux, curl se puede integrar más fácilmente con otros comandos y scripts.

El autor de curl tiene una página web que describe las diferencias que ve entre curl y wget.

Instalación de curl

De las computadoras utilizadas para investigar este artículo, Fedora 31 y Manjaro 18.1.0 tenían curl ya instalado. curl tenía que ser instalado en Ubuntu 18.04 LTS. En Ubuntu, ejecute este comando para instalarlo:

sudo apt-get install curl

La versión curl

El --version opción hace curlinformar de su versión. También enumera todos los protocolos que admite.

curl --version

Recuperación de una página Web

Si apuntamos curl en una página web, lo recuperará por nosotros.

curl https://www.bbc.com

Pero su acción predeterminada es volcarlo a la ventana del terminal como código fuente.

Cuidado: Si no lo dices curl desea que algo se almacene como un archivo, lo hará siempre volcarlo a la ventana del terminal. Si el archivo que está recuperando es un archivo binario, el resultado puede ser impredecible. El shell puede intentar interpretar algunos de los valores de byte en el archivo binario como caracteres de control o secuencias de escape.

Guardar datos en un archivo

Digamos a curl que redirija la salida a un archivo:

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

Esta vez no vemos la información recuperada, se envía directamente al archivo por nosotros. Debido a que no hay salida de ventana de terminal para mostrar, curl produce un conjunto de información sobre el progreso.

No lo hizo en el ejemplo anterior porque la información de progreso se habría dispersado por todo el código fuente de la página web, por lo que curl lo suprimió automáticamente.

En este ejemplo, curl detecta que la salida se está redirigiendo a un archivo y que es seguro generar la información de progreso.

La información proporcionada es:

  • % Total: El importe total que se recuperará.
  • % Recibido: El porcentaje y los valores reales de los datos recuperados hasta el momento.
  • % Xferd: El porcentaje y el envío real, si se están cargando datos.
  • Velocidad media de carga: La velocidad media de descarga.
  • Carga de velocidad promedio: La velocidad media de carga.
  • Tiempo Total: La duración total estimada de la transferencia.
  • Tiempo dedicado: El tiempo transcurrido hasta el momento para este traslado.
  • Tiempo restante: El tiempo estimado que queda para que se complete la transferencia
  • Velocidad actual: La velocidad de transferencia actual para esta transferencia.

Porque redirigimos la salida desde curl a un archivo, ahora tenemos un archivo llamado “bbc.html”.

Al hacer doble clic en ese archivo, se abrirá el navegador predeterminado para que muestre la página web recuperada.

Tenga en cuenta que la dirección de la barra de direcciones del explorador es un archivo local en este equipo, no un sitio web remoto.

No tenemos que redirigir el resultado a CREcomí un archivo. Podemos crear un archivo utilizando el -o (salida) opción, y decir curl para crear el archivo. Aquí estamos usando el -o y proporcionando el nombre del archivo que deseamos crear “bbc.html”.

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

Uso de una barra de progreso para supervisar las descargas

Para que la información de descarga basada en texto se reemplace por una barra de progreso simple, utilice el cuadro -# (barra de progreso) opción.

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

Reiniciar una descarga interrumpida

Es fácil reiniciar una descarga que ha sido terminada o interrumpida. Comencemos una descarga de un archivo considerable. Usaremos la última versión de soporte a largo plazo de Ubuntu 18.04. Estamos usando el --output para especificar el nombre del archivo en el que deseamos guardarlo: “ubuntu180403.iso”.

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

La descarga comienza y se abre camino hacia su finalización.

Si interrumpimos a la fuerza la descarga con Ctrl+C , volvemos al símbolo del sistema y se abandona la descarga.

Te puede ser útil:  Cómo hacer videollamadas con Facebook Messenger

Para reiniciar la descarga, utilice el comando -C (continuar en) opción. Esto causa curl Para reiniciar la descarga en un punto especificado o compensar dentro del archivo de destino. Si utiliza un guión - como compensación, curl mirará la parte ya descargada del archivo y determinará el desplazamiento correcto para usar por sí mismo.

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

Se reinicia la descarga. curl informa del desplazamiento en el que se está reiniciando.

Recuperación de encabezados HTTP

Con el -I (head) opción, puede recuperar los encabezados HTTP solamente. Esto es lo mismo que enviar el Comando HTTP HEAD a un servidor web.

curl -I www.twitter.com

Este comando sólo recupera información; no descarga ninguna página web o archivo.

Descarga de varias URL

Usando xargs podemos descargar múltiples Direcciones URL inmediatamente. Quizás queramos descargar una serie de páginas web que conforman un solo artículo o tutorial.

Copie estas URL en un editor y guárdelas en un archivo llamado “urls-to-download.txt”. Podemos usar xargs Para tratar el contenido de cada línea del archivo de texto como parámetro al que se alimentará curla su vez.

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

Este es el comando que necesitamos usar para tener xargs Pasar estas URL a curl uno a la vez:

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

Tenga en cuenta que este comando utiliza el -O Comando de salida (archivo remoto), que utiliza una “O” mayúscula. Esta opción provoca curl para guardar el archivo recuperado con el mismo nombre que el archivo tiene en el servidor remoto.

El -n 1 opción indica xargs para tratar cada línea del archivo de texto como un único parámetro.

Cuando ejecute el comando, verá que varias descargas comienzan y terminan, una tras otra.

Al registrar el explorador de archivos, se muestran los múltiples archivos que se han descargado. Cada uno lleva el nombre que tenía en el servidor remoto.

Descarga de archivos desde un servidor FTP

Usando curl con un Protocolo de transferencia de archivos (FTP) es fácil, incluso si tiene que autenticarse con un nombre de usuario y contraseña. Para pasar un nombre de usuario y una contraseña con curl utilice el -u (usuario) y escriba el nombre de usuario, dos puntos “:” y la contraseña. No pongas un espacio antes o después del colon.

Este es un servidor FTP gratuito para pruebas alojado por Rebex. El sitio FTP de prueba tiene un nombre de usuario preespuestedo de “demo” y la contraseña es “password”. No utilice este tipo de nombre de usuario y contraseña débiles en un servidor FTP de producción o “real”.

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

curl descubre que lo estamos apuntando a un servidor FTP y devuelve una lista de los archivos que están presentes en el servidor.

El único archivo en este servidor es un archivo “readme.txt”, de 403 bytes de longitud. Vamos a recuperarlo. Use el mismo comando que hace un momento, con el nombre de archivo adjunto:

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

El archivo se recupera y curl muestra su contenido en la ventana del terminal.

En casi todos los casos, va a ser más conveniente tener el archivo recuperado guardado en el disco para nosotros, en lugar de mostrarlo en la ventana del terminal. Una vez más podemos utilizar el -O (archivo remoto) comando de salida para tener el archivo guardado en el disco, con el mismo nombre de archivo que tiene en el servidor remoto.

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

El archivo se recupera y se guarda en el disco. Podemos usar ls para comprobar los detalles del archivo. Tiene el mismo nombre que el archivo en el servidor FTP, y tiene la misma longitud, 403 bytes.

ls -hl readme.txt

Envío de parámetros a servidores remotos

SomLos servidores remotos aceptarán parámetros en las solicitudes que se les envíen. Los parámetros se pueden usar para dar formato a los datos devueltos, por ejemplo, o se pueden usar para seleccionar los datos exactos que el usuario desea recuperar. A menudo es posible interactuar con la web interfaces de programación de aplicaciones (API) mediante curl.

Como ejemplo simple, el ipify el sitio web tiene una API que se puede consultar para determinar su dirección IP externa.

curl https://api.ipify.org

Añadiendo el format parámetro al comando, con el valor de “json” podemos volver a solicitar nuestra dirección IP externa, pero esta vez los datos devueltos se codificarán en el Formato JSON.

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

Aquí hay otro ejemplo que hace uso de una API de Google. Devuelve un objeto JSON que describe un libro. El parámetro que debe proporcionar es el Número de libro estándar internacional (ISBN) número de un libro. Puede encontrarlos en la contraportada de la mayoría de los libros, generalmente debajo de un código de barras. El parámetro que usaremos aquí es “0131103628”.

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

Los datos devueltos son completos:

A veces rizar, a veces wget

Si quisiera descargar contenido de un sitio web y hacer que la estructura de árbol del sitio web se busque recursivamente para ese contenido, usaría wget.

Si quisiera interactuar con un servidor remoto o API, y posiblemente descargar algunos archivos o páginas web, usaría curl. Especialmente si el protocolo era uno de los muchos no soportados por wget.

¿Qué tan útil te resultó el artículo?

¡Haz click en una estrella para valorar!

Valoración media / 5. Votos totales:

¡No hay votos hasta ahora! Sé el primero en valorar este artículo.

Utilizamos cookies para personalizar el contenido y los anuncios, para ofrecer funciones de redes sociales y para analizar nuestro tráfico. También compartimos información sobre su uso de nuestro sitio con nuestros socios de redes sociales, publicidad y análisis. View more
Cookies settings
Aceptar
Política de privacidad y cookies
Privacy & Cookies policy
Cookie name Active
El presente Política de Privacidad establece los términos en que Alternativa.click usa y protege la información que es proporcionada por sus usuarios al momento de utilizar su sitio web. Esta compañía está comprometida con la seguridad de los datos de sus usuarios. Cuando le pedimos llenar los campos de información personal con la cual usted pueda ser identificado, lo hacemos asegurando que sólo se empleará de acuerdo con los términos de este documento. Sin embargo esta Política de Privacidad puede cambiar con el tiempo o ser actualizada por lo que le recomendamos y enfatizamos revisar continuamente esta página para asegurarse que está de acuerdo con dichos cambios.

Información que es recogida

Nuestro sitio web podrá recoger información personal por ejemplo: Nombre,  información de contacto como  su dirección de correo electrónica e información demográfica. Así mismo cuando sea necesario podrá ser requerida información específica para procesar algún pedido o realizar una entrega o facturación.

Uso de la información recogida

Nuestro sitio web emplea la información con el fin de proporcionar el mejor servicio posible, particularmente para mantener un registro de usuarios, de pedidos en caso que aplique, y mejorar nuestros productos y servicios.  Es posible que sean enviados correos electrónicos periódicamente a través de nuestro sitio con ofertas especiales, nuevos productos y otra información publicitaria que consideremos relevante para usted o que pueda brindarle algún beneficio, estos correos electrónicos serán enviados a la dirección que usted proporcione y podrán ser cancelados en cualquier momento. Alternativa.click está altamente comprometido para cumplir con el compromiso de mantener su información segura. Usamos los sistemas más avanzados y los actualizamos constantemente para asegurarnos que no exista ningún acceso no autorizado.

Cookies

Una cookie se refiere a un fichero que es enviado con la finalidad de solicitar permiso para almacenarse en su ordenador, al aceptar dicho fichero se crea y la cookie sirve entonces para tener información respecto al tráfico web, y también facilita las futuras visitas a una web recurrente. Otra función que tienen las cookies es que con ellas las web pueden reconocerte individualmente y por tanto brindarte el mejor servicio personalizado de su web. Nuestro sitio web emplea las cookies para poder identificar las páginas que son visitadas y su frecuencia. Esta información es empleada únicamente para análisis estadístico y después la información se elimina de forma permanente. Usted puede eliminar las cookies en cualquier momento desde su ordenador. Sin embargo las cookies ayudan a proporcionar un mejor servicio de los sitios web, estás no dan acceso a información de su ordenador ni de usted, a menos de que usted así lo quiera y la proporcione directamente. Usted puede aceptar o negar el uso de cookies, sin embargo la mayoría de navegadores aceptan cookies automáticamente pues sirve para tener un mejor servicio web. También usted puede cambiar la configuración de su ordenador para declinar las cookies. Si se declinan es posible que no pueda utilizar algunos de nuestros servicios.

Enlaces a Terceros

Este sitio web pudiera contener en laces a otros sitios que pudieran ser de su interés. Una vez que usted de clic en estos enlaces y abandone nuestra página, ya no tenemos control sobre al sitio al que es redirigido y por lo tanto no somos responsables de los términos o privacidad ni de la protección de sus datos en esos otros sitios terceros. Dichos sitios están sujetos a sus propias políticas de privacidad por lo cual es recomendable que los consulte para confirmar que usted está de acuerdo con estas. Control de su información personal En cualquier momento usted puede restringir la recopilación o el uso de la información personal que es proporcionada a nuestro sitio web.  Cada vez que se le solicite rellenar un formulario, como el de alta de usuario, puede marcar o desmarcar la opción de recibir información por correo electrónico.  En caso de que haya marcado la opción de recibir nuestro boletín o publicidad usted puede cancelarla en cualquier momento. Esta compañía no venderá, cederá ni distribuirá la información personal que es recopilada sin su consentimiento, salvo que sea requerido por un juez con un orden judicial. Alternativa.click Se reserva el derecho de cambiar los términos de la presente Política de Privacidad en cualquier momento.
Save settings
Cookies settings