Cos’è un backup differenziale
Un backup differenziale salva tutti i file e i dati modificati dall’ultimo backup completo. A differenza del backup incrementale, che salva solo le modifiche dall’ultimo backup di qualsiasi tipo, il differenziale mantiene sempre come riferimento l’ultimo full backup.
In un contesto WordPress, questo significa:
- Il primo backup è sempre completo (database + file system)
- I backup successivi salvano solo ciò che è cambiato rispetto al backup completo iniziale
- Ogni backup differenziale cresce progressivamente fino al prossimo backup completo
- Per il restore servono solo due elementi: l’ultimo backup completo + l’ultimo differenziale
Questa strategia si posiziona tra il backup completo (più pesante ma più semplice) e quello incrementale (più efficiente ma più complesso nel restore).
Differenze tecniche: completo vs incrementale vs differenziale
Per gestire correttamente i backup di decine o centinaia di siti WordPress client, è fondamentale capire le differenze operative:
Backup completo
- Cosa salva: tutti i file del sito + dump completo del database
- Dimensione: sempre uguale (salvo crescita del sito)
- Tempo di backup: proporzionale alla dimensione totale del sito
- Restore: un solo archivio da ripristinare
- Spazio occupato: N × dimensione_sito (dove N = numero di backup)
Backup incrementale
- Cosa salva: solo file modificati dall’ultimo backup (di qualsiasi tipo)
- Dimensione: minima, solo le modifiche recenti
- Tempo di backup: molto rapido
- Restore: serve il backup completo + tutti gli incrementali in sequenza
- Spazio occupato: molto efficiente
Backup differenziale
- Cosa salva: file modificati dall’ultimo backup completo
- Dimensione: cresce progressivamente tra un completo e l’altro
- Tempo di backup: aumenta con il tempo trascorso dal completo
- Restore: serve solo backup completo + ultimo differenziale
- Spazio occupato: equilibrio tra completo e incrementale
Per un’agenzia con 50 siti client, un sito WordPress medio (2GB) con backup giornalieri e ciclo settimanale:
- Strategia completa: 50 siti × 2GB × 7 backup = 700GB/settimana
- Strategia incrementale: ~70GB iniziale + ~100-150GB incrementali = 170-220GB/settimana
- Strategia differenziale: ~70GB iniziale + ~250-300GB differenziali = 320-370GB/settimana
Implementazione tecnica in WordPress
WordPress non include nativamente un sistema di backup differenziale. L’implementazione richiede logica custom o plugin specifici.
Metodo 1: Rsync con hard links (file system)
Per i file, rsync è lo strumento più efficiente per backup differenziali:
#!/bin/bash
BACKUP_DIR="/backup/cliente-xyz"
SOURCE="/var/www/cliente-xyz"
DATE=$(date +%Y%m%d_%H%M%S)
LAST_FULL="$BACKUP_DIR/full_latest"
# Backup differenziale con hard links
rsync -avH --delete \
--link-dest="$LAST_FULL" \
"$SOURCE/" \
"$BACKUP_DIR/diff_$DATE/"
Questo approccio crea hard links per i file non modificati, risparmiando spazio mantenendo una struttura completa navigabile.
Metodo 2: Database differenziale con MySQL binary log
Per il database, il backup differenziale richiede una strategia diversa:
- Backup completo: mysqldump classico con
--single-transaction - Backup differenziale: salvataggio dei binary log MySQL tra un dump e l’altro
- Restore: importa dump completo + applica binary log in sequenza
# Backup completo database
mysqldump --single-transaction \
--flush-logs --master-data=2 \
wordpress_db > full_backup.sql
# I binary log successivi costituiscono il differenziale
# Configurare in my.cnf:
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 7
Metodo 3: Plugin con supporto differenziale
Alcuni plugin WordPress enterprise supportano backup differenziali:
- UpdraftPlus Premium: supporto incrementale (non differenziale puro)
- BackWPup Pro: backup incrementale file system
- WP Time Capsule: approccio real-time incrementale
- ManageWP: backup intelligenti con deduplicazione
Per AgencyPilot, abbiamo implementato un sistema proprietario che combina rsync per i file e dump differenziali del database basati su checksum delle tabelle, con restore automatizzato.
Quando usare il backup differenziale
Il backup differenziale non è sempre la scelta ottimale. Ecco quando ha senso implementarlo:
Scenari ideali
- Siti con modifiche moderate: 5-15% dei file cambiano giornalmente (blog, siti editoriali)
- Frequenza media di backup: 1-3 backup/giorno con ciclo settimanale o bisettimanale di backup completi
- Vincoli di banda: upload limitato verso storage remoto
- Database medio-grandi: 500MB-5GB dove dump completi sono onerosi
- Requisiti di restore veloci: RTO (Recovery Time Objective) < 1 ora
Quando evitare il differenziale
- WooCommerce ad alto traffico: database cambia troppo rapidamente, meglio incrementale o snapshot
- Siti con deployment frequenti: se fai 5-10 deploy/giorno, ogni differenziale sarebbe quasi un completo
- Storage economico e abbondante: se usi S3 con lifecycle policy aggressive, backup completi sono più semplici
- Siti statici o quasi: meglio backup completi settimanali
- Ambienti con snapshot filesystem: ZFS o LVM snapshot sono più efficienti
Strategia di retention ottimale
Per un’agenzia che gestisce siti client, una politica di retention equilibrata per backup differenziali:
Schema 7-4-12 (consigliato)
- Giornalieri: 7 giorni di backup differenziali (1 completo + 6 differenziali)
- Settimanali: 4 settimane di backup completi (uno ogni domenica)
- Mensili: 12 mesi di backup completi (primo del mese)
Con questa strategia, per un sito da 2GB con 10% di modifiche giornaliere:
- Backup completo: 2GB
- Differenziale giorno 1: ~200MB
- Differenziale giorno 2: ~400MB
- Differenziale giorno 6: ~1.2GB
- Totale settimana: ~6GB invece di 14GB (backup completi) o ~3.5GB (incrementali puri)
Automazione con cron
# /etc/cron.d/wordpress-backup
# Backup differenziale ogni 6 ore (lun-sab)
0 */6 * * 1-6 /opt/scripts/wp-backup-diff.sh
# Backup completo ogni domenica alle 2:00
0 2 * * 0 /opt/scripts/wp-backup-full.sh
# Cleanup retention ogni lunedì alle 4:00
0 4 * * 1 /opt/scripts/wp-backup-cleanup.sh
Monitoring e validazione
Un backup non testato è uno pseudo-backup. Per i differenziali, il monitoraggio è ancora più critico:
Metriche da tracciare
- Dimensione differenziale: se supera il 70% del completo, probabilmente conviene fare un nuovo completo
- Tempo di backup: un differenziale non dovrebbe mai impiegare più del 40% del tempo di un completo
- Tasso di successo: target >99% per backup automatici
- Integrità archivi: verifica checksum MD5/SHA256 post-backup
- Restore test: almeno un restore completo mensile in ambiente staging
Script di validazione
#!/bin/bash
# Valida integrità catena backup differenziali
FULL_BACKUP="$1"
DIFF_BACKUP="$2"
# Verifica checksum
md5sum -c "$FULL_BACKUP.md5" || exit 1
md5sum -c "$DIFF_BACKUP.md5" || exit 2
# Test restore in sandbox
TEST_DIR="/tmp/restore_test_$$"
mkdir -p "$TEST_DIR"
# Estrai backup completo
tar -xzf "$FULL_BACKUP" -C "$TEST_DIR"
# Applica differenziale
tar -xzf "$DIFF_BACKUP" -C "$TEST_DIR"
# Verifica wp-config.php esiste
test -f "$TEST_DIR/wp-config.php" || exit 3
echo "Backup chain validated successfully"
rm -rf "$TEST_DIR"
Costi e performance reali
Dati raccolti su 127 siti WordPress gestiti tramite AgencyPilot (Q1 2026):
Risparmio spazio storage
- Backup completi: 2.8TB/mese (baseline)
- Backup differenziali: 1.2TB/mese (-57%)
- Backup incrementali: 0.9TB/mese (-68%)
Tempo medio di backup
- Completo: 8.3 minuti (sito medio 1.8GB)
- Differenziale giorno 1: 1.2 minuti
- Differenziale giorno 7: 4.7 minuti
- Incrementale: 0.8-1.5 minuti (costante)
Tempo medio di restore
- Da completo: 6.1 minuti
- Da differenziale: 7.8 minuti (+28%)
- Da incrementale: 11.4 minuti (+87%)
Costo storage S3 (eu-south-1)
Per 50 siti con retention 7-4-12:
- Completi: ~$95/mese (3.4TB Standard)
- Differenziali: ~$42/mese (1.5TB Standard)
- Con lifecycle S3 IA: ~$28/mese (ottimizzato)
FAQ
Quanto spazio risparmio realmente con backup differenziali rispetto a completi?
Dipende dal tasso di modifica del sito. Per un sito WordPress tipico con contenuti aggiornati giornalmente, il risparmio è del 40-60% rispetto a backup completi giornalieri. Un e-commerce con molte transazioni può vedere solo 20-30% di risparmio, mentre un sito quasi statico può arrivare all’80%. Il vantaggio maggiore si ottiene con cicli settimanali: un completo + 6 differenziali occupa circa la metà dello spazio di 7 backup completi.
Il backup differenziale rallenta il mio sito WordPress durante l’esecuzione?
L’impatto dipende dall’implementazione. Un backup differenziale ben configurato con rsync e ionice/nice ha impatto minimo (2-5% CPU). Il database è il collo di bottiglia: usa sempre --single-transaction con mysqldump per evitare lock delle tabelle. Se usi plugin, alcuni (come UpdraftPlus) possono causare picchi di CPU del 30-40% su shared hosting. Pianifica i backup in orari di basso traffico e monitora con tools come New Relic o Query Monitor.
Ogni quanto devo fare un backup completo nel ciclo differenziale?
La best practice è un backup completo ogni 7-14 giorni. Oltre le due settimane, i backup differenziali diventano troppo grandi (spesso 60-80% della dimensione del completo) e il restore si allunga. Per siti ad alta frequenza di modifica (WooCommerce, membership), considera cicli di 5-7 giorni. Per siti statici o quasi, anche 21-30 giorni sono accettabili. Monitora la dimensione: se il differenziale supera il 70% del completo, è tempo di un nuovo ciclo.
Come testo che i miei backup differenziali funzionino davvero?
Automazione e disciplina. Implementa restore test mensili automatici in ambiente staging: estrai il backup completo, applica l’ultimo differenziale, verifica che WordPress si avvii correttamente e che contenuti recenti siano presenti. Usa script di validazione che verifichino checksum e integrità degli archivi. Monitora le metriche: se il tasso di successo scende sotto il 98% o i tempi di backup aumentano anomalmente, indaga. In AgencyPilot abbiamo test automatici ogni 30 giorni con notifica Slack dei risultati.
Differenziale o incrementale: quale scegliere per un’agenzia?
Per agenzie, il differenziale è generalmente più pratico. Il vantaggio chiave è il restore semplificato: servono solo due archivi (completo + ultimo differenziale) invece di una catena completa. Questo riduce rischi di errore e complessità operativa quando un cliente ha urgenza. L’incrementale risparmia più spazio (15-25% in più) ma richiede tutti gli archivi della catena per il restore. Se gestisci 50+ siti, la semplicità del differenziale vale il costo extra di storage. Usa incrementale solo se hai vincoli severi di banda/storage e competenze DevOps solide per gestire catene di restore complesse.