devdev / in the loop

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:

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

 

Questo articolo ti è stato utile?
Server – LETTURA 7 MINUTI Il comando du, esempi e flag
Il comando du è uno standard Linux/Unix (e Mac) che ci permette di ottenere informazioni su file e cartelle in…
Server – LETTURA 5 MINUTI rsync: come escludere file e cartelle
Rsync (Remote sync) è uno strumento molto potente per poter sincronizzare due cartelle, e per poter effettuare backup incrementali. In…
Server – LETTURA 4 MINUTI Come bloccare un IP con .htaccess
Bloccare l’accesso ad un sito può essere utile per vari motivi: bloccare script malevoli, proteggersi dagli stalker o da quegli…
Server – LETTURA 12 MINUTI Che cos’è la High Availability
In questi anni stiamo vedendo un incremento verticale delle strutture ad alta efficacia, sia in termini di performance che di…
Roba figa da
if (weekend) {
    relax();
}
la nostra newsletter, ogni tanto.