Come scaricare file con cURL
Il download di contenuti da server remoti è un’attività comune sia per gli amministratori che per gli sviluppatori. Sebbene esistano numerosi strumenti per questo compito, cURL si distingue per la sua flessibilità e semplicità. È un’utilità da riga di comando che supporta protocolli come HTTP, HTTPS, FTP e SFTP, rendendola fondamentale per l’automazione, la creazione di script e il trasferimento efficiente dei file.
Puoi eseguire cURL direttamente sul tuo computer per scaricare file. Puoi anche integrarlo negli script per semplificare la gestione dei dati, riducendo così il lavoro manuale e gli errori. Questa guida mostra diversi modi per scaricare file con cURL. Seguendo questi esempi, imparerai a gestire i reindirizzamenti, rinominare i file e monitorare l’avanzamento dei download. Alla fine, sarai in grado di utilizzare cURL con sicurezza per le attività su server o ambienti cloud.
Comando di base cURL per scaricare file Copia link
Il comando curl funziona con più protocolli, ma viene utilizzato principalmente con HTTP e HTTPS per connettersi ai server web. All’occorrenza può anche interagire con server FTP o SFTP.
Per impostazione predefinita, cURL recupera una risorsa da un URL specificato e la visualizza nel terminale (output standard). Questo è utile per visualizzare il contenuto di un file senza salvarlo, soprattutto se si tratta di un piccolo file di testo.
Esempio: per visualizzare il contenuto di un file di testo ospitato su https://example.com/file.txt, esegui:
curl https://example.com/file.txtPer documenti di testo brevi questo approccio va bene. Tuttavia, file di grandi dimensioni o binari possono riempire lo schermo di dati illeggibili, quindi di solito è preferibile salvarli.
Salvare file remoti Copia link
Spesso, l’obiettivo principale è salvare il file scaricato sul computer locale anziché visualizzarlo nel terminale. cURL semplifica questo con l’opzione -O (O maiuscola), che conserva il nome originale del file remoto.
curl -O https://example.com/file.txtQuesto scarica file.txt e lo salva nella directory corrente con lo stesso nome. Questo metodo è rapido e mantiene il nome esistente, utile se il nome del file ha un significato specifico.
Scegliere un nome di file diverso Copia link
A volte è importante rinominare il file scaricato per evitare conflitti o creare una convenzione di nomi chiara. In questo caso, usa l’opzione -o (o minuscola):
curl -o miofile.txt https://example.com/file.txtQui, cURL scarica il file remoto file.txt ma lo salva localmente come miofile.txt. Questo aiuta a mantenere i file organizzati e a evitare sovrascritture accidentali. È particolarmente utile negli script che richiedono nomi di file descrittivi.
Seguire i reindirizzamenti Copia link
Quando si richiede un file, i server possono istruire il client a passare a un altro URL. Comprendere e gestire i reindirizzamenti è fondamentale per completare correttamente i download.
Perché i reindirizzamenti sono importanti Copia link
I reindirizzamenti sono comunemente utilizzati per siti web riorganizzati, file spostati o mirror. Senza il supporto per i reindirizzamenti, cURL si ferma dopo aver ricevuto una risposta “spostato” e non otterrai il file.
Usare -L o --location Copia link
Per indicare a cURL di seguire una catena di reindirizzamenti fino alla destinazione finale, utilizza -L (o --location):
curl -L -O https://example.com/redirected-file.jpgQuesto consente a cURL di recuperare il file corretto anche se l’URL originale punta altrove. Se ometti -L, cURL mostrerà semplicemente il messaggio di reindirizzamento e terminerà, il che può essere un problema su siti con più reindirizzamenti.
Scaricare più file Copia link
cURL può anche gestire più download contemporaneamente, evitando di dover eseguire ripetutamente il comando.
Utilizzare parentesi graffe e modelli Copia link
Se i nomi dei file condividono un modello, le parentesi graffe {} consentono di specificare ciascun nome in modo conciso:
curl -O https://example.com/files/{file1.jpg,file2.jpg,file3.jpg}cURL scarica ogni file in sequenza, rendendolo utile per i flussi di lavoro automatizzati.
Usare intervalli Copia link
Per una serie di file numerati o etichettati alfabeticamente, specifica un intervallo tra parentesi quadre:
curl -O https://example.com/files/file[1-5].jpgcURL itera automaticamente tra i file file1.jpg e file5.jpg. È ideale per sequenze di file con nomi coerenti.
Collegare più download Copia link
Se hai URL diversi per ciascun file, puoi concatenarli:
curl -O https://example1.com/file1.jpg -O https://example2.com/file2.jpgQuesto approccio scarica file1.jpg dal primo sito e file2.jpg dal secondo senza dover eseguire più comandi.
Limitazione della velocità e timeout Copia link
In alcune situazioni, potresti voler controllare la velocità di download o evitare che cURL attenda troppo a lungo un server non reattivo.
Controllo della larghezza di banda Copia link
Per evitare di sovraccaricare la rete o simulare condizioni lente, limita la velocità di download con --limit-rate:
curl --limit-rate 2M -O https://example.com/bigfile.zip2M indica 2 megabyte al secondo. Puoi anche usare K per kilobyte o G per gigabyte.
Timeout Copia link
Se un server è troppo lento, puoi chiedere a cURL di interrompere l’operazione dopo un determinato periodo. L’opzione --max-time serve proprio a questo:
curl --max-time 60 -O https://example.com/file.isoQui, cURL si interrompe dopo 60 secondi, utile negli script che necessitano di un fallimento rapido.
Modalità silenziosa e dettagliata Copia link
cURL può adattare la sua uscita per mostrare informazioni minime o dettagli estesi.
Download silenziosi Copia link
Per attività automatiche o cron job in cui non hai bisogno della barra di avanzamento, includi -s (o --silent):
curl -s -O https://example.com/file.jpgQuesto nasconde il progresso e gli errori, utile per log più puliti. Tuttavia, è più difficile eseguire il debug se si verifica un errore silenzioso.
Modalità dettagliata Copia link
Al contrario, -v (o --verbose) mostra informazioni dettagliate sulle richieste e risposte:
curl -v https://example.comL’output dettagliato è prezioso per risolvere problemi come certificati SSL non validi o reindirizzamenti errati.
Autenticazione e sicurezza Copia link
Alcuni download richiedono credenziali o una connessione sicura.
Autenticazione HTTP/FTP Copia link
Quando un server richiede un nome utente e una password, usa -u:
curl -u username:password -O https://example.com/protected/file.jpgInserire direttamente le credenziali può essere rischioso, poiché potrebbero apparire nei log o nei processi. Prendi in considerazione l’uso di variabili d’ambiente o file .netrc per una gestione più sicura.
HTTPS e certificati Copia link
Per impostazione predefinita, cURL verifica i certificati SSL. Se il certificato non è valido, cURL blocca il trasferimento. Puoi ignorare questo controllo con -k o --insecure, anche se ciò comporta rischi per la sicurezza. Quando possibile, utilizza un’autorità di certificazione affidabile per mantenere connessioni autenticate.
Uso di un proxy Copia link
In alcuni ambienti, il traffico deve passare attraverso un server proxy prima di raggiungere la destinazione.
Scaricare tramite proxy Copia link
Usa l’opzione -x o --proxy per specificare il proxy:
curl -x http://proxy_host:proxy_port -O https://example.com/file.jpgSostituisci proxy_host e proxy_port con i dati appropriati. cURL inoltra la richiesta al proxy, che poi recupera il file per tuo conto.
Autenticazione proxy Copia link
Se il proxy richiede credenziali, includile nell’URL:
curl -x https://proxy.example.com:8080 -U mioutente:miapassword -O https://example.com/file.jpgAnche in questo caso, archiviare dati sensibili in testo normale è pericoloso. È meglio usare variabili d’ambiente o file di configurazione.
Monitorare l’avanzamento del download Copia link
Monitorare l’avanzamento del download è importante per file di grandi dimensioni o connessioni lente.
Indicatore di avanzamento predefinito Copia link
Per impostazione predefinita, cURL mostra un indicatore di avanzamento che include dimensione totale, velocità di trasferimento e tempo stimato di completamento. Ad esempio:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1256 100 1256 0 0 2243 0 --:--:-- --:--:-- --:--:-- 2246Questa visualizzazione ti aiuta a stimare quanto manca e se la velocità di trasferimento è adeguata.
Barra di avanzamento compatta Copia link
Se vuoi meno dettagli, aggiungi -#:
curl -# -O https://example.com/largefile.isoUna barra più semplice mostra l’avanzamento complessivo in percentuale. È più leggibile ma non include statistiche dettagliate come la velocità attuale.
Registrare l’avanzamento negli script Copia link
Quando utilizzi cURL all’interno di script, potresti voler registrare i dati sull’avanzamento. Normalmente, cURL invia queste informazioni a stderr, quindi puoi reindirizzarle:
curl -# -O https://example.com/largefile.iso 2>progress.logQui, progress.log contiene gli aggiornamenti di stato che puoi analizzare o salvare per revisioni future.
Conclusione Copia link
cURL si distingue come uno strumento da riga di comando flessibile per scaricare file tramite diversi protocolli e ambienti. Che tu debba gestire reindirizzamenti complessi, rinominare file al volo o limitare la larghezza di banda, cURL offre tutte le opzioni necessarie. Padroneggiando i suoi principali parametri e modalità, potrai integrare cURL senza problemi nel tuo flusso di lavoro quotidiano per scripting, automazione e trasferimenti di file più efficienti.