TECHTARGET

cURL e Wget per scaricare file di rete: a cosa servono e come funzionano

cURL e Wget sono comandi di programmazione che permettono di caricare o scaricare file. Sebbene molti utenti preferiscano uno strumento rispetto all’altro, ognuno ha i suoi punti di forza e di debolezza, presentati in questa guida

Pubblicato il 14 Dic 2023

cURL e Wget per scaricare file di rete: a cosa servono e come funzionano

cURL e Wget sono due strumenti da riga di comando molto importanti nella programmazione.

  • L’URL del client (cURL) è un comando che consente lo scambio di dati tra un dispositivo e un server tramite un terminale. La parte url del nome suggerisce correttamente che il comando è creato per individuare i dati tramite l’URL (Uniform Resource Locator) fornito. Utilizzando questa interfaccia a riga di comando (CLI), un utente specifica un URL del server (la posizione in cui desidera inviare una richiesta) e i dati che desidera inviare a tale URL del server. cURL non comunica solo con i server web. Supporta un’ampia varietà di protocolli, tra cui HTTP, HTTPS, FTP, FTPS, SCP, SFTP e altro.
  • Wget (crasi di World Wide Web e della parola get) è un’utility di comando per scaricare file dal web creata dal progetto GNU per recuperare contenuti e file da vari server web che supporta download tramite FTP, SFTP, HTTP e HTTPS. Il comando wget, sebbene simile in qualche modo a cURL, supporta principalmente i protocolli HTTP e FTP.

Entrambi i due tipi di comando consentono di scaricare i file di rete dalla CLI (Command Line Interface) ma mentre cURL utilizza una licenza simile alla licenza MIT ed è un software gratuito e open source, Wget è un’utility GNU che fa riferimento alla GNU General Public License.

In questo articolo gli esperti analizzano i comandi cURL e Wget:

  • condividendo alcuni esempi di sintassi
  • suggerendo casi d’uso
  • evidenziando i vantaggi di ciascuno

cURL e Wget: perché conoscerli e come utilizzarli

La premessa di contesto è che il processo per visualizzare le pagine Web consiste nello scaricare file che un browser interpreta. Da questo punto di vista, l’HTTP è solo un’altra funzione di trasferimento file, come l’FTP. I browser Web, infatti, non sono gli unici strumenti che utilizzano gli HTTP (HyperText Transfer Protocol) per scaricare file. Esistono tool di comando, come cURL e Wget, che possono scaricare risorse come immagini VM, file di configurazione e aggiornamenti, supportando trasferimenti di file simili da server Web o altri sistemi remoti. Questi comandi si trovano principalmente su sistemi Linux, ma gli amministratori di rete possono anche farne uso su Windows e macOS.

Quali sono i vantaggi di utilizzare cURL e Wget

cURL include i seguenti vantaggi:

  • Supporta molti protocolli
  • Disponibile per molte piattaforme
  • Trasferisce i file in modalità up and down
  • Supporta le opzioni di compressione

Wget include i seguenti vantaggi:

  • Download veloce e affidabile: con Linux Wget è possibile scaricare file molto più velocemente dei browser perché utilizza più connessioni simultanee. Può anche riprendere i download interrotti a causa di problemi di rete.
  • Affidabilità: Wget continua in modo affidabile i download parziali dopo interruzioni e disconnessioni di rete durante il download di un file.
  • Script e pianificazione: può essere facilmente programmato e usato nei processi cron (quelli in background che eseguono lavori non interattivi – NdR) per i download non presidiati. Ciò consente di automatizzare download in batch di grandi dimensioni che da eseguire manualmente sarebbero estremamente noiosi.
  • Download ricorsivo: può scaricare ricorsivamente il contenuto della pagina Web ed eseguire facilmente il mirroring di interi siti Web. Ciò lo rende utile per il backup e l’archiviazione dei siti Web.
  • Limitazione della larghezza di banda: consente di limitare l’utilizzo della larghezza di banda dei download, il che è utile quando si vuole evitare di saturare la connessione di rete e causare a tutti un rallentamento dei download.
  • Autenticazione: supporta anche l’autenticazione con nome utente e password per scaricare contenuti protetti sul web.
  • Personalizzazione: è altamente personalizzabile con molte opzioni disponibili per scenari di utilizzo avanzati che potrebbero non essere possibili con un browser Internet.

cURL: che cos’è e a cosa serve

Il comando URL client (cURL) è flessibile e consente trasferimenti di file da e verso sistemi remoti utilizzando un’ampia varietà di protocolli. Prima di esaminarne la sintassi di base, ecco le indicazioni di installazione.

Installare cURL

Molte distribuzioni Linux vengono fornite già con la preinstallazione di cURL ma, se non è così, basta utilizzare il gestore pacchetti del sistema per aggiungerlo.

Su Red Hat e distribuzioni simili, utilizzare il seguente comando:

dnf install curl

Gli utenti delle distribuzioni derivate da Debian possono eseguire il seguente comando:

apt install curl

La maggior parte dei Mac dispone già di cURL, ma gli utenti possono aggiungerlo o aggiornarlo con Brew digitando il seguente comando:

brew install curl

Gli utenti Windows possono aggiungere cURL ai propri sistemi eseguendo le build, tenendo conto che Windows 10 e 11 includono già cURL. Se cURL non è installato per impostazione predefinita, alcuni potrebbero anche dover aggiungere la libreria libcURL a questi sistemi.

Sintassi di base del cURL

La maggior parte degli utenti della riga di comando ha familiarità con la sintassi di base di cURL.

curl -options /path/to/file

Il protocollo predefinito è HTTP, ma gli utenti possono anche specificare un protocollo.

Scaricare un file utilizzando cURL

Le due opzioni principali per il download di file utilizzando il comando curl sono -o e -O:

  • l’opzione -o salva il file in una posizione specificata dagli utenti con un nome determinato
  • l’opzione -O salva il file nella posizione attuale utilizzando il nome corrente del file

Ad esempio, supponiamo che un utente desideri scaricare un file denominato project.pdf da un sito Web fittizio chiamato project-products.com. Il PDF è archiviato in una cartella denominata 2023.

curl -O http://projectproducts.com/2023/projects.pdf

CURL scarica il file nella directory di lavoro attuale dell’utente – digita il comando pwd per verificare la posizione – e lo denomina progetti.pdf. Tuttavia, l’utente può rinominare il file durante il trasferimento e inserirlo in una directory specifica utilizzando l’opzione -o.

curl -o /home/utente/goals/new-projects.pdf http://project-products.com/2023/projects.pdf

Probabilmente gli utenti desiderano scaricare più di un file da questo sito. Supponiamo che un utente abbia lo scenario originale ma debba prendere due PDF invece di progetti.pdf.

Il comando potrebbe essere simile al seguente:

curl -O http://project-products.com/2023/projects1.pdf -O http://project-products.com/2023/projects2.pdf

Uno dei punti di forza di cURL è l’ampia varietà di protocolli supportati. L’FTP è più efficiente nel trasferire file di grandi dimensioni, ecco perché alcuni utenti preferiscono utilizzarlo al posto dell’HTTP. Per farlo, basta specificare il protocollo nel percorso con il seguente comando:

curl -u username:password -O ftp://project-products.com/2023/projects.pdf

L’FTP potrebbe richiedere l’autenticazione e, per questo motivo, è si deve usare l’opzione -u per specificare un nome utente e una password riconosciuti dal sistema remoto.

Caricare un file con cURL

Gli utenti possono anche caricare file in una posizione remota con cURL. Ciò potrebbe essere utile con file di registro o altri trasferimenti. L’ opzione -d identifica il trasferimento come trasferimento HTTP POST. Bisogna prima aggiungere il percorso locale al file inviato al server remoto e poi l’indirizzo del server remoto. Il seguente comando invia progetti.pdf alla directory specificata sul server HTTP:

curl -d @projects.pdf http://project-products.com/uploads

Utilizzare la stessa sintassi per un caricamento FTP ma modifica il protocollo, come mostrato qui:

curl -d @projects.pdf ftp://project-products.com/uploads

Opzioni cURL aggiuntive

cURL è uno strumento flessibile che ha molte opzioni per soddisfare le esigenze degli utenti. Tra gli esempi di funzionalità meno comuni si segnala l’opzione –compressed, la quale richiede che il trasferimento venga compresso all’origine e decompresso alla destinazione. Quando la larghezza di banda è limitata questa opzione è la scelta migliore.

L’opzione -C va utilizzata per riprendere un trasferimento di file che è stato interrotto da una rete, da un’interruzione di corrente e via dicendo. Questa opzione, infatti, continua il trasferimento utilizzando il nome del file esistente anziché duplicarlo.

cURL: esempi applicativi

I trasferimenti manuali di file, come quelli descritti sopra, sono sicuramente un’opzione ma bisogna immaginare tutto il potenziale di aggiungere il comando cURL a uno script.

Ad esempio, si prenda il caso di un processo di sviluppo orchestrato che include build notturne automatizzate presso la sede centrale che devono essere trasferite in uffici remoti. Uno script basato su comandi curl potrebbe semplificare questo processo. Un altro caso d’uso riguarda le immagini VM che devono essere distribuite ad altri siti. O anche i server remoti devono trasferire file di registro o altri dati in un repository di archiviazione centrale presso la sede centrale. cURL è un’opzione anche per questi scenari.

cURL e Wget legenda

Cos’è Wget?

L’utility Wget ha uno scopo più specifico rispetto a cURL, in quanto pensato per scaricare file da server web utilizzando i protocolli più comuni: HTTP, HTTPS, FTP e FTPS. Usando Wget gli utenti possono recuperare singoli file, gruppi di file o persino archivi tar.

Installare Wget

È meno probabile che Wget sia preinstallato su un sistema Linux rispetto a cURL. Nemmeno Windows e macOS lo includono per impostazione predefinita. È facile aggiungere Wget a queste e ad altre piattaforme. Su un computer Linux, utilizzare il gestore pacchetti del sistema per aggiungere Wget.

Su Red Hat e distribuzioni simili, utilizzare il seguente comando:

dnf install wget

Gli utenti delle distribuzioni derivate da Debian possono invece digitare il seguente comando:

apt install wget

Aggiungere o aggiornare Wget su un Mac utilizzando Brew digitando quanto segue:

brew install wget

Gli utenti Windows scaricano il file eseguibile Wget (wget.exe). Per eseguire l’applicazione, tuttavia, bisogna posizionare Wget in una cartella a scelta e aggiungerla alla variabile di ambiente PATH. Un’altra alternativa è inserirlo nella directory C:\Windows\System32, sebbene questa non sia considerata una procedura consigliabile.

Sintassi di base del comando Wget

Iniziamo con il semplice obiettivo di scaricare un file da un sito Web, magari l’ultima versione di un’applicazione, un’immagine VM, un Dockerfile, un file di configurazione o un archivio. Attualmente, molti fornitori rendono disponibile la versione più recente dei loro prodotti tramite un semplice download lungo un percorso coerente. La sintassi è la seguente:

command -options path

Un download di base da un sito fittizio è simile al seguente:

wget http://project-products.com/2023/projects.pdf

Wget scarica il PDF nella directory corrente.

Per impostazione predefinita, Wget estrae i file dall’URL specifico e li inserisce nella directory di lavoro corrente. Gli utenti possono specificare una posizione di destinazione diversa utilizzando l’opzione -P seguita dalla cartella in cui archiviare il file scaricato. Ad esempio, per recuperare un file da un sito e inserirlo nella directory /projects/updates, digitare quanto segue:

wget -P /projects/updates http://project-products.com/2023/projects.pdf

Questa opzione semplifica il monitoraggio del contenuto dei file recuperati quando i fornitori utilizzano nomi generici, come lastest.doc o current.zip, per le loro risorse.

Una funzionalità Wget particolarmente utile è la possibilità di specificare più siti di destinazione in un file di testo. Wget può quindi elaborare il file e acquisire le risorse da ciascun sito. Utilizzare l’opzione -i per designare il file di input.

Il contenuto del file di testo retrieve-resources.txt potrebbe essere simile al seguente:

Utilizzare il comando seguente per fare riferimento al file e scaricare le risorse specificate:

wget -i retrieve-resources.txt

Usare Wget con FTP

Sebbene il protocollo presupposto sia HTTP o HTTPS, gli utenti possono specificare FTP per connettersi ai server FTP per il download dei file. Ricordiamo che l’FTP richiede una sorta di autenticazione, quindi gli utenti devono fornire un nome utente e una password riconosciuti dal server FTP remoto, come mostrato qui:

wget –ftp-user=NOME –ftp-password=PASSWORD ftp://project-products/2023/projects.pdf

Fare attenzione a inserire informazioni sensibili di autenticazione in un file di testo. È bene prestare attenzione alle opzioni prima di chiamare i download FTP nei file di testo utilizzando l’opzione -i menzionata sopra.

Uno dei punti di forza di Wget è la sua potenza e flessibilità nel recuperare file in modo ricorsivo dal server web di origine. Ha molte opzioni e combinazioni di bandiere. Il comando ricorsivo di base -r è riportato di seguito: supponiamo che la directory 2023 contenga molti file:

wget -r http://project-products.com/2023/

Probabilmente gli utenti vorranno aggiungere l’opzione -np, altrimenti Wget scaricherà la directory principale e i suoi contenuti. Modificare il comando precedente nel seguente:

wget -np -r http://project-products.com/2023/

Esistono opzioni aggiuntive per specificare il livello di recupero ricorsivo o il numero di sottodirectory da recuperare. Altri flag consentono agli utenti di escludere i file che non desiderano scaricare.

cURL e Wget legenda

Opzioni Wget aggiuntive

Gli utenti potrebbero trovare utili le seguenti opzioni aggiuntive in casi specifici. Gli esperti consigliano di impostare il trasferimento file Wget in modo che venga eseguito in background utilizzando l’opzione -b. Se si tratta di un download che richiede molto tempo, è opportuno controllare il file di registro con il secondo comando mostrato di seguito:

wget -b http://project-products.com/2023/vm-image-lastest.iso
tail -f wget -log

Wget è un’utilità più vecchia che risale ai tempi i cui le connessioni di rete erano meno affidabili, a cui si deve la sua caratteristica di avere la capacità di riprovare i tentativi di download interrotti. Il valore predefinito dei tentativi è 20, ma gli utenti possono modificare questo valore con l’opzione –tries= e impostarlo su 0, inf (infinito) o qualsiasi altra via di mezzo, come visto qui:

wget –tries=42 http://project-products.com/2023/projects.pdf

Allo stesso modo, utilizzare l’opzione -c per continuare i download interrotti. Se è necessario riavviare un download a causa di un’interruzione, al nome del nuovo file verrà aggiunto .1 perché il file originale tentato esiste già.

wget -c http://project-products.com/2023/ vm-image-lastest.iso

Un’altra preoccupazione relativa ai file di grandi dimensioni è il controllo del consumo di larghezza di banda. Gli esperti suggeriscono di impostare Wget in modo che consumi solo una parte della larghezza di banda disponibile utilizzando l’opzione –limit-rate=. Un limite di 750 KB è simile al seguente:

wget –limit-rate=750k http://project-products.com/2023/ vm-image-lastest.iso

Esistono varie altre opzioni di Wget, ma queste dovrebbero essere sufficienti per iniziare.

cURL e Wget: casi d’uso comuni

Sia cURL che Wget sono utili per i trasferimenti di file, ma esistono altri casi d’uso che includono:

  • Scaricare l’immagine più recente di contenitori o VM.
  • Scaricare immagini ISO del sistema operativo specifiche.
  • Scaricare pacchetti software, come Microsoft .msi, Brew .sh o Linux .rpm/.deb.
  • Scaricare i file di configurazione da un repository centrale.
  • Eseguire il mirroring di siti Web importanti per reti isolate o con air gap.
  • Caricare, nel caso di cURL, uno qualsiasi degli esempi precedenti su server di destinazione remoti

Ognuno di questi esempi potrebbe utilizzare un server Web pubblico basato su Internet come origine o un server Web privato interno. In altre parole, gli utenti possono facilmente integrare cURL o Wget nel sistema di distribuzione dei file della propria organizzazione.

Conclusione

Riassumendo, i punti chiave di una messa a confronto tra cURL e Wget:

  • CURL utilizza più protocolli e supporta più piattaforme host rispetto a Wget
  • CURL carica e scarica risorse, mentre Wget scarica principalmente file
  • Wget è un semplice eseguibile sul sistema, mentre cURL è un’applicazione più completa con una libreria di supporto
  • Wget carica solo utilizzando una funzionalità HTTP POST limitata, mentre cURL è una scelta migliore per inviare file in posizioni remote
  • La capacità di Wget di recuperare risorse in modo ricorsivo è vantaggiosa ed è una cosa che cURL non ha
  • Wget è più orientato al recupero di pagine Web o siti Web, mentre cURL è uno strumento di trasferimento file multifunzionale.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 4