Uso de cURL para descargar archivos remotos desde la línea de comandos
Tabla de contenido:
- Descargar archivos de coincidencia exacta con curl -O
- Guardar un archivo remoto con un nombre diferente con curl -o
- Descarga de varios archivos simultáneamente con curl
La poderosa herramienta de línea de comando curl se puede usar para descargar archivos desde casi cualquier servidor remoto. Los usuarios veteranos de la línea de comandos saben que esto puede ser útil para una amplia variedad de situaciones, pero para simplificar las cosas, muchos encontrarán que descargar un archivo con curl puede ser una alternativa más rápida que usar un navegador web o un cliente FTP desde el lado de la GUI de Mac OS X (o Linux).Esto es útil para situaciones locales, pero tiene un valor particular si se encuentra en una situación en la que necesita descargar algo a una Mac remota cuando se conecta a través de SSH.
A los efectos de este tutorial, nos centraremos principalmente en la descarga de archivos de los dos protocolos HTTP y SFTP que se encuentran comúnmente, aunque se debe tener en cuenta que cURL admite muchos más protocolos. Aunque curl es fácil de usar, se recomienda tener algún conocimiento de la línea de comandos.
Descargar archivos de coincidencia exacta con curl -O
Usar el indicador -O en mayúsculas con curl descarga el archivo desde el servidor remoto manteniendo el nombre de archivo exacto, la sintaxis básica para esto es la siguiente:
rizo -O
Esto significa que si el archivo URL especificado se llama “sample.zip”, se descargará con el nombre de archivo “sample.zip”, y si el archivo se llama algo enorme y complicado como “LongExampleFileNameForOSXDaily-v- 1-3-51-revisión-515b12-léame.txt” en el servidor remoto, se guardará con ese nombre exacto en la máquina local. Los nombres de archivo más largos a menudo se manejan mejor con el indicador -o en lugar de -O, que abordaremos en breve.
Los lectores habituales pueden recordar que usamos el comando curl -O cuando explicamos cómo extraer el contenido de audio real de un archivo de transmisión m3u.
Comenzar cualquier descarga con curl muestra el porcentaje transferido, el tiempo dedicado a la descarga y el tiempo restante, y la velocidad de transferencia.
La captura de pantalla ofrece una mejor representación que el ejemplo pegado a continuación, pero se parece a esto:
% Total % Recibido % Xferd Promedio Velocidad Tiempo Tiempo Tiempo Descarga actual Carga Gasto total Velocidad restante 100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k
Al mostrar la velocidad de transferencia, puede redirigir la salida de curl a /dev/null y usarla para probar la velocidad de la conexión a Internet, pero el comando wget tiene una barra de transferencia más fácil de leer y seguir, por lo que wget es mejor adecuado para esa tarea.
Guardar un archivo remoto con un nombre diferente con curl -o
Usar un indicador -o en minúsculas le permitirá especificar un nombre de archivo diferente para el archivo descargado que el nombre que tiene en el servidor remoto. Esto puede ser útil para reducir la longitud de los nombres de los archivos o simplemente etiquetar algo para que sea más fácil encontrarlo por su cuenta. La sintaxis general sería:
rizo -o
Por ejemplo, si desea guardar un archivo IPSW de iOS que encontró en los servidores de Apple sin tener el nombre completo extenso, puede usar lo siguiente:
curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ipsw
Esto descargará el archivo “iPhone5, 3_7.0.4_11B554a_Restore.ipsw”, pero su nombre es más corto como “iPhone5C-704.ipsw”, más significativo.
Si prefiere no guardar el archivo en el directorio de trabajo actual, especifique una ruta como parte del nombre del archivo así:
curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg
Descarga de varios archivos simultáneamente con curl
cURL puede descargar fácilmente varios archivos al mismo tiempo, todo lo que necesita hacer es especificar más de una URL así:
rizo -O
Para archivos con diferentes nombres, o alojados en diferentes servidores, o dentro de diferentes rutas de directorio, use la URL completa, por ejemplo:
curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/ Licencias/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt
Por otro lado, si los nombres de los archivos que se descargarán usan nombres incrementales, puede usar corchetes para especificar un rango de descarga, así:
curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1.txt
Esto capturaría los archivos fdl-1.1.txt, fd1-1.2.txt y fd1-1.3.txt al mismo tiempo sin tener que especificar cada URL única. Por supuesto, esto solo funciona si los archivos están juntos en el mismo directorio y en el mismo dominio.
Autenticando con curl
También puede pasar la autenticación con cURL usando el indicador -u:
curl -u usuario:contraseña -O ftp://url_remota/archivo-para-descargar.zip
Tenga en cuenta que el historial de bash almacenará la contraseña en texto sin formato cuando use -u con un nombre de usuario y una contraseña especificados, por lo que no se recomienda para la mayoría de las situaciones. Puede evitar eso colocando un espacio delante de 'curl'.Si no usa la barra espaciadora como prefijo del comando, probablemente querrá vaciar el historial de comandos después para estar seguro.
Protocolos curl admitidos y uso más allá de HTTP y FTP
Como se mencionó anteriormente, el uso de cURL va mucho más allá de HTTP y FTP, ya que la entrada de la página del manual de curl menciona protocolos adicionales en la descripción:
Además, encontrará que curl también se puede usar para solicitudes PUT y POST, cookies, proxies, túneles, reanudar descargas e incluso obtener información de encabezado HTTP o cambiar un agente de usuario (falsificación efectiva) sin necesidad de utilizar un navegador web dedicado.
Al igual que la mayoría de las utilidades de línea de comandos, puede aprender mucho más sobre curl invocando la página del manual correspondiente con el comando 'man curl'.