Learning Center
Sistema: Linux

Come scaricare file con cURL

20 ott 2025
Emmanuel Oyibo
Emmanuel Oyibo

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.txt

Per 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.txt

Questo 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.txt

Qui, 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.jpg

Questo 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].jpg

cURL 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.jpg

Questo 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.zip

2M 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.iso

Qui, 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.jpg

Questo 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.com

L’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.jpg

Inserire 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.jpg

Sostituisci 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.jpg

Anche 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 --:--:-- --:--:-- --:--:--  2246

Questa 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.iso

Una 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.log

Qui, 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.