OffshoreVps
Sicurezza8 ott 20268 min di letturaDi il team di OffshoreVps

Come fare il backup di un VPS con restic: automatico e cifrato

La regola 3-2-1, cosa salvare, una configurazione restic cifrata, uno script cron e perché devi testare un ripristino. Gli snapshot del provider non bastano.

Un VPS può guastarsi, essere cancellato per errore o rompersi con un cattivo aggiornamento. L’unica protezione è un backup che hai testato. Questa guida configura backup semplici, automatici e cifrati con strumenti gratuiti.

Finestra del terminale su un VPS che mostra i comandi usati per fare il backup di un VPS, a partire da “sudo apt install -y restic”
Il tipo di comandi che eseguirai sul tuo server in questa guida.

La regola 3-2-1

Tieni 3 copie dei tuoi dati, su 2 tipi diversi di storage, con 1 copia in un luogo completamente diverso. Per un VPS di solito significa i dati attivi, uno snapshot locale e una copia off-site presso un altro provider o in un altro paese.

Cosa salvare

  • File del sito e upload (/var/www).
  • Database, prima esportati in un file con un dump (non copiare mai i file di un database in funzione).
  • Configurazione: /etc/nginx, modifiche in /etc, file Docker Compose e volumi.
  • Cron job ed eventuali script personalizzati.

Puoi reinstallare il sistema operativo in pochi minuti. Quello che non puoi reinstallare sono i tuoi dati e le tue impostazioni.

Usa restic per backup cifrati e deduplicati

sudo apt install -y restic
export RESTIC_REPOSITORY=sftp:backup@other-server:/backups/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init

Crea il file della password con una lunga stringa casuale e conserva una copia in un posto sicuro. Se perdi questa password, i backup non possono essere aperti. restic supporta anche storage compatibile S3, quindi puoi inviare i dati a qualsiasi object store.

I passaggi di questa guida in ordine: 1. La regola 3-2-1; 2. Cosa salvare; 3. Usa restic per backup cifrati e deduplicati; 4. Uno script di backup; 5. Testa un ripristino; 6. Gli snapshot aiutano, ma non bastano
I passaggi di questa guida, in ordine.

Uno script di backup

#!/bin/bash
set -e
export RESTIC_REPOSITORY=sftp:backup@other-server:/backups/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-pass

mysqldump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz
restic backup /var/www /etc /var/backups/db.sql.gz
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

Salvalo come /usr/local/bin/backup.sh, rendilo eseguibile e pianificalo:

sudo chmod +x /usr/local/bin/backup.sh
echo "30 3 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1" | sudo tee /etc/cron.d/backup

Testa un ripristino

restic snapshots
restic restore latest --target /tmp/restore-test --include /etc/nginx

Un backup che non hai mai ripristinato è solo una speranza. Testa una volta a trimestre e sempre dopo aver cambiato qualcosa.

Gli snapshot aiutano, ma non bastano

Gli snapshot del provider sono rapidi e comodi prima di modifiche rischiose, ma vivono presso lo stesso provider e nello stesso account. Consideralo un comodo extra e tieni una copia indipendente off-site.