Menu
Backup e Ripristino

Come eseguire un backup WordPress via SSH e terminale

Gianluca Gentile · · 6 min di lettura

Come eseguire un backup WordPress via SSH e terminale

Fare il backup di WordPress via SSH è il metodo più veloce e affidabile quando hai accesso al terminale del server. Non dipendi da plugin, non carichi la dashboard e puoi automatizzare tutto con pochi comandi. In questa guida ti mostro come eseguire un backup completo — file e database — direttamente dal terminale, con comandi che puoi copiare e adattare al tuo server.

Quando conviene il backup via SSH

Il backup via SSH è particolarmente utile in queste situazioni:

  • Sito molto grande: i plugin di backup spesso falliscono o vanno in timeout con siti che superano i 2-3 GB. Da terminale, non hai limiti di tempo o memoria PHP.
  • Dashboard inaccessibile: se il sito è in errore, non puoi usare plugin. Ma SSH funziona indipendentemente dallo stato di WordPress.
  • Backup pre-aggiornamento rapido: prima di aggiornare WordPress, tema o plugin, un backup da terminale richiede meno di un minuto.
  • Automazione con cron: puoi schedulare backup automatici con crontab senza installare nulla su WordPress.

Prerequisiti

Per seguire questa guida ti serve:

  • Accesso SSH al server: la maggior parte degli hosting condivisi moderni offre accesso SSH. Verifica nel pannello hosting o contatta il supporto.
  • Un client SSH: su Mac e Linux il terminale è integrato. Su Windows puoi usare PuTTY o il Windows Terminal.
  • Credenziali database: le trovi nel file wp-config.php del tuo sito WordPress.

Backup dei file WordPress

Il primo passo è creare un archivio compresso di tutti i file del sito. Collegati via SSH e naviga nella cartella che contiene l’installazione di WordPress:

cd /var/www/html/
tar -czf ~/backup-wordpress-$(date +%Y%m%d).tar.gz .

Questo comando crea un file .tar.gz con la data corrente nella tua home directory. L’opzione -c crea l’archivio, -z lo comprime con gzip e -f specifica il nome del file.

Se vuoi escludere la cartella cache (che può pesare molto e non serve nel backup), usa:

tar -czf ~/backup-wordpress-$(date +%Y%m%d).tar.gz --exclude='wp-content/cache' .

Per siti molto grandi, puoi escludere anche i file di log e le cartelle temporanee per ridurre la dimensione del backup.

Backup del database con mysqldump

Il database contiene articoli, pagine, impostazioni, utenti e tutti i dati dinamici del sito. Per esportarlo, usa mysqldump:

mysqldump -u nome_utente -p nome_database > ~/backup-db-$(date +%Y%m%d).sql

Il sistema chiederà la password del database. Le credenziali le trovi in wp-config.php cercando queste righe:

define('DB_NAME', 'nome_database');
define('DB_USER', 'nome_utente');
define('DB_PASSWORD', 'la_tua_password');
define('DB_HOST', 'localhost');

Per evitare di digitare la password ogni volta, puoi passarla direttamente nel comando (meno sicuro ma utile per gli script automatici):

mysqldump -u nome_utente -pla_tua_password nome_database > ~/backup-db-$(date +%Y%m%d).sql

Nota: non c’è spazio tra -p e la password. Per comprimere direttamente il dump:

mysqldump -u nome_utente -p nome_database | gzip > ~/backup-db-$(date +%Y%m%d).sql.gz

Script completo per backup automatico

Puoi combinare file e database in un unico script bash. Crea un file backup-wp.sh:

#!/bin/bash
WP_PATH="/var/www/html"
BACKUP_DIR="$HOME/backups"
DATE=$(date +%Y%m%d-%H%M)
DB_NAME="nome_database"
DB_USER="nome_utente"
DB_PASS="la_tua_password"

mkdir -p $BACKUP_DIR

# Backup database
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/db-$DATE.sql.gz

# Backup file
tar -czf $BACKUP_DIR/files-$DATE.tar.gz -C $WP_PATH --exclude='wp-content/cache' .

# Elimina backup più vecchi di 30 giorni
find $BACKUP_DIR -type f -mtime +30 -delete

echo "Backup completato: $DATE"

Rendi lo script eseguibile con chmod +x backup-wp.sh e schedulalo con crontab per esecuzione automatica giornaliera:

crontab -e
# Aggiungi questa riga per backup ogni notte alle 3:00
0 3 * * * /home/utente/backup-wp.sh >> /home/utente/backup.log 2>&1

Backup con WP-CLI da terminale

Se sul server è installato WP-CLI, puoi usarlo per esportare il database in formato nativo WordPress. Il comando wp db export funziona come mysqldump ma non richiede di conoscere le credenziali del database, perché le legge direttamente da wp-config.php:

wp db export ~/backup-db-$(date +%Y%m%d).sql --path=/var/www/html/

WP-CLI offre anche comandi utili per la manutenzione pre-backup. Ad esempio, puoi pulire i dati transient e le revisioni prima di esportare, riducendo la dimensione del database:

# Elimina tutti i transient scaduti
wp transient delete --expired --path=/var/www/html/

# Elimina le revisioni vecchie degli articoli
wp post delete $(wp post list --post_type='revision' --format=ids --path=/var/www/html/) --path=/var/www/html/

Questo passaggio opzionale ti permette di ottenere un backup del database più leggero e pulito, specialmente su siti con molti articoli e plugin che generano transient.

Considerazioni sulla sicurezza dei backup

I file di backup contengono dati sensibili: credenziali del database, chiavi di sicurezza, email degli utenti e potenzialmente dati personali. Per questo motivo, segui queste regole fondamentali:

  • Non salvare i backup nella cartella pubblica: mai lasciare i file di backup in wp-content/ o in qualsiasi cartella accessibile dal web. Salvali sempre nella home directory o in una cartella protetta.
  • Imposta i permessi corretti: i file di backup dovrebbero avere permessi 600 (solo il proprietario può leggere e scrivere).
  • Cripta i backup sensibili: per siti che gestiscono dati personali (ecommerce, aree riservate), considera di crittografare i backup con GPG prima di trasferirli.
  • Ruota i backup: conserva almeno gli ultimi 30 giorni di backup, ma elimina quelli più vecchi per risparmiare spazio e ridurre l’esposizione.

Scaricare il backup in locale

Dopo aver creato il backup sul server, è buona pratica scaricarlo in locale o trasferirlo su un servizio cloud. Puoi usare scp dal tuo computer:

scp utente@server:~/backups/db-20260327-0300.sql.gz ./
scp utente@server:~/backups/files-20260327-0300.tar.gz ./

In alternativa, puoi usare rsync per sincronizzare l’intera cartella dei backup con una cartella locale, trasferendo solo i file nuovi o modificati:

rsync -avz utente@server:~/backups/ ./backup-locale/

Trasferire il backup su storage esterno

Per la massima sicurezza, i backup dovrebbero essere conservati anche fuori dal server. Se il server ha un problema hardware o viene compromesso, i backup locali potrebbero andare persi. Puoi configurare il trasferimento automatico verso servizi di cloud storage come Amazon S3, Google Cloud Storage o un semplice server FTP esterno. Con rclone, uno strumento open source per sincronizzare file con decine di servizi cloud, puoi aggiungere una riga al tuo script di backup per caricare automaticamente gli archivi su un bucket S3 o su Google Drive.

Verificare l’integrità del backup

Un backup non testato è un backup inutile. Verifica che gli archivi non siano corrotti:

# Verifica archivio tar.gz
tar -tzf backup-wordpress-20260327.tar.gz > /dev/null && echo "OK" || echo "CORROTTO"

# Verifica dump SQL
gunzip -t backup-db-20260327.sql.gz && echo "OK" || echo "CORROTTO"

Periodicamente, prova a ripristinare il backup su un ambiente di test per confermare che tutto funzioni correttamente. Un backup che non si può ripristinare non serve a nulla.

Serve aiuto con i backup?

Se non hai accesso SSH o preferisci una soluzione gestita, il team di SoccorsoWP può configurare un sistema di backup automatico per il tuo sito con archiviazione sicura e verifica periodica. Apri un ticket e proteggi i tuoi dati.

Condividi:

Lascia un commento