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
Il potente strumento da riga di comando curl può essere utilizzato per scaricare file da quasi tutti i server remoti. Gli utenti di lunga data della riga di comando sanno che questo può essere utile per un'ampia varietà di situazioni, ma per semplificare le cose, molti scopriranno che il download di un file con curl può spesso essere un' alternativa più rapida all'utilizzo di un browser Web o di un client FTP dal lato della GUI di Mac OS X (o Linux).Questo è utile per le situazioni locali, ma ha un valore particolare se ti trovi in una situazione in cui devi scaricare qualcosa su un Mac remoto quando sei connesso tramite SSH.
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'.