curl es una herramienta que permite transferir datos desde o hacia un servidor mediante los protocolos HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, DICT, TELNET, LDAP o FILE.
Esta herramienta ofrece muchas características como el soporte de servidores proxy, autenticación de usuarios, subidas por FTP o el método POST de HTTP, conexiones SSL/TLS, cookies y resumen de transferencias de archivos, entre otras. Además provee una librería (libcurl
) para ser utilizada por otros programas como método de descarga de archivos a través de Internet.
Como SysAdmin, es importante familiarizarse con esta herramienta para aquellos casos en los que no se disponga de la popular wget
de GNU.
Cuando descargamos un archivo de Internet utilizando wget
, esta herramienta generalmente detecta y reconoce el nombre de archivo y lo guarda en el directorio actual. Sin embargo curl
, por defecto vuelca el contenido descargado desde el servidor remoto en la salida estándar. Esto significa que, para descargar un archivo (por ejemplo a través de HTTPS), es necesario recurrir al parámetro -o
(escribir la salida en un archivo) junto con el nombre de archivo deseado:
curl -o ARCHIVO URL
Veamos un ejemplo. Se desea descargar el archivo pbzip2-1.1.12-1.el6.x86_64.rpm
desde la siguiente URL:
http://mirror.upb.edu.co/epel/6/x86_64/pbzip2-1.1.12-1.el6.x86_64.rpm
A medida que avanza la descarga curl
muestra la velocidad de transferencia y el total recibido, entre otros datos:
[root@centos6 ~]# curl -o pbzip2-1.1.12-1.el6.x86_64.rpm http://mirror.upb.edu.co/epel/6/x86_64/pbzip2-1.1.12-1.el6.x86_64.rpm % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 49124 100 49124 0 0 51542 0 --:--:-- --:--:-- --:--:-- 67201
Notar que el tamaño de archivo coincide con el total descargado:
[root@centos6 ~]# ll p* -rw-r--r--. 1 root root 49124 nov 13 11:56 pbzip2-1.1.12-1.el6.x86_64.rpm
Para más información y otras opciones, revisar su página de manual:
man curl