Prima o poi succede: un aggiornamento che rompe il sistema, un rm -rf nella cartella sbagliata, un plugin vulnerabile che apre la porta a qualcuno, un servizio scaduto. In tutti questi casi c'è una sola cosa che fa la differenza tra un brutto pomeriggio e un disastro: avere un backup che funziona.
La regola 3-2-1
È la regola più semplice e più usata per i backup:
- 3 copie dei dati: l'originale più due backup;
- su 2 supporti o sistemi diversi;
- di cui 1 fuori sede, lontana dal server originale.
Il punto chiave è l'ultimo. Un backup che sta sullo stesso server dei dati non ti protegge se il server viene cancellato, compromesso o non si avvia più. E un backup che si trova solo nel pannello del provider è comodo, ma non è indipendente.
Snapshot e backup non sono la stessa cosa
Gli snapshot e i backup del pannello sono ottimi per tornare indietro in fretta, per esempio prima di un aggiornamento importante. Ma vivono vicino al server. Per i dati che non puoi permetterti di perdere serve anche una copia esterna, che puoi verificare e ripristinare da sola.
Un esempio concreto: restic su una storage box
restic cifra e deduplica i backup, quindi conserva tante versioni in poco spazio. Su una storage box ci si collega via SFTP:
export RESTIC_REPOSITORY=sftp://<utente>@<host>:<porta>/backups/web1
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init
restic backup /etc /var/www /home
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
Qualche accorgimento:
- database: fai un dump (
mysqldump,pg_dump) prima del backup e includi quello, invece di copiare i file del database mentre è acceso; - un sotto-utente per server: così un server compromesso non può leggere o cancellare i backup degli altri;
- snapshot programmati sulla box: proteggono anche dal caso in cui sia il server stesso a cancellare i propri backup;
- la password di restic tienila fuori dal server: senza, i backup non li legge nessuno, nemmeno noi.
Il backup che non hai mai provato non esiste
Ogni tanto ripristina qualche file in una cartella temporanea e controllalo:
restic restore latest --target /tmp/restore-test
È l'unico modo per sapere che, il giorno in cui ti servirà, il backup funzionerà davvero. Automatizza tutto con cron o un timer di systemd e controlla i log di tanto in tanto: un backup che fallisce in silenzio da tre mesi è il peggiore di tutti.