Spesso abbiamo la necessità di spostare un sito o un progetto web tra due server o scaricarlo in locale. Per farlo, potremmo usare un comune client FTP e scaricare manualmente i file presenti sul server. Esiste però una via più comoda da utilizzare via shell di comando, utilizzando il comando unix wget .
Molto frequentemente uso questa procedura per scaricare un sito in produzione da una macchina di test. Insomma, è utile anche per effettuare lo spostamento di un progetto web tra due server remoti. È possibile farlo in vari modi, ma con wget l’operazione risulta particolarmente semplice.
Anatomia del comando
Vediamo la sintassi del comando:
wget -m ftp://USERNAME:PASSWORD@SERVER
Innanzitutto vediamo che è fondamentale usare l’opzione -m che dice al comando wget di prepararsi ad un’operazione di mirroring. Questo significa che wget applicherà automaticamente le seguenti opzioni:
- recursion, cioè scenderà in profondità in ogni directory che incontrerà
- timestamping, rispetterà la data di modifica dei file, cioè la riporterà sul nuovo server esattamente come l’ha trovata
- relative links, cioè seguirà i link simbolici all’interno del filesystem
- inf, cioè eseguirà infiniti tentativi di ricorsione
- –no-remove-listing, non cancellerà il file temporaneo .listing trovato sul server
Se ad esempio avessimo questi dati:
Username: admin
Password: 12345678 (non usatela davvero, per favore)
Server: ftp.miodominio.it
Il comando diventerebbe
wget -m ftp://admin:12345678@ftp.miodominio.it
Fatto. Vedrete a video il download di ogni singolo file.
Password con caratteri speciali
Se la password del server FTP contiene caratteri speciali, il comando potrebbe venire troncato e restituirvi un errore come questo:
Resolving admin... failed: nodename nor servname provided, or not known.
Come spesso accade nelle password auto-assegnate, alcuni caratteri vengono letti dall’interprete come “segni particolari” e non come semplici caratteri. Per risolvere questo problema è possibile usare la forma estesa del comando base. Ipotizziamo di avere un # tra i caratteri della password abcd#ef :
wget -m --password=abcd#ef ftp://admin@ftp.miodominio.it