Utilizzo di cURL per scaricare file remoti dalla riga di comando

Il potente strumento da riga di comando di ricciolo può essere utilizzato per scaricare file da qualsiasi server remoto. Gli utenti della linea di comando di lunga data sanno che questo può essere utile per una vasta gamma di situazioni, ma per mantenere le cose semplici, molti scopriranno che il download di un file con curl può essere un'alternativa più rapida all'utilizzo di un browser Web o client FTP dal lato GUI di OS X (o linux). Questo è utile per le situazioni locali, ma c'è un valore particolare se ti trovi in ​​una situazione in cui devi scaricare qualcosa su un Mac remoto quando connesso tramite SSH.

Ai fini di questa procedura dettagliata, ci concentreremo principalmente sul download di file dai due protocolli HTTP e SFTP comunemente riscontrati, sebbene si debba notare che cURL supporta molti più protocolli. Sebbene l'arricciatura sia facile da usare, è consigliabile avere una certa conoscenza della linea di comando.

Scarica i file di corrispondenza esatta con curl -O

Usando il flag maiuscolo -O con curl scarica il file dal server remoto mantenendo il nome esatto del file, la sintassi di base per questo è la seguente:

curl -O [url]

Ciò significa che se il file URL specificato è denominato "sample.zip" verrà scaricato con il nome file "sample.zip" e se il file è denominato qualcosa di enorme e complicato come "LongExampleFileNameForOSXDaily-v-1-3-51-revision- 515b12-readme.txt "sul server remoto, salverà con quel nome esatto sul computer locale. I nomi di file più lunghi sono spesso meglio gestiti con il flag -o anziché -O, che affronteremo a breve.

I lettori abituali possono ricordare che abbiamo usato il comando arricciatura -O quando spieghiamo come estrarre il vero contenuto audio da un file di streaming m3u.

L'inizio di qualsiasi download con arricciatura mostra la percentuale trasferita, il tempo impiegato per il download e il tempo rimanente e la velocità di trasferimento.

Lo screenshot offre una rappresentazione migliore dell'esempio incollato di seguito, ma assomiglia a questo:

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k

Con la velocità di trasferimento mostrata puoi reindirizzare l'output di curl a / dev / null e utilizzarlo per testare la velocità della connessione internet, ma il comando wget ha una barra di trasferimento più facile da leggere e seguire, quindi wget è più adatto per quel compito.

Salvataggio di un file remoto con un nome diverso con curl -o

L'utilizzo di un flag minuscolo -o consente di specificare un nome file diverso per il file scaricato rispetto al nome sul server remoto. Questo può essere utile per ridurre lunghi nomi di file o semplicemente etichettare qualcosa in modo che sia più facile trovarlo da solo. La sintassi generale sarebbe:

curl -o [shortname] [url]

Ad esempio, se si desidera salvare un file IPSW iOS che si trova elencato su server Apple senza il nome completo lungo, è possibile utilizzare quanto segue:

curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ipsw

Questo scaricherà il file "iPhone5, 3_7.0.4_11B554a_Restore.ipsw" ma lo chiamerà più corto come "iPhone5C-704.ipsw" più significativo.

Se preferisci non salvare il file nella directory di lavoro attuale, specifica un percorso come parte del nome del file in questo modo:

curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg

Download di più file contemporaneamente con arricciatura

cURL può facilmente scaricare più file allo stesso tempo, tutto ciò che devi fare è specificare più di un URL in questo modo:

curl -O [URL 1] [URL 2] [URL 3]

Per i file con nomi diversi o ospitati su server diversi o all'interno di percorsi di directory diversi, utilizzare l'URL completo, ad esempio:

curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/Licenses/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt

D'altra parte, se i nomi dei file da scaricare utilizzano la denominazione incrementale, è possibile utilizzare parentesi per specificare un intervallo di download, in questo modo:

curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1[1-3].txt

Questo porterebbe i file fdl-1.1.txt, fd1-1.2.txt e fd1-1.3.txt tutti allo stesso tempo senza dover specificare ogni URL univoco. Ovviamente questo funziona solo se i file si trovano nella stessa directory insieme e nello stesso dominio.

Autenticazione con arricciatura

Puoi anche passare l'autenticazione con cURL usando il flag -u:

curl -u user:pass -O ftp://remote_url/file-to-download.zip

Tieni presente che la cronologia di bash memorizzerà la password in testo normale quando si utilizza -u con un nome utente e una password specificati, pertanto non è consigliabile per la maggior parte delle situazioni. Puoi aggirare questo mettendo uno spazio di fronte al "curl". Se non si utilizza la barra spaziatrice per il prefisso del comando, è probabile che si desideri svuotare la cronologia dei comandi in un secondo momento per essere sicuri.

Protocolli e utilizzo supportati Oltre HTTP e FTP

Come accennato in precedenza, l'utilizzo di cURL va ben oltre HTTP e FTP, in quanto la pagina di manuale di arricciatura cita ulteriori protocolli nella descrizione:

arricciare è uno strumento per trasferire dati da o verso un server, usando uno dei
protocolli supportati (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP,
IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS,
TELNET e TFTP).

Inoltre, scoprirai che l'arricciatura può essere utilizzata anche per richieste PUT e POST, cookie, proxy, tunnel, riprendi download e persino acquisendo informazioni sull'intestazione HTTP o modificando un agente utente (efficacemente spoofing) senza la necessità di utilizzare un Web dedicato browser.

Come la maggior parte delle utilità della riga di comando, puoi imparare molto di più sul ricciolo evocando la pagina man appropriata con il comando 'man curl'.