Com s'utilitza curl per descarregar fitxers des de la línia d'ordres de Linux

El Linux rínxol comando pot fer molt més que descarregar fitxers. Esbrineu què rínxol és capaç de fer-ho i quan ho haureu d'utilitzar en lloc de wget.

curl vs. wget: Quina és la diferència?

La gent sol lluitar per identificar els punts forts relatius de la wget i rínxol ordres. Les ordres tenen una certa superposició funcional. Cadascun pot recuperar fitxers de llocs remots, però aquí acaba la similitud.

wget és una eina fantàstica per descarregar contingut i fitxers. Pot descarregar fitxers, pàgines web i directoris. Conté rutines intel·ligents per recórrer enllaços a pàgines web i descarregar recursivament contingut a tot un lloc web. És insuperable com a gestor de baixades de línia d’ordres.

rínxol satisfà una necessitat totalment diferent. Sí, pot recuperar fitxers, però no pot navegar recursivament per un lloc web que busca contingut per recuperar-lo. Què rínxol el que fa és deixar-vos interactuar amb sistemes remots fent sol·licituds a aquests sistemes i recuperant-vos i mostrant-vos les respostes. És possible que aquestes respostes siguin contingut i fitxers de pàgines web, però també poden contenir dades proporcionades mitjançant un servei web o una API com a resultat de la "pregunta" formulada per la sol·licitud de curl.

I rínxol no es limita als llocs web. rínxol admet més de 20 protocols, inclosos HTTP, HTTPS, SCP, SFTP i FTP. I sens dubte, a causa del seu maneig superior de canonades Linux, rínxol es pot integrar més fàcilment amb altres ordres i scripts.

L'autor de rínxol té una pàgina web que descriu les diferències que veu rínxol i wget.

Instal·lació de curl

Dels ordinadors que s’utilitzaven per investigar aquest article, en tenien Fedora 31 i Manjaro 18.1.0 rínxol ja instal·lat. rínxol s’havia d’instal·lar a l’Ubuntu 18.04 LTS. A Ubuntu, executeu aquesta ordre per instal·lar-lo:

sudo apt-get install curl

La versió curl

El --versió opció farínxolinforma de la seva versió. També llista tots els protocols que admet.

rínxol --versió

Recuperació d'una pàgina web

Si assenyalem rínxol en una pàgina web, la recuperarà per a nosaltres.

curl //www.bbc.com

Però la seva acció per defecte és bolcar-la a la finestra del terminal com a codi font.

Compte: Si no ho expliques rínxol voleu que alguna cosa s’emmagatzemi com a fitxer, ho farà sempre bolqueu-lo a la finestra del terminal. Si el fitxer que recupera és un fitxer binari, el resultat pot ser imprevisible. El shell pot intentar interpretar alguns dels valors de bytes del fitxer binari com a caràcters de control o seqüències d'escapament.

Desar dades en un fitxer

Diguem a curl que redirigeixi la sortida a un fitxer:

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

Aquesta vegada no veiem la informació recuperada, sinó que s’envia directament al fitxer. Com que no hi ha cap sortida de finestra de terminal per mostrar, rínxol emet un conjunt d'informació sobre el progrés.

No ho va fer a l'exemple anterior, perquè la informació sobre el progrés s'hauria escampat pel codi font de la pàgina web rínxol l’ha suprimit automàticament.

En aquest exemple,rínxol detecta que la sortida s'està redirigint a un fitxer i que és segur generar la informació de progrés.

La informació proporcionada és:

  • % Total: L'import total que s'ha de recuperar.
  • Percentatge rebut: Percentatge i valors reals de les dades recuperades fins ara.
  • % Xferd: El percentatge i l'enviament real, si es carreguen dades.
  • Velocitat mitjana de descàrrega: La velocitat mitjana de descàrrega.
  • Velocitat mitjana de càrrega: La velocitat mitjana de càrrega.
  • Temps total: La durada total estimada de la transferència.
  • Temps passat: El temps transcorregut fins ara per a aquesta transferència.
  • Temps restant: El temps restant estimat per completar la transferència
  • Velocitat actual: La velocitat de transferència actual per a aquesta transferència.

Perquè hem redirigit la sortida des de rínxol a un fitxer, ara tenim un fitxer anomenat "bbc.html".

Si feu doble clic a aquest fitxer, s’obrirà el navegador predeterminat perquè mostri la pàgina web recuperada.

Tingueu en compte que l’adreça de la barra d’adreces del navegador és un fitxer local d’aquest equip, no un lloc web remot.

No hem de fer-ho redirecció la sortida per crear un fitxer. Podem crear un fitxer utilitzant el fitxer -o (sortida) opció, i explicant rínxol per crear el fitxer. Aquí estem fent servir el -o opció i proporcionant el nom del fitxer que volem crear "bbc.html".

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

Ús d’una barra de progrés per supervisar les descàrregues

Per substituir la informació de descàrrega basada en text per una simple barra de progrés, utilitzeu el fitxer -# (barra de progrés) opció.

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

Reinici d'una descàrrega interrompuda

És fàcil reiniciar una descàrrega finalitzada o interrompuda. Comencem a baixar un fitxer important. Utilitzarem l’última versió de suport a llarg termini d’Ubuntu 18.04. Estem utilitzant el --output opció per especificar el nom del fitxer en el qual volem desar-lo: “ubuntu180403.iso”.

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

La descàrrega comença i funciona cap a la finalització.

Si interrompem per força la descàrrega amb Ctrl + C , tornem a l'indicatiu d'ordres i la descàrrega s'abandona.

Per reiniciar la baixada, utilitzeu el fitxer -C (continua a) opció. Això provoca rínxol per reiniciar la baixada en un punt especificat o compensar dins del fitxer de destinació. Si utilitzeu un guionet - com a compensació, rínxol examinarà la part ja descarregada del fitxer i determinarà el desplaçament correcte a utilitzar per si mateix.

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

La descàrrega es reinicia. rínxol informa del desplaçament en què es reinicia.

Recuperació de capçaleres HTTP

Amb el -Jo (capçalera), només podeu recuperar les capçaleres HTTP. Això és el mateix que enviar l’ordre HTTP HEAD a un servidor web.

curl -I www.twitter.com

Aquesta ordre només recupera informació; no descarrega cap pàgina web ni fitxer.

Baixant diversos URL

Utilitzant xargs podem baixar diversos URL alhora. Potser volem descarregar una sèrie de pàgines web que formen un sol article o tutorial.

Copieu aquests URL en un editor i deseu-los en un fitxer anomenat "urls-to-download.txt". Podem utilitzar xargs per tractar el contingut de cada línia del fitxer de text com un paràmetre al qual s'alimentarà rínxol, al seu torn.

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

Aquesta és l'ordre que hem d'utilitzar per tenir xargs passeu aquests URL a rínxol un per un:

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

Tingueu en compte que aquesta ordre utilitza el fitxer -O (fitxer remot) ordre de sortida, que utilitza una majúscula "O." Aquesta opció provoca rínxol per desar el fitxer recuperat amb el mateix nom que el fitxer té al servidor remot.

El -n 1 opció diu xargs per tractar cada línia del fitxer de text com un sol paràmetre.

Quan executeu l’ordre, veureu que s’inicien i acaben diverses baixades, una darrere l’altra.

Si comproveu el navegador de fitxers, es mostren que s'han descarregat diversos fitxers. Cadascun porta el nom que tenia al servidor remot.

RELACIONATS:Com s'utilitza l'ordre xargs a Linux

Baixada de fitxers des d'un servidor FTP

Utilitzant rínxol amb un servidor de protocol de transferència de fitxers (FTP) és fàcil, fins i tot si heu d’autenticar-vos amb un nom d’usuari i una contrasenya. Per passar un nom d'usuari i una contrasenya amb rínxol utilitzar el -u (usuari) i escriviu el nom d'usuari, els dos punts ":" i la contrasenya. No col·loqueu cap espai abans ni després dels dos punts.

Es tracta d’un servidor FTP de prova lliure allotjat per Rebex. El lloc FTP de prova té un nom d'usuari predeterminat com a "demostració" i la contrasenya és "contrasenya". No utilitzeu aquest tipus de nom d'usuari i contrasenya febles en un servidor FTP de producció o "real".

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

rínxol esbrina que l’orientem cap a un servidor FTP i retorna una llista dels fitxers que hi ha al servidor.

L'únic fitxer d'aquest servidor és un fitxer "readme.txt", de 403 bytes de longitud. Recuperem-lo. Utilitzeu la mateixa ordre que fa un moment, amb el nom de fitxer que s'hi afegeix:

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

Es recupera el fitxer i rínxol mostra el seu contingut a la finestra del terminal.

En gairebé tots els casos, serà més convenient que el fitxer recuperat es guardi al disc per a nosaltres, en lloc de mostrar-lo a la finestra del terminal. Una vegada més podem utilitzar el -O Comanda de sortida (fitxer remot) per guardar el fitxer al disc, amb el mateix nom de fitxer que el servidor remot.

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

El fitxer es recupera i es desa al disc. Podem utilitzar ls per comprovar els detalls del fitxer. Té el mateix nom que el fitxer del servidor FTP i té la mateixa longitud, 403 bytes.

ls -hl readme.txt

RELACIONATS:Com s'utilitza l'ordre FTP a Linux

Enviament de paràmetres a servidors remots

Alguns servidors remots acceptaran paràmetres a les sol·licituds que se'ls envien. Els paràmetres es poden utilitzar per formatar les dades retornades, per exemple, o bé es poden utilitzar per seleccionar les dades exactes que l'usuari vol recuperar. Sovint és possible interactuar amb interfícies de programació d'aplicacions web (API) mitjançant rínxol.

Com a exemple senzill, el lloc web ipify té una API que es pot consultar per determinar la vostra adreça IP externa.

curl //api.ipify.org

Afegint el fitxer format paràmetre de l'ordre, amb el valor de "json" podem tornar a sol·licitar la nostra adreça IP externa, però aquesta vegada les dades retornades es codificaran en format JSON.

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

Aquí hi ha un altre exemple que fa servir una API de Google. Retorna un objecte JSON que descriu un llibre. El paràmetre que heu de proporcionar és el número internacional del llibre estàndard (ISBN) d'un llibre. Podeu trobar-los a la contraportada de la majoria de llibres, normalment a sota d’un codi de barres. El paràmetre que farem servir aquí és "0131103628".

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

Les dades retornades són completes:

De vegades s’enrolla, de vegades s’enfonsa

Si volgués baixar contingut d’un lloc web i fer que l’arbre del lloc web cerqués recursivament aquest contingut, faria servir wget.

Si volgués interactuar amb un servidor o API remot i, possiblement, descarregar alguns fitxers o pàgines web, ho faria servir rínxol. Sobretot si el protocol era un dels molts que no admet wget.


$config[zx-auto] not found$config[zx-overlay] not found