KNOWLEDGE BASE

Knowledge Base
1Backup
Acronis
Antivirus
Email
Firewall
GFI Software
Mail
Monitoring
N-Able
Sicurezza
TSPlus
Diventa Autore per CoreTech | Scopri di più

Vai al Video

WordPress - Le tecniche di backup e restore

di Riccardo Gallazi

In questo tutorial verrà affrontato il tema del backup e restore in Wordpress, analizzando sia i tipi di backup possibili, sia alcune modalità per eseguirli. Inizieremo con spiegare perché bisogna effettuare il backup e poi vedremo come testare un backup in locale. Termineremo con alcune dimostrazioni pratiche.

Wordpress: perché il backup?

In WordPress, quando si parla di backup si intende una copia del database e dei file di sistema; i file di sistema sono sostanzialmente tutti quei file presenti nel sito, quindi le cartelle wp-content/, wp-includes/, wp-admin/, file di sistema, wp-config.php, .htaccess e file aggiuntivi personalizzati che variano a seconda dell’installazione di Wordpress. Se mancano i file o il database, il backup non è utilizzabile.

Prima di eseguire un backup, al fine di ridurre le dimensioni del backup stesso e di velocizzarlo, è consigliabile cancellare la coda di spam, i file generati da plugin che fanno cache, il backup di plugin, ecc., che possono essere ignorati; questi sono salvati all'interno del sito, quindi prima di iniziare, escludeteli dal percorso di backup.

Il backup serve per creare una copia da ripristinare nel caso si verifichi un problema di sicurezza (per esempio il sito + stato “hackerato”) o un errore di sviluppo/in fase di aggiornamento o installazione di un nuovo plugin; a riguardo va notato che è utile eseguire sempre un backup prima di prima di ogni aggiornamento. La frequenza del backup dipende dalla frequenza dell’aggiornamento del sito (multi-giornaliera, giornaliera, settimanale, mensile).

Backup completo e backup incrementale

Prima di procedere è opportuno chiarire che ci sono due possibili tipi di backup:

  • backup completo;
  • backup incrementale.

Ancor prima di eseguire un backup, è importante capire qual è la tipologia di backup più indicata per lo scopo.

Il BACKUP COMPLETO effettua una copia completa del sito e quindi è più ingombrante, dato che le dimensioni massime su disco sono pari alle dimensioni totali sito; questo tipo di backup comporta un tempo di esecuzione più lungo e maggiore consumo di risorse, però ogni backup eseguito consente un ripristino completo del sito.

Invece il BACKUP INCREMENTALE consiste in una copia parziale del sito, ovvero salva solo le modifiche eseguite dall’ultima volta che è stato eseguito il backup. Rispetto ad un backup completo richiede minore spazio di archiviazione e la sua esecuzione è più rapida e impegna una minore quantità di risorse.
Per come funziona, il backup incrementale necessita un backup completo di riferimento per poter avviare il ripristino, giacché salva le modifiche rispetto a quest’ultimo; inoltre il tempo di ripristino è leggermente maggiore, proprio perché ciascun backup incrementale ha bisogno dei backup precedenti, quindi bisogna avere una certa cura e pianificazione nella stesura del backup del sito

Modalità di backup in Wordpress

Esistono sostanzialmente tre modalità per eseguire un backup:

  • backup manuale;
  • backup con un plugin dedicato;
  • backup un plugin completo backup manuale

Il backup manuale avviene a livello server e consiste, come dice l’espressione, in una copia manuale del sito tramite FTP oppure compiuta dalla plancia di comando del pannello di controllo del sito. La copia del database viene effettuata tramite PHP My admin, che è uno strumento dedicato alla gestione del database (quindi sono necessari l’accesso FTP e phpMyAdmin).
Essendo il backup a livello server, si effettua il backup del sito dall’esterni e questa differenza è importante, come vedremo quando affronteremo il backup tramite plugin. Bisogna eseguire il dump del database via phpMyAdmin.

Quando si esegue la copia manuale dei file del sito tramite FTP conviene, se possibile, creare un archivio .zip sul server e scaricarlo.
I limiti di questo sistema sono sostanzialmente dovuti al fatto che i backup incrementali non si possono fare e comunque sono alquanto difficili da implementare, così come una schedulazione, perchè non è possibile pianificare dei backup manuali.
Inoltre, trattandosi di una procedura manuale, sono possibili degli errori, tuttavia è un metodo che funziona ed è ampiamente testato.

Il ripristino da un backup manuale consiste nella copia dei file del sito via FTP sul sito; qui rientra in gioco il file .zip creato in precedenza sul server, che dovete scaricare allo scopo di poterlo estrarre sul sito. Ovviamente questo è possibile solo se il sito, ossia il pannello di controllo con cui si gestisce il sito, ha la possibilità di fare questo. Per accelerare il caricamento va importato il dump del database PHP My admin; eventualmente, prima di creare database e utente database verificare (nel file wp-config.php ) cioè i parametri di connessione al database, quindi nome del database, nome utente, password e indirizzo host del database, che generalmente è localhost.
Se si dovesse verificare il fastidioso errore: “impossibile stabilire una connessione al database” in primo luogo dovete controllare che nel file wp-config.php i parametri siano corretti.

Installazione di WordPress

Ora, per meglio comprendere il significato dei file e del database di un sito in Wordpress, vediamo subito la plancia di comando Plesk (nell’immagine seguente) che è un software di hosting per costruire, gestire, rendere sicuri ed eseguire siti web.

Per prima cosa installiamo Wordpress, se sulla macchina è installato; l’operazione si compie semplicemente facendo clis sul pulsante Install Wordpress. Durante l’installazione verrà richiesto se installare o meno dei plugin specifici, che per il momento ignoriamo.
Una volta installato Wordpress creiamo il nostro sito di esempio, che chiamiamo webinar.demo, selezioniamo il sito e possiamo aprirlo facendo clic su Open nella barra sottostante webinar-demo (che è il nostro sito).

Per quanto riguarda il backup manuale, la prima cosa da fare è scaricare i file via FTP; allo scopo serve un client dedicato (generalmente si usa filezilla, ma ne sono tanti altri).
Oppure se il vostro sistema lo consente, dal gestore file (si apre con la voce File del menu visibile nell’immagine seguente) selezionate tutti i file, create un archivio e avete così il vostro archivio da scaricare: nell’immagine è quello chiamato backup.zip.

Se le dimensioni sono importanti, probabilmente per il download sarà richiesto un tempo consistente; in tal caso è meglio scaricare questo file via FTP, perché la connessione via FTP è tipicamente più stabile rispetto una connessione via browser.

Banner

Poi, per quanto riguarda il database, potete scaricare il dump direttamente da Plesk, semplicemente facendo clic su Export Dump come mostrato nell’immagine seguente e poi selezionando il percorso nella finestra di dialogo che si apre.

Banner

In alternativa accedete da PHP My admin, che uno strumento che utilizzeremo più avanti in questo tutorial; l’accesso a PHP My admin si ottiene facendo clic sull’apposita voce, sempre dalla schermata mostrata nell’immagine precedente.
Accedete quindi alla schermata di lavoro dove avete il tab Esporta, da dove selezionerete i file interessati; come mostra l’immagine seguente, avete a disposizione varie opzioni per l’esportazione.

Quanto al formato, tenete pure SQL, quindi fate clic su Esegui e Salvate il file.
Il ripristino segue sostanzialmente la stessa procedura, ma all'inverso, per cui caricate i vostri file o da client filezilla (client FTP) oppure, se le dimensioni sono ridotte, potete fare un upload. Se caricate il file zippato potete (se è disponibile la relativa modalità) estrarre i file.

Invece per quanto riguarda il database, andate su Importa (assicuratevi che il formato sia SQL o comunque il formato con cui avete esportato il vostro database) quindi fate clic su Esegui e l'importazione dovrebbe andare a buon fine.

Gli step per un backup manuale sono sostanzialmente quelli sinora descritti.
Passiamo quindi a una demo che mostri come si esegue un backup con plugin dedicato.

WordPress: il Backup con Plugin

Si tratta di un backup a livello del sito, il che comporta che un sito/plugin con problemi porterà ad avere un backup con problemi, quindi difficile ripristinare “da fuori”.
Per eseguire un backup tramite plugin sono disponibili diversi plugin, come ad esempio Akeeba, VaultPress, Duplicator, BackupBuddy, CodeGuard, UpdraftPlus e in generale quelli riportati su https://it.wordpress.org/plugins/search/backup/.

La procedura di backup in genere è simile a quella manuale, ma la procedura di ripristino varia, ma spesso avviene dall’interno di WordPress, quindi il backup viene fatto livello del sito e non a livello server; un backup a livello del sito implica che il sito debba essere disponibile e che se ci sono degli errori a livello database, errori a livello PHP e quant'altro, il backup non funzionerà. Inoltre se il sito presenta dei problemi, anche il backup e ripristino del backup fatto con plugin tipicamente è difficoltoso.
Ecco perché eseguire un backup server del sito ha dei vantaggi, sia nella procedura di backup che nella procedura di ripristino.

La procedura di ripristino di un backup da plug-in spesso avviene dall’interno di Wordpress, per cui si va a selezionare il plug-in che si occupa del backup, si seleziona il backup e lo si ripristina. Altri plugin invece richiedono l'inserimento di una URL particolare nella barra dell'indirizzo del browser, da cui si apre il Wizard per l'importazione: è, ad esempio, il caso di Akeeba backup.

Il backup con plug-in dispone di funzioni avanzate come il backup incrementale, la schedulazione, la protezione password, le notifiche, caricamento su FTP esterno, caricamento su spazio storage esterno ecc. In alcuni casi tali funzioni sono gratuite e in altri casi sono a pagamento. Se le vostre esigenze non sono troppe, la versione gratuita soddisfa il bisogno, mentre quando si inizia a cercare qualcosa di più preciso, bisogna orientarsi sulla versione a pagamento.

In genere il backup viene salvato in una directory del sito ed è comunque accessibile all’utente; questo potrebbe costituire un problema in termini di sicurezza.

Infine va detto che un plugin aggiunge carico di lavoro al web server ed estende la superficie di penetrazione del sito, nel senso che introduce dei possibili punti di vulnerabilità del sito stesso che possono venire sfruttati dagli hacker qualora venissero trovati degli exploit che coinvolgono ad esempio delle funzioni per capire una qualifica delle chiamate al database codificate male all'interno del plugin.
Una regola aurea è che meno plug-in ci sono, meglio è.

In generale un plugin implica:

  • dipendenza dallo sviluppatore;
  • carico di lavoro aggiuntivo;
  • aumento del rischio di penetrazione del sito.

WordPress: utilizzo di UpdraftPlus

Adesso passiamo a un esempio pratico di backup utilizzando draft Plus: apriamo una demo e vediamo, nella plancia di controllo Plesk, che abbiamo una sezione dedicata a WordPress.
Plesk, quando si installa Wordpress con il Wizard che abbiamo visto prima, applica delle impostazioni predefinite, ovvero crea un utente che non è admin e quindi applica impostazioni di sicurezza aggiuntiva; viene creata anche una password.
Una volta fatta la Login è possibile entrare in Wordpress, modificare le impostazioni e installare plug-in; l’installazione si compie facendo clic sul comando Plugins presente nella zonoa a sinistra della finestra di lavoro, allorché si accede a una finestra che mostra i plug-in a disposizione nel repository di Wordpress (vedere l’immagine seguente).

Scegliamo UpDraft e per installarlo facciamo clic sul pulsante Installa Now; una volta che l’abbiamo installato lo attiviamo con il pulsante Activate (altrimenti pur essendo stato installato non sarà utilizzabile da Wordpress) ci spostiamo su Settings per impostarlo ed eventualmente inserire degli add-on (attenzione che molti sono a pagamento).
Da qui possiamo eseguire facilmente un backup facendo clic sul tab Current Status (figura seguente) che propone i tre pulsanti Backup Now, Restore, Clone/Migrate.

Per effettuare un backup clicchiamo sul primo e scegliamo di cosa dobbiamo fare il backup, quindi confermiamo e il backup inizierà; un indicatore di progressione ci comunicherà l’avanzamento e la conclusione delle operazioni.

Se invece dobbiamo effettuare un ripristino, facciamo clic su Restore, quindi andiamo a vedere quali sono tutti i backup disponibili e da qui scegliamo quello da ripristinare; confermando, il solito indicatore di progressione ci informerà dello stato del ripristino.

UpDraft sostanzialmente funziona così; notate che il backup tramite questo plugin in alcuni casi permette di creare una pianificazione.

WordPress: backup con Plesk

Adesso vediamo come eseguire un backup tramite lo strumento Plesk Backup. Il backup manuale eseguito tramite Plesk è un backup a livello server e i esegue dopo aver eseguito l’accesso da pannello di controllo Plesk (gestione del sito). Il fatto che il backup avvenga a livello server e non a livello interno al sito riduce i problemi nell'esecuzione del backup e il ripristino avviene dal pannello di controllo di Plesk che abbiamo visto prima.

Tra le funzioni aggiuntive integrate troviamo:

  • backup incrementale;
  • ripristino granulare;
  • pianificazione;
  • protezione password;
  • notifica via e-mail;
  • esclusione log/cartelle/file;
  • sospensione dominio;
  • rotazione backup.

Il backup viene salvato su directory non accessibile dall’utente (su spazio hosting o server FTP) né dagli hacker e si ha a disposizione un Wizard di ripristino intuitivo.
Il download include il backup completo di riferimento ed eventuali incrementali precedenti.

Ora vedremo meglio le funzioni aggiuntive, tra cui la notifica per e-mail con cui Plesk vi avvisa se il backup non va a buon fine e l’esclusione selettiva di elementi dal backup. In merito a quest’ultima, va detto che in genere i log non rientrano nel backup ed anche le cartelle dei file e le cartelle interne di Wordpress che vengono usate dai plug-in per gestire la cache, si possono anche non inserire nel backup.

Una funzione interessante è la rotazione del backup e poi anche la sospensione del dominio, molto utile perché mentre il backup è in corso nessuno può accedere al dominio sia da back-end che da front-end per cui non si creano problemi tipo la modifica di un contenuto.
Tipicamente un backup non richiede tanto tempo, ma comunque per la durata in cui il sito non è disponibile per l’esecuzione del backup è ridotto.

Quanto al Wizard di ripristino, è intuitivo: il download del backup incrementale contiene già il backup completo di riferimento ad eventuali backup incrementali precedenti, per cui il ripristino è tutto-sommato semplice; non bisogna tener conto del backup iniziale, né bisogna calcolare i backup incrementali che si frappongono tra backup completo di base e il backup incrementale finale, perché fa tutto Plesk.

Adesso vediamo il backup manager dalla plancia di controllo di Plesk, dal quale accediamo a varie funzioni, una delle quali è la possibilità di configurare uno spazio FTP esterno in cui salvare il backup (immagine seguente). Le funzioni sono correlate ognuna a un pulsante della finestra principale.

Possiamo anche, spuntando o togliendo la spunta dalla casella Use FTP storage, attivare o disattivare il salvataggio su FTP.
Nel primo caso bisogna inserire nelle apposite caselle l’host name del server FTP, il relativo indirizzo IP e la directory in cui salvare i file, quindi nome utente e password.
Possiamo proteggere i backup con una password utilizzando l’opzione in Backup security settings ed anche eseguire una pianificazione (schedulazione) del backup, scegliendo di eseguire il backup giornalmente, mensilmente o settimanalmente dall’apposito menu a tendina. L’immagine seguente mostra la finestra per la schedulazione dei backup, accessibile dal pulsante Schedule nella finestra principale di Backup Manager.

Qui si può scegliere anche di utilizzare dei backup completi o di backup incrementali (in questo caso serve sempre un backup completo di riferimento); il backup completo di riferimento può essere fatto settimanalmente, mensilmente o annualmente, in base all’impostazione che facciamo nel relativo menu a tendina accessibile accanto a Perform full backup.
Nella casella accanto a Keep backup files for possiamo definire per quanto tempo conservare i file di backup: è questo il concetto di rotazione dei backup, che consiste nel loro rinnovo e nella sostituzione con backup più recenti una volta scaduto il tempo impostato.

Nella stessa finestra troviamo delle opzioni molto interessanti: la prima è l’esclusione automatica dei file di log, file specifici o cartelle; un’altra è, come accennato, la notifica sull'esito dei backup che arriva via e-mail. C’è poi l’opzione di sospensione del sito finché il backup non è completo.

Da Backup Manager è anche possibile impostare un backup manuale, intendendo con ciò un backup non schedulato ed eseguito con impostazioni manuali e non automatiche di Plesk.

La prima volta che viene eseguito il backup di un sito, Plesk decide in autonomia di eseguire quello completo; è una decisione corretta che viene presa a prescindere da eventuali impostazioni manuali fatte dall’utente.

L’avvio del backup si ottiene facendo clic sul pulsante OK nella schermata proposta dall’immagine precedente, allorché appare la schermata proposta qui di seguito.

Banner

Al completamento de backup, nella schermata viene indicato il relativo file, con le dimensioni (nel caso dell’immagine sono 36 MB); possiamo scegliere di scaricare il file (facendo clic sulla freccia verde accanto alle dimensioni del backup) oppure di ripristinarlo. Per ripristinare, dalla plancia di Plesk, dalla finestra di Backup Manager fate clic sul tab Restore e dalla finestra che si apre, scegliere tra i backup disponibili. L’immagine seguente mostra la schermata di restore.Al completamento de backup, nella schermata viene indicato il relativo file, con le dimensioni (nel caso dell’immagine sono 36 MB); possiamo scegliere di scaricare il file (facendo clic sulla freccia verde accanto alle dimensioni del backup) oppure di ripristinarlo. Per ripristinare, dalla plancia di Plesk, dalla finestra di Backup Manager fate clic sul tab Restore e dalla finestra che si apre, scegliere tra i backup disponibili. L’immagine seguente mostra la schermata di restore.

Possiamo quindi, se in sito ci accorgiamo che c'è un errore, ad esempio a seguito di un aggiornamento non andato a buon fine, ripristinare la versione precedente, in Backup Manager troviamo tutti i backup che sono stati fatti.
Scelto il backup che interessa ripristinare, facciamo clic sul pulsante Restore e Plesk ripristina tutto il sito.
Il processo di ripristino, tipicamente richiede un po' più di tempo rispetto al processo di backup; al termine del ripristino viene prodotto un messaggio di backup completato positivamente.

WordPress: Test del backup

Abbiamo visto tre metodi con cui si può fare un backup e ora possiamo soffermarci un attimo sull'importanza del test del backup: un backup non testato è praticamente un backup inutile, perché è potenzialmente non utilizzabile in quanto, pur essendo portato a termine, potrebbe avere degli errori, ad esempio perché i file oggetto del backup potrebbero essere corrotti. Insomma, un backup portato a termine ma contenente errori non si riesce a ripristinare e quindi è un backup non utilizzabile. Inoltre crea un senso di insicurezza, perché si pensa di avere a disposizione un certo numero di backup, però se questi non sono ripristinabili è come se non ci fosse alcun backup.
Per questa ragione bisogna assicurarsi che il backup sia funzionante tramite un test.
Per prima cosa bisogna assicurarsi che ci siano i file, le cartelle e il database, questo soprattutto nel caso eseguiate un backup manuale; nel caso del backup da plugin o tramite Plesk, potrebbe non sussistere questo problema e quindi tutti gli elementi sono presenti.

Il metodo migliore per verificare un backup è eseguire a partire da esso un ripristino vero e proprio, ma a volte è troppo oneroso, per cui si può pensare di eseguire dei ripristini a campione; oppure si può effettuare un test più leggero, speculando sul fatto che in genere gli errori, se avvengono, avvengono nel database, per cui proviamo a importare il dump del database e se l'importazione avviene correttamente possiamo essere abbastanza certi che il backup sia andato a buon fine, cioè che se i file vengano scaricati sotto forma di archivio, bisogna provare ad estrarre l'archivio: se si riesce a scompattare senza difficoltà, non dovrebbero esserci ulteriori problemi.

Il test può essere eseguito in locale, cioè sul computer al lavoro oppure da remoto in questo caso serve quantomeno un ambiente di staging su un dominio esterno oppure su un sotto dominio del sito stesso, a seconda di quello che l’hosting provider vi mette a disposizione.

Comunque testare il backup in locale è molto più facile e conveniente; per testare il backup in locale avete bisogno si un server, di un linguaggio di scripting e del database. Il metodo più veloce è utilizzare XAMPP (MAMPP su Mac) scaricabile da www.xampp.org, sito che ridirige sulla pagina web mostrata qui di seguito. Il software è multipiattaforma, ovvero è disponibile per Windows, Linux e MacOS.

Scaricate l'eseguibile, che poi vi installerà uno stack con Apache, MySQL e PHP, nel quale potete impostare il vostro sito Wordpress e verificare che il ripristino avvenga.

Per eseguire il test dovete:

  • copiare la cartella root del sito in C:\xampp\htdocs;
  • importare il dump del database in phpMyAdmin (creare preventivamente db e utente con gli stessi parametri definiti in wp-config.php).

Una nota importante: bisogna assicurarsi di utilizzare almeno la stessa versione di PHP e le stesse impostazioni, altrimenti dovete scaricare la versione PHP uguale alla versione del PHP che avete sullo spazio hosting, altrimenti possono generarsi degli errori, soprattutto se avete ancora una versione fino alla 5.00 di PHP su hosting; in questo caso se scaricate XAMPP versione 7, molto probabilmente troverete degli errori, per cui assicurativi di scaricare la versione corretta, che è sempre disponibile per Windows ma anche per MacOS.

Se è il caso (anzi, è consigliabile) modificate i file host per evitare problemi con l'URL del sito che dovete ripristinare; in particolare dovete aggiungere una stringa del tipo “127.0.0.1 url-sito.it” sullo spazio URL del sito. In questo modo il vostro computer, quando digitate l'indirizzo del vostro sito, non punta al sito sullo spazio di webhosting, bensì a quello interno al vostro computer, ossia cioè quello che avete ripristinato con XAMPP.

Se dovete cambiare URL al sito, sulla pagina di riferimento della Codex di Wordpress (https://codex.wordpress.org/Changing_The_Site_URL) trovate tutta la documentazione riguardo al caso specifico.

Dovreste modificare anche il file wp-config.php aggiungendo queste due stringhe:

define('WP_HOME','https://url-nuova.it');
define('WP_SITEURL','https://url-nuova.it');

fatto ciò, dovete eseguire delle query a database di questo tipo per cambiare l'URL:
Query database da utilizzare del tipo:

SET @oldurl = 'https://url-vecchia.it';
SET @newurl = 'https://url-nuova.it';
UPDATE wp_options SET option_value = replace(option_value, @oldurl, @newurl) WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, @oldurl,@newurl);
UPDATE wp_posts SET post_content = replace(post_content, @oldurl, @newurl);
UPDATE wp_postmeta SET meta_value = replace(meta_value,@oldurl, @newurl);

oppure utilizzare un plugin come WP Migrate DB (https://wordpress.org/plugins/wp-migrate-db/).