Tutorial

Utilizzare curl sul Mac per scaricare file (alternativa a wget)

Il comando wget di Linux permette, come sappiamo, di scaricare file da remoto e salvarli sul proprio computer: questa istruzione non è tuttavia presente all’interno dei sistemi operativi Apple, per cui va sostituita con il comando denominato curl.

Sintassi

La sintassi di curl è una delle seguenti:

curl 'url'
curl [opzioni] 'url'
curl -O 'url'
curl -L -O 'url'
curl -o inserire.il.nome.file.qui 'url'
curl -o guida-sicurezza.pdf 'https://blog.keliweb.it/wp-content/uploads/2013/05/guida-completa-sicurezza-sito.pdf'

dove, in sostanza, come istruzione base andiamo ad associare al comando l’URL da cui scaricare il file pubblico, con eventuali opzioni (-o per scrivere l’output su file, -L per specificare dove salvare in locale, -O per preservare percorso e nome originale del file). Come possiamo vedere da questo ed i successivi esempi, possiamo agire con la massima flessibilità, dato che è possibile cambiare il nome o il path del file, e salvarlo ad esempio con uno a nostra scelta. La cartella di download sarà, se non diversamente specificato, la medesima da cui – da terminale di comando – andremo ad eseguire l’istruzione in questione.

Ricordiamo inoltre che è necessario preventivamente aprire una finestra del terminale del vostro Mac, e digitare il comando che ci serve al suo interno.

Esempi

Download base

Se ad esempio diamo questo comando, andremo a scaricare la FAQ in PDF sulla sicurezza dei vostri siti:

curl -o guida-sicurezza.pdf 'https://blog.keliweb.it/wp-content/uploads/2013/05/guida-completa-sicurezza-sito.pdf'

In tal caso l’output sarà in seguente (salverà in locale nella cartella in cui stiamo lanciando il comando):

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  617k  100  617k    0     0   441k      0  0:00:01  0:00:01 --:--:--  642k

ovvero informazioni tabellari relative alla percentuale di completamento, percentuale di file ricevuta, ammontare di byte uploadati (Xferd), velocità media, velocità di upload, tempo necessario in totale, tempo trascorso, tempo residuo di scaricamento e velocità istantanea del download.

 

Download avanzato per pattern di file

È altresì possibile andare ad indicare parte di URL multipli, come nell’esempio seguente:

# scarica file da host1.server.com, host2.server.com, host3.server.com
curl -O http://host{1,2,3}.server.com/

# scarica file da server1.com,server2.com,server3.com per i file di nome test.pdf
curl -O http://server{1,2,3}.server.com/test.pdf

# altro esempio con maschera di file
curl -O ftp://intranet.site.{us,uk,in}.lic.net.in/reports/latest[a-z].tar.gz

Scaricare più di un file alla volta

Un altro esempio (rispettivamente per file pdf e png) potrebbe essere, con l’uso di espressioni regolari:

curl -O ftp://ftp.server.com/filenumerato-[1-1000].pdf
curl -O ftp://ftp.server.com/images-[001-300].png

il che ci porta ad esempi decisamente più elaborati:

curl -O ftp://ftp.server.com/backups-us-[a-z].tar.gz
curl -O http://server1.server.com/music[2003-2013]/archivio[1-20]/backup{a,b,c,d,e,f}.tar.gz

Mostrare una barra di download

Per il download di molti file di grosse dimensioni, possiamo decidere di mostrare una barra di caricamento con il parametro -#:

curl -# -O http://www.server.com/files/documento-abc.pdf

che mostrerà qualcosa del genere nel terminale:

######################################################################## 100.0%

Scaricare da un server con redirect 301 / con parametri

Nel caso in cui il server da cui stiamo scaricando preveda redirect 301, parametri via URL e simili, possiamo utilizzare l’opzione -L come esemplificato di seguito:

curl -L -o 'filezilla.tar.bz2' 'http://downloads.sourceforge.net/project/filezilla/FileZilla_Client/3.7.3/FileZilla_3.7.3_i686-apple-darwin9.app.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2F&ts=1381651492&use_mirror=ncu'

il quale salva FileZilla in locale come filezilla.tar.bz2 dall’URL “non convenzionale” indicato.

Un output di esempio (seguito dal comando ls che serve a mostrare come il file sia effettivamente stato scaricato in locale) potrebbe essere il seguente:

SC-Macbook:~ utente34$ curl -L -o 'filezilla.tar.bz2' 'http://downloads.sourceforge.net/project/filezilla/FileZilla_Client/3.7.3/FileZilla_3.7.3_i686-apple-darwin9.app.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2F&ts=1381651492&use_mirror=ncu'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 5512k  100 5512k    0     0   645k      0  0:00:08  0:00:08 --:--:--  809k

SC-Macbook:~ utente34$ ls
Applications		Library			filezilla.tar.bz2
Desktop			Movies			guida-sicurezza.pdf
Documents		Music			log
Downloads		Pictures		portprofile.log
Dropbox			Public
Google Drive		Sites

Scaricare più rapidamente

Per scaricare un file in modalità compressa per risparmiare banda, ammesso che il server lo supporti, potete ricorrere a:

curl -L -O --compressed 'http://host.server.com/file-molto-grosso.html'

Scaricare con username / password

Infine se il server richiedesse delle credenziali di accesso, potete ricorrere ad una prima modalità (insicura, sconsigliata) ed una seconda più solida dal punto di vista della sicurezza. In entrambi i casi dovrete conoscere username e password per accedere al sistema.

# Esempi con connessione in chiaro SCONSIGLIATI!
curl ftp://username:password@ftp.server.com:21/path/al/file.tar.gz
curl http://username:password@ftp.server.com/path/al/file.tar.gz

# Esempi con connessione protetta SSL / STP - CONSIGLIATI
curl --ftp-ssl -u username:password ftp://ftp.server.com:21/path/al/file.tar.gz
curl -u username sftp://ftp.server.com:21/path/al/file.tar.gz

Ovviamente il presupposto per l’uso di queste istruzioni è quello di conoscere il path dei file sul server destinazione.

Lascia un commento

Back to top button