Cómo transferir archivos hacia y desde un servidor con el comando Curl

1 mar 2021 5 min di lettura
Cómo transferir archivos hacia y desde un servidor con el comando Curl
Indice dei contenuti

Introducción

curl es una utilidad de línea de comandos para transferir datos hacia o desde un servidor diseñado para funcionar sin la interacción del usuario. Con curl, puede cargar y descargar datos utilizando uno de los protocolos admitidos, incluidos HTTP, HTTPS, SCP, SFTP y FTP. curl proporciona una serie de opciones que le permiten reanudar las transferencias, reducir el ancho de banda, la compatibilidad con proxy, la autenticación de usuarios y mucho más.

En este tutorial, le mostraremos cómo utilizar la herramienta Curl a través de ejemplos prácticos y explicaciones detalladas de las opciones de curl más comunes.

Instalar Curl

Actualmente, el paquete curl está preinstalado en la mayoría de las distribuciones de Linux.

Para verificar si el paquete Curl está instalado en su sistema, abra su consola, escriba curl y presione Enter. Si curl está instalado, el sistema imprimirá curl: try 'curl --help' or 'curl --manual' for more information. De lo contrario, verá algo como el curl command not found.

Si curl no está instalado, puede instalarlo fácilmente usando el administrador de paquetes de su distribución.

Instalar Curl en Ubuntu y Debian

sudo apt update
sudo apt install curl

Instalar Curl en CentOS y Fedora

sudo yum install curl

Cómo usar Curl

La sintaxis del curl es la siguiente:

curl [options] [URL...]

En su forma más simple, cuando se invoca sin ninguna opción, curl muestra el recurso especificado en la salida estándar.

Por ejemplo, para recuperar la página de inicio de example.com, debe ejecutar:

curl example.com

El comando imprimirá el código fuente de la example.com en la ventana del terminal.

Si no se especifica ningún protocolo, curl intenta adivinar el protocolo que desea utilizar, en función de la dirección que especifique y se establecerá de forma predeterminada en HTTP.

Guarde la salida en un archivo

Para guardar el resultado del curl, use la opción -o o -O

La -o (minúsculas) guarda el archivo con un nombre de archivo predeterminado, que en el siguiente ejemplo es vue-v2.6.10.js:

curl -o vue-v2.6.10.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js

La -O (mayúsculas) guarda el archivo con su nombre de archivo original:

curl -O https://cdn.jsdelivr.net/npm/vue/dist/vue.js

Descarga varios archivos

Para descargar varios archivos a la vez, use varias -O, seguidas de la URL en el archivo que desea descargar.

En el siguiente ejemplo, estamos descargando los archivos ISO de Arch Linux y Debian:

curl -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso \
 -O https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso

Reanudar una descarga

Puede reanudar una descarga usando la opción -C - Esto es útil si la conexión se interrumpe mientras se descarga un archivo grande y en lugar de iniciar la descarga desde cero, puede continuar con el anterior.

Por ejemplo, si está descargando el archivo iso de Ubuntu 18.04 usando el siguiente comando:

curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso

y de repente se interrumpe la conexión, puede reanudar la descarga con este comando:

curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso

Obtener los encabezados HTTP de una URL (encabezados HTTP)

Los encabezados HTTP son pares clave-valor separados por dos puntos que contienen información como el agente de usuario, el tipo de contenido y la codificación. Los encabezados se pasan entre el cliente y el servidor con la solicitud o respuesta.

Use la -I para recuperar solo los encabezados HTTP del recurso especificado:

curl -I --http2 https://www.ubuntu.com/

Compruebe si un sitio web es compatible con HTTP /2

Para verificar si una URL en particular admite el nuevo protocolo HTTP /2, recupere los encabezados HTTP con la -I junto con la opción --http2

curl -I --http2 -s https://noviello.it/| grep HTTP

La -s permite que el curl ejecute silenciosamente (silenciosamente) y oculte el indicador de estado y los mensajes de error.

Si el servidor remoto admite HTTP 2, curl imprime HTTP/2.0 200:

HTTP/2 200

De lo contrario, la respuesta es HTTP/1.1 200:

HTTP/1.1 200 OK

Si tiene curl versión 7.47.0 o más reciente, no necesita usar la --http2 porque HTTP /2 está habilitado de manera predeterminada para todas las conexiones HTTPS.

Siga las redirecciones

De forma predeterminada, curl no sigue los encabezados de ubicación HTTP.

Si intenta recuperar la versión sin www de google.com, notará que, en lugar de obtener la fuente de la página, será redirigido a la versión www:

curl google.com

La -L indica a la curl que siga las redirecciones hasta que llegue a su destino final:

curl -L google.com

Cambiar el agente de usuario

A veces, al descargar un archivo, el servidor remoto se puede configurar para bloquear Curl User-Agent o para devolver contenido diferente según el dispositivo del visitante y el navegador.

En situaciones como esta, para emular un navegador diferente, use la opción -A

Por ejemplo, para emular Firefox 60 debes usar:

curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://getfedora.org/

Especifique una tasa de transferencia máxima

La --limit-rate permite limitar la tasa de transferencia de datos. El valor se puede expresar en bytes, kilobytes con el k, megabytes con el m y gigabytes con el sufijo g

En el siguiente ejemplo, curl descargará el binario Go y limitará la velocidad de descarga a 1 MB:

curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz

Esta opción es útil para evitar consumir todo el ancho de banda disponible.

Transferir archivos a través de FTP

Para iniciar sesión en un servidor FTP protegido curl -u y especifique el nombre de usuario y la contraseña como se muestra a continuación:

curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/

Una vez que haya iniciado sesión, el comando enumera todos los archivos y directorios en el directorio de inicio del usuario.

Puede descargar un solo archivo desde el servidor FTP utilizando la siguiente sintaxis:

curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz

Para cargar un archivo al servidor FTP, use el -T seguido del nombre del archivo que desea cargar:

curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/

Enviar cookies

A veces puede ser necesario realizar una solicitud HTTP con cookies específicas para acceder a un recurso remoto o para depurar un problema.

Por defecto, al solicitar un recurso con curl, no se envían ni almacenan cookies.

Para enviar cookies al servidor, use la -b seguida de un nombre de archivo que contenga cookies o una cadena.

Por ejemplo, para descargar el archivo rpm de jdk-10.0.2_linux-x64_bin.rpm, debe pasar una cookie denominada oraclelicense con el valor a:

curl -L -b "oraclelicense=a" -O http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm

Utilizar proxies

curl admite varios tipos de proxies, incluidos HTTP, HTTPS y SOCKS. Para transferir datos a través de un servidor proxy, use la -x ( --proxy ), seguida de la URL del proxy.

El siguiente comando descarga el recurso especificado usando un proxy 192.168.44.1 en el puerto 8888:

curl -x 192.168.44.1:8888 http://linux.com/

Si el servidor proxy requiere autenticación, use la -U ( --proxy-user ) seguida del nombre de usuario y la contraseña separados por dos puntos ( user:password ):

curl -U username:password -x 192.168.44.1:8888 http://linux.com/

Conclusión

curl es una herramienta de línea de comandos que le permite transferir datos hacia o desde un host remoto. Es útil para solucionar problemas, descargar archivos y más.

Para obtener más información sobre curl visite la página de documentación de Curl.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.