Download ricorsivo via FTP da riga di comando

Capita spesso di dover effettuare il download dell’intera alberatura di una directory da un server (o da un hosting web) via ftp. L’operazione può diventare molto articolata, sopratutto se non si ha la possibilità di effettuare alcuna operazione di archiviazione (tar, zip…). La situazione poi peggiora se non si ha a disposizione un client ftp grafico. Ma vediamo come fare.

Il sistema a mio parere più semplice è utilizzare Wget.

Solitamente questo gestore di download è già installato in molte distribuzioni linux, eventualmente potete installarlo rapidamente (senza troppi problemi) tramite il vostro gestore di pacchetti. Per i più pigri però vi basterà digitare nella vostra shell:
su Ubuntu

apt-get install wget

su Fedora\Centos\RHEL

yum install wget

Adesso, magicamente, possiamo effettuare il download, di tutta una directory e della sua alberatura via FTP

wget -r --level=0 ftp://username:password@host/directory/da/scaricare/

Le opzioni -r e --level=x ci permettono, rispettivamente, di abilitare il download ricorsivo e di specificare la “profondità” a cui wget deve “scavare”.
Spiego meglio: se sotto la cartella da scaricare ci sono altri 4 livelli di alberatura (/dir1/dir2/dir3/dir4), possiamo specificare se andare a scaricare tutta l’alberatura (--level=0) o fermarci al secondo livello (--level=2).
Inutile spendere parole sulla parte username, password e “/directory/da/scaricare/“.

Eventualmente possiamo lanciare il comando in background, e in maniera che resti sempre in esecuzione fino alla sua fine, anche se viene terminata la sessione ssh corrente o viene effettuato il logout dall’utenza correte, effettuando anche il log dell’operazione. Il comando quindi si arrichisce del nohup:

nohup wget -r --level=0 ftp://username:password@host/directory/da/scaricare/ > ./file.log 2>&1 &

L’aggiunta di > ./file.log 2>&1 permette di reindirizzare lo standard output, STDOUT, verso un file a nostra scelta, e lo standard error, STDERR, verso lo standard output (che a sua volta è reindirizzato su un file). Ovviamente possiamo reindirizzare lo STDERR verso un file diverso, o verso “il nulla” (2>/dev/null).
La e commerciale alla fine del comando lancia il comando direttamente in background

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *