Utilizzo di cURL per scaricare file remoti dalla riga di comando
Sommario:
- Scarica i file Exact Match con curl -O
- Salvataggio di un file remoto con un nome diverso con curl -o
- Download di più file contemporaneamente a curl
Ai fini di questa procedura dettagliata, ci concentreremo principalmente sul download di file dai due protocolli HTTP e SFTP comunemente riscontrati, anche se va notato che cURL supporta molti più protocolli. Sebbene curl sia facile da usare, è consigliabile avere una certa conoscenza della riga di comando.
Scarica i file Exact Match con curl -O
L'uso del flag -O maiuscolo con curl scarica il file dal server remoto mantenendo il nome esatto del file, la sintassi di base per questo è la seguente:
curl -O
Ciò significa che se il file URL specificato è denominato "sample.zip" verrà scaricato con il nome file "sample.zip" e se il file ha un nome enorme e complicato come "LongExampleFileNameForOSXDaily-v- 1-3-51-revisione-515b12-leggimi.txt” sul server remoto, salverà con quel nome esatto sulla macchina locale. I nomi di file più lunghi sono spesso gestiti meglio con il flag -o piuttosto che con -O, di cui parleremo tra poco.
I lettori abituali ricorderanno che abbiamo usato il comando curl -O per spiegare come estrarre il contenuto audio effettivo da un file di streaming m3u.
L'inizio di qualsiasi download con curl 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 rispetto all'esempio incollato di seguito, ma è simile a questo:
% Totale % ricevuto % Xferd Velocità media Tempo Tempo Tempo Caricamento attuale Caricamento Totale speso Velocità sinistra 100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k
Con la visualizzazione della velocità di trasferimento puoi reindirizzare l'output di curl a /dev/null e usarlo per testare la velocità della connessione a Internet, ma il comando wget ha una barra di trasferimento più facile da leggere e seguire quindi wget è migliore adatto a quel compito.
Salvataggio di un file remoto con un nome diverso con curl -o
L'utilizzo di un flag -o in minuscolo ti consentirà di specificare un nome file diverso per il file scaricato rispetto a come è denominato sul server remoto. Questo può essere utile per ridurre i nomi dei file lunghi o semplicemente etichettare qualcosa in modo che sia più facile trovarli da soli. La sintassi generale sarebbe:
curl -o
Ad esempio, se desideri salvare un file IPSW iOS che hai trovato elencato sui server Apple senza avere il nome completo lungo, puoi 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 chiamato più breve come il più significativo "iPhone5C-704.ipsw".
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/esempio.dmg
Download di più file contemporaneamente a curl
cURL può facilmente scaricare più file contemporaneamente, tutto ciò che devi fare è specificare più di un URL in questo modo:
curl -O
Per 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 nomi incrementali, è possibile utilizzare le parentesi per specificare un intervallo di download, in questo modo:
curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1.txt
Questo catturerebbe i file fdl-1.1.txt, fd1-1.2.txt e fd1-1.3.txt tutti contemporaneamente senza dover specificare ciascun URL univoco. Naturalmente questo funziona solo se i file sono nella stessa directory insieme e nello stesso dominio.
Autenticazione con curl
Puoi anche passare l'autenticazione con cURL usando il flag -u:
curl -u utente:pass -O ftp://url_remoto/file-da-scaricare.zip
Tenere a mente che la cronologia di bash memorizzerà la password in testo semplice quando si usa -u con un nome utente e una password specificati, quindi questo non è raccomandato per la maggior parte delle situazioni. Puoi aggirare il problema mettendo uno spazio davanti a "arricciatura".Se non usi la barra spaziatrice come prefisso del comando, probabilmente vorrai svuotare la cronologia dei comandi per sicurezza.
Protocolli curl supportati e utilizzo oltre HTTP e FTP
Come accennato in precedenza, l'utilizzo di cURL va ben oltre HTTP e FTP, poiché la voce della pagina manuale di curl menziona protocolli aggiuntivi nella descrizione:
Inoltre, scoprirai che curl può essere utilizzato anche per richieste PUT e POST, cookie, proxy, tunnel, riprendere i download e persino acquisire informazioni di intestazione HTTP o modificare un agente utente (spoofing efficace) senza la necessità di utilizzare un browser Web dedicato.
Come la maggior parte delle utility a riga di comando, puoi imparare molto di più su curl richiamando la pagina man appropriata con il comando 'man curl'.
