Un backup programmato ti protegge da ieri. Un aggiornamento che rompe il sito lo rompe adesso, e l'ultima copia può avere venti ore, con in mezzo una giornata di ordini. Il backup che conta è quello preso subito prima della modifica.

Un comando

#!/usr/bin/env bash
# /usr/local/bin/snap
set -euo pipefail
SITE=/var/www/site
OUT=/srv/backup/pre-change/$(date +\%F-\%H\%M)
mkdir -p "$OUT"
tar -czf "$OUT/files.tar.gz" -C "$SITE" .
mysqldump --single-transaction --quick --routines --triggers dbname | gzip > "$OUT/db.sql.gz"
echo "$OUT"
sudo snap && sudo apt-get upgrade

Rendilo automatico dove gli strumenti lo consentono

  • Uno script di pubblicazione lo esegue come primo passo, prima che venga copiato alcunché.
  • Aggiornamenti dei pacchetti: gli hook di apt, oppure un involucro che usi al posto di apt.
  • Aggiornamenti del CMS: quasi tutti hanno un plugin che scatta prima un'istantanea — usalo, e tieni comunque anche una copia tua.

Sappi come tornare indietro PRIMA di andare avanti

Scrivi il comando di ritorno accanto al percorso dell'istantanea. Se non è una riga che puoi incollare, il ritorno non avverrà abbastanza in fretta da servire.

# rollback
tar -xzf /srv/backup/pre-change/2026-09-05-0930/files.tar.gz -C /var/www/site
zcat /srv/backup/pre-change/2026-09-05-0930/db.sql.gz | mysql dbname
Ripristinare il database annulla ogni ordine e ogni registrazione successivi all'istantanea. Su un sito trafficato ripristina prima i FILE, e tocca il database solo se il guasto sta davvero nei dati.

Poi fai pulizia

find /srv/backup/pre-change -maxdepth 1 -type d -mtime +14 -exec rm -rf {} +
Aggiorna una cosa alla volta. Cinque plugin insieme vuol dire che il guasto può stare in uno qualsiasi, e il ritorno indietro perde tutti e cinque i miglioramenti per trovare un solo guasto.