Utilizarea cURL pentru a descărca fișiere de la distanță de pe linia de comandă
Cuprins:
- Descărcați fișiere cu potrivire exactă cu curl -O
- Salvarea unui fișier de la distanță cu un nume diferit cu curl -o
- Descărcarea mai multor fișiere concomitent cu curl
Puternicul instrument curl de linie de comandă poate fi folosit pentru a descărca fișiere de pe aproape orice server la distanță. Utilizatorii de lungă durată din linia de comandă știu că acest lucru poate fi util pentru o mare varietate de situații, dar pentru a menține lucrurile simple, mulți vor descoperi că descărcarea unui fișier cu curl poate fi adesea o alternativă mai rapidă la utilizarea unui browser web sau a unui client FTP din partea GUI a Mac OS X (sau Linux).Acest lucru este util pentru situații locale, dar există o valoare deosebită dacă vă aflați într-o situație în care trebuie să descărcați ceva pe un Mac la distanță atunci când vă conectați prin SSH.
În scopul acestei explicații, ne vom concentra în primul rând pe descărcarea fișierelor din cele două protocoale HTTP și SFTP întâlnite frecvent, deși trebuie remarcat faptul că cURL acceptă mult mai multe protocoale. Deși curl este ușor de utilizat, este recomandat să aveți anumite cunoștințe despre linia de comandă.
Descărcați fișiere cu potrivire exactă cu curl -O
Folosind steagul -O majuscule cu curl descarcă fișierul de pe serverul de la distanță menținând în același timp numele exact al fișierului, sintaxa de bază pentru aceasta este următoarea:
curl -O
Aceasta înseamnă că dacă fișierul URL specificat este numit „sample.zip” se va descărca cu numele de fișier „sample.zip”, iar dacă fișierul este numit ceva enorm și complicat, cum ar fi „LongExampleFileNameForOSXDaily-v- 1-3-51-revision-515b12-readme.txt” pe serverul de la distanță, se va salva cu acel nume exact pe mașina locală. Numele de fișiere mai lungi sunt adesea tratate mai bine cu steag-ul -o decât cu -O, pe care îl vom aborda în curând.
Cititorii obișnuiți își pot aminti că am folosit comanda curl -O când explicăm cum să extragem conținutul audio real dintr-un fișier de streaming m3u.
Începerea oricărei descărcări cu curl arată procentul transferat, timpul petrecut la descărcare și timpul rămas și viteza de transfer.
Captura de ecran oferă o reprezentare mai bună decât exemplul lipit de mai jos, dar arată cam așa:
% Total % primit % Xferd Viteză medie Timp Timp Timp Descărcare curent Încărcare Total cheltuit Viteză rămasă 100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k
Cu viteza de transfer care arată că ați putea redirecționa ieșirea curl către /dev/null și să o utilizați pentru a testa viteza conexiunii la internet, dar comanda wget are o bară de transfer mai ușor de citit și urmat, astfel că wget este mai bine potrivit pentru sarcina respectivă.
Salvarea unui fișier de la distanță cu un nume diferit cu curl -o
Folosirea unui flag -o cu litere mici vă va permite să specificați un nume de fișier diferit pentru fișierul descărcat decât modul în care este numit pe serverul de la distanță. Acest lucru poate fi util pentru a reduce numele lungi de fișiere sau pentru a eticheta ceva, astfel încât să fie mai ușor de găsit singur. Sintaxa generală ar fi:
curl -o
De exemplu, dacă doriți să salvați un fișier IPSW iOS pe care l-ați găsit listat pe serverele Apple fără a avea numele complet lung, puteți utiliza următoarele:
curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ips
Acest lucru va descărca fișierul „iPhone5, 3_7.0.4_11B554a_Restore.ipsw”, dar denumit mai scurt ca „iPhone5C-704.ipsw”.
Dacă preferați să nu salvați fișierul în directorul de lucru actual, specificați o cale ca parte a numelui fișierului, astfel:
curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg
Descărcarea mai multor fișiere concomitent cu curl
cURL poate descărca cu ușurință mai multe fișiere în același timp, tot ce trebuie să faceți este să specificați mai multe adrese URL astfel:
curl -O
Pentru fișiere cu nume diferite sau găzduite pe servere diferite sau în căi de directoare diferite, utilizați adresa URL completă, de exemplu:
curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/ Licențe/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt
Pe de altă parte, dacă numele fișierelor care urmează să fie descărcate folosesc denumirea incrementală, puteți folosi paranteze pentru a specifica un interval de descărcare, astfel:
curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1.txt
Acest lucru ar prelua fișierele fdl-1.1.txt, fd1-1.2.txt și fd1-1.3.txt toate în același timp, fără a fi nevoie să specificați fiecare adresă URL unică. Desigur, acest lucru funcționează numai dacă fișierele sunt în același director împreună și pe același domeniu.
Autentificare cu bucle
De asemenea, puteți trece autentificarea cu cURL utilizând steag-ul -u:
curl -u user:pass -O ftp://remote_url/file-to-download.zip
Rețineți că istoricul bash va stoca parola în text simplu atunci când utilizați -u cu un nume de utilizator și o parolă specificate, astfel încât acest lucru nu este recomandat în majoritatea situațiilor. Puteți ocoli asta prin plasarea unui spațiu în fața „ondulei”.Dacă nu folosiți bara de spațiu pentru a prefix comanda, probabil că veți dori să goliți istoricul comenzilor după aceea pentru a fi în siguranță.
Protocoale curl acceptate și utilizare dincolo de HTTP și FTP
Așa cum am menționat mai devreme, utilizarea cURL depășește cu mult HTTP și FTP, deoarece pagina manuală curl menționează protocoale suplimentare în descriere:
În plus, veți descoperi că curl poate fi folosit și pentru solicitări PUT și POST, cookie-uri, proxy, tuneluri, reluare descărcări și chiar preluarea informațiilor de antet HTTP sau schimbarea unui agent de utilizator (falsificarea efectivă) fără a fi nevoie să utilizați un browser web dedicat.
La fel ca majoritatea utilităților de linie de comandă, puteți afla mult mai multe despre curl invocând pagina de manual corespunzătoare cu comanda „man curl”.