Quasi tutti i backup contengono i file e il database, e quasi tutti i ripristini falliscono poi su qualcosa che lì dentro non c'era mai stato. Un backup è completo quando il suo ripristino su un server nudo produce un sito funzionante senza che nulla venga digitato a memoria.

I due ovvi

  • I file del sito, caricamenti compresi — che spesso stanno su un altro disco e per questo sfuggono.
  • Il database, esportato con un dump anziché copiato mentre è in funzione.
mysqldump --single-transaction --quick --routines --triggers --events dbname | gzip > db.sql.gz

--single-transaction prende un'istantanea coerente senza bloccare il sito. --routines, --triggers ed --events includono le parti che un dump nudo lascia fuori in silenzio.

I quattro che si dimenticano

  • La posta. Sta sullo stesso server e non entra mai nel backup del sito. Perdere cinque anni di posta è peggio che perdere il sito.
  • I lavori pianificati. Non sono file del tuo sito. crontab -l, e salva il risultato.
  • La configurazione del server. Il blocco Nginx, il pool PHP, il certificato. Ricostruirli a memoria è la parte più lenta di qualsiasi ripristino.
  • Il DNS. Un'esportazione della zona. Rifare trenta record a mano mentre il sito è giù è esattamente brutto quanto sembra.
crontab -l > cron.txt
cp -a /etc/nginx/sites-available/mysite .
cp -a /etc/php/8.3/fpm/pool.d/mysite.conf .

E le credenziali

Un backup cifrato la cui chiave stava solo sul server che è morto non è un backup. Tieni la chiave altrove, e annota dove.

La prova che lo dimostra

Ripristina su un server vuoto senza aprire nessun altro documento. Tutto ciò che sei costretto a cercare altrove è ciò che manca al backup.

I backup automatici di EGPHP coprono file, database e posta, ed EGPNL ripristina ciascuno di essi per conto proprio. Questa pagina è la lista di controllo per tutto ciò che salvi da solo.