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ínxol
informa 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
.