cURL y wget en Linux: ¿cuál es la diferencia?

cURL y wget en Linux: ¿cuál es la diferencia?

Si le preguntas a un grupo de usuarios de Linux qué usan para descargar archivos, algunos dirán wgety otros dirán cURL. ¿Cuál es la diferencia y es uno mejor que el otro?

Todo comenzó con la conexión.

Los investigadores del gobierno comenzaron a conectar varias redes desde la década de 1960, lo que resultó en redes interconectadas. Pero el nacimiento de Internet como lo conocemos fue el 1 de enero de 1983, cuando se implementó el protocolo TCP/IP. Era el eslabón perdido. Esto permitió que computadoras y redes dispares se comunicaran usando un estándar común.

En 1991,  el CERN  lanzó su software para la World Wide Web, que utilizaron internamente durante varios años. El interés en esta superposición visual para la web fue inmediato y generalizado. A finales de 1994 había  10.000 servidores web y 10 millones de usuarios .

Estos dos hitos, Internet y la World Wide Web, representan lados muy diferentes de la conectividad. Pero también comparten muchas de las mismas características.

La comunicación significa precisamente eso. Se está conectando a algún dispositivo remoto, como un servidor. Y te conectas a él porque tiene algo que necesitas o quieres. Pero, ¿cómo llevar este recurso alojado de forma remota a la máquina local desde la línea de comandos de Linux?

En 1996, aparecieron dos utilidades que permitían descargar recursos alojados de forma remota. Este es wgetel que salió en enero, y cURLel que salió en diciembre. Ambos funcionan en la línea de comandos de Linux. Ambos se conectan a servidores remotos y ambos obtienen datos por usted.

Pero no es sólo el caso habitual que Linux proporciona dos o más herramientas para hacer el mismo trabajo. Estas utilidades tienen diferentes propósitos y diferentes especializaciones. El problema es que son lo suficientemente similares como para causar confusión sobre cuál usar y cuándo.

Considere dos cirujanos. Probablemente no desee que un cirujano ocular le realice una operación de derivación cardíaca, ni desee que un cirujano cardíaco le realice una operación de cataratas. Sí, ambos son profesionales médicos altamente calificados, pero esto no significa que puedan reemplazarse entre sí.

Lo mismo es cierto para wgety cURL.

Diferentes propósitos, diferentes funciones, algunas superposiciones

La letra «w» en wgetel comando indica su propósito. Su objetivo principal es cargar páginas web o incluso sitios web completos. Su manpágina lo describe como una utilidad para descargar archivos de Internet utilizando los protocolos HTTP, HTTPS y FTP.

Por el contrario, cURLfunciona con 26 protocolos, incluidos SCP, SFTP y SMSB, además de HTTPS. Su manpágina dice que es una herramienta para transferir datos hacia o desde un servidor. No está diseñado específicamente para trabajar con sitios web. Está diseñado para comunicarse con servidores remotos utilizando cualquiera de los muchos protocolos de Internet admitidos.

Por wgetlo tanto, está predominantemente orientado a sitios web, cURLmientras que funciona a un nivel más profundo, al nivel de Internet normal y corriente.

wgetpuede recuperar páginas web y puede navegar recursivamente a través de estructuras de directorios completas en servidores web para descargar sitios web completos. También puede configurar los enlaces en las páginas recuperadas para que apunten correctamente a páginas web en su computadora local, en lugar de sus contrapartes en un servidor web remoto.

cURLle permite interactuar con un servidor remoto. Puede descargar archivos y extraerlos. cURL funciona con proxies SOCKS4 y SOCKS5, y HTTPS para proxies. Admite la descompresión automática de archivos comprimidos en formatos GZIP, BROTLI y ZSTD. cURLtambién te permite descargar múltiples transferencias en paralelo.

La superposición entre los dos es que wgetambos cURLle permiten obtener páginas web y usar servidores FTP.

Esta es solo una métrica aproximada, pero puede tener una idea de los conjuntos de funciones relativas de las dos herramientas al observar la longitud de sus manpáginas. En nuestra máquina de prueba, la página de manual para wgettiene 1433 líneas. La página manpara cURLes la friolera de 5296 líneas.

Un vistazo rápido a wget

Dado wgetque es parte del proyecto GNU , debería encontrarlo preinstalado en todas las distribuciones de Linux. Es fácil de usar, especialmente para los usos más comunes: descargar páginas web o archivos.

Simplemente use wgetel comando con la URL de la página web o archivo remoto.

wget https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc

El archivo se extrae y se guarda en su computadora con el nombre original.

Para guardar el archivo con un nuevo nombre, utilice la -Oopción (documento de salida).

wget -O word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc

El archivo resultante se guarda con el nombre que elegimos.

No utilice esta -Oopción cuando busque sitios web. Si hace esto, todos los archivos extraídos se agregarán a uno.

Para obtener el sitio web completo, use el -mparámetro (espejo) y la URL de la página de inicio del sitio web. También puede usar --page-requisitespara asegurarse de que todos los archivos de soporte necesarios para mostrar las páginas web correctamente también estén cargados. Esta --convert-linksconfiguración configura los enlaces en el archivo resultante para apuntar a los destinos correctos en su computadora local, en lugar de a ubicaciones externas en el sitio web.

Un vistazo rápido a cURL

cURLes un proyecto independiente de código abierto. Viene preinstalado en Manjaro 21 y Fedora 36, ​​pero debe instalarse en Ubuntu 21.04.

Este es el comando para instalar cURL en Ubuntu.

sudo apt install curl

Para cargar el mismo archivo que con wgety guardarlo con el mismo nombre, necesitamos usar este comando. Tenga en cuenta que la -oopción (salir) está escrita en minúsculas con cURL.

curl -o word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc

El archivo ha sido descargado para nosotros. Se muestra una barra de progreso ASCII durante la descarga.

Para conectarse a un servidor FTP y cargar un archivo, use la -uopción (usuario) y especifique un par de nombre de usuario/contraseña, como este:

curl -o test.png -u demo:password ftp://test.rebex.net/pub/example/KeyGenerator.png

Esto descarga y cambia el nombre del archivo desde el servidor FTP de prueba.

no hay mejor

Es imposible responder «¿Cuál debo usar?» sin preguntar «¿Qué estás tratando de hacer?»

Una vez que comprenda qué wgety qué cURLhacer, comprenderá que no están compitiendo. No satisfacen el mismo requisito y no intentan proporcionar la misma funcionalidad.

La carga de páginas web y sitios web es wgetdonde reside la excelencia. Si eso es lo que estás haciendo, usa wget. Para todo lo demás, como descargar o usar cualquiera de los muchos otros protocolos, use cURL.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *