Come eseguire un backup FTP con wget

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:

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

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:

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 :