Fare backup regolari di un VPS Linux o comunque sia di un server Linux in generale (incluso Raspberry PI) è una delle operazioni più importanti per evitare perdite di dati dovute a errori umani, aggiornamenti andati male, compromissioni o guasti del server. Una buona strategia non dovrebbe limitarsi a creare copie locali, ma includere anche un backup automatico verso una destinazione esterna e possibilmente cifrata.

In questa guida vedremo come configurare un sistema di backup automatico di un VPS Linux con Restic e rclone. Restic è un software di backup che salva revisioni multiple dei file in un repository cifrato e supporta operazioni come backup, restore, forget e prune, mentre rclone è molto utile per collegare il server a vari storage remoti.

Perché usare Restic e rclone

Restic è molto apprezzato perché consente di creare backup cifrati, incrementali e con versioning, mantenendo più snapshot nel tempo. La documentazione ufficiale mostra chiaramente che il programma gestisce repository cifrati e offre comandi dedicati per inizializzare il repository, creare backup, ripristinare dati e ripulire gli snapshot non più necessari.

Rclone, invece, permette di configurare facilmente una destinazione remota, come WebDAV, object storage o altri servizi compatibili, e rende più semplice usare un backend off-site per i backup del VPS.

Requisiti minimi consigliati

Per seguire questa guida ti consiglio almeno:

  • un VPS con Debian 12 o 13, Ubuntu 22.04 oppure Ubuntu 24.04;
  • 1 vCPU;
  • 1 GB di RAM minimo;
  • spazio locale sufficiente per file temporanei e log;
  • una destinazione remota configurabile con rclone, per esempio WebDAV o object storage (es: Amazon S3);

Questa guida è pensata per un piccolo server Linux che ospita siti web, configurazioni di sistema, container o piccoli servizi self-hosted.

Aggiornare il server

Prima di installare i pacchetti conviene aggiornare il sistema:

sudo apt update
sudo apt upgrade -y

Se necessario, riavvia il server:

sudo reboot

Installare Restic e rclone

Su Debian e Ubuntu puoi iniziare installando Restic dai repository:

sudo apt install -y restic curl unzip

Per rclone, la documentazione ufficiale mette a disposizione una procedura di installazione per Linux.

Un metodo pratico è questo:

curl https://rclone.org/install.sh | sudo bash

Dopo l’installazione, controlla che i due programmi siano disponibili:

restic version
rclone version

Configurare rclone

Ora devi configurare il collegamento allo storage remoto. Avvia la procedura interattiva:

rclone config

Da qui puoi creare un nuovo remote, scegliere il tipo di storage e inserire i parametri richiesti dal provider. Per esempio, se usi WebDAV o uno storage compatibile S3, sarà sufficiente seguire i passaggi mostrati a schermo e salvare il profilo con un nome riconoscibile, per esempio backupremoto.

Per verificare che rclone riesca a raggiungere la destinazione, puoi provare:

rclone lsd backupremoto:

Se ottieni una risposta valida, significa che il remote è configurato correttamente.

Preparare le directory e i file di configurazione

Per mantenere il tutto ordinato, creiamo una struttura semplice in /opt/backup-restic:

sudo mkdir -p /opt/backup-restic
sudo mkdir -p /opt/backup-restic/logs
sudo touch /opt/backup-restic/include.txt
sudo touch /opt/backup-restic/exclude.txt
sudo touch /opt/backup-restic/restic-password.txt
sudo chmod 700 /opt/backup-restic
sudo chmod 600 /opt/backup-restic/restic-password.txt

Ora inserisci una password robusta nel file password:

sudo nano /opt/backup-restic/restic-password.txt

All’interno metti una sola riga con la password del repository Restic.

Apri poi il file delle directory da includere:

sudo nano /opt/backup-restic/include.txt

Per un VPS classico, un esempio iniziale può essere questo:

/etc
/var/www
/home
/root
/opt

Adesso crea il file delle esclusioni:

sudo nano /opt/backup-restic/exclude.txt

Puoi partire con qualcosa di semplice come:

/var/cache
/var/tmp
/tmp
/proc
/sys
/dev
/run
/mnt
/media
/lost+found

Inizializzare il repository Restic

Restic lavora su un repository cifrato. La documentazione ufficiale indica che il comando da usare per inizializzarlo è restic init.

In questo esempio useremo un repository raggiunto tramite rclone. Sostituisci backupremoto e il percorso remoto con i tuoi valori reali:

export RESTIC_REPOSITORY="rclone:backupremoto:vps-restic-repo"
export RESTIC_PASSWORD_FILE="/opt/backup-restic/restic-password.txt"

Ora inizializza il repository:

sudo restic init

Se tutto è corretto, Restic creerà il repository cifrato sul backend remoto configurato.

Eseguire il primo backup manuale

Prima di automatizzare tutto, è importante verificare che il backup funzioni manualmente.

sudo restic backup \
  --files-from /opt/backup-restic/include.txt \
  --exclude-file /opt/backup-restic/exclude.txt

Questo comando crea un primo snapshot dei percorsi inclusi. La documentazione di Restic indica che il comando backup serve proprio a creare una nuova copia dei file e delle directory nel repository configurato.

Per vedere gli snapshot presenti:

sudo restic snapshots

Impostare la retention e la pulizia automatica

Con il passare del tempo il repository accumulerà più snapshot. Per evitare che cresca senza controllo, Restic mette a disposizione il comando forget e la pulizia con --prune. La documentazione mostra chiaramente esempi di utilizzo come restic forget --keep-last 1 --prune.

Una policy semplice e adatta a molti server può essere questa:

sudo restic forget \
  --keep-daily 7 \
  --keep-weekly 4 \
  --keep-monthly 6 \
  --keep-yearly 1 \
  --prune

Con questa regola mantieni:

  • gli ultimi 7 backup giornalieri;
  • gli ultimi 4 backup settimanali;
  • gli ultimi 6 backup mensili;
  • l’ultimo backup annuale.

Creare uno script automatico di backup

Ora possiamo racchiudere tutto in uno script semplice da eseguire ogni giorno.

sudo nano /opt/backup-restic/backup.sh

Inserisci questo contenuto:

#!/bin/bash

export RESTIC_REPOSITORY="rclone:backupremoto:vps-restic-repo"
export RESTIC_PASSWORD_FILE="/opt/backup-restic/restic-password.txt"

LOGFILE="/opt/backup-restic/logs/backup-$(date +%F).log"

restic backup \
  --files-from /opt/backup-restic/include.txt \
  --exclude-file /opt/backup-restic/exclude.txt >> "$LOGFILE" 2>&1

restic forget \
  --keep-daily 7 \
  --keep-weekly 4 \
  --keep-monthly 6 \
  --keep-yearly 1 \
  --prune >> "$LOGFILE" 2>&1

Salva il file e rendilo eseguibile:

sudo chmod +x /opt/backup-restic/backup.sh

Provalo manualmente:

sudo /opt/backup-restic/backup.sh

Infine controlla il log:

sudo tail -n 50 /opt/backup-restic/logs/backup-$(date +%F).log

Automatizzare con cron

Per mantenere tutto semplice e adatto ai principianti, cron resta una soluzione chiara e immediata.

Apri il crontab di root:

sudo crontab -e

Aggiungi questa riga per eseguire il backup ogni notte alle 03:30:

30 3 * * * /opt/backup-restic/backup.sh

Da questo momento il VPS eseguirà automaticamente il backup secondo la pianificazione indicata.

Controllare il repository

Ogni tanto conviene verificare che il repository non presenti errori. Restic include anche il comando check tra le sue operazioni ufficiali.

export RESTIC_REPOSITORY="rclone:backupremoto:vps-restic-repo"
export RESTIC_PASSWORD_FILE="/opt/backup-restic/restic-password.txt"

sudo restic check

Come ripristinare un backup

Un backup è davvero utile solo se sai anche ripristinarlo. La documentazione ufficiale di Restic mostra che per estrarre uno snapshot si usa il comando restore con una directory target.

Per esempio, prima visualizza gli snapshot:

sudo restic snapshots

Supponiamo ora di voler ripristinare l’ultimo snapshot in una directory temporanea:

sudo mkdir -p /tmp/restore-test
sudo restic restore latest --target /tmp/restore-test

La documentazione mostra esplicitamente che si può usare anche latest o un ID snapshot specifico per il ripristino.

In questo modo puoi controllare i file ripristinati prima di copiarli nuovamente nella posizione definitiva.

Cosa conviene includere davvero nel backup

Su un VPS Linux conviene quasi sempre salvare almeno:

  • /etc per le configurazioni di sistema;
  • /var/www per siti web e applicazioni pubblicate;
  • /home per file utente;
  • /opt per software e stack personalizzate, ad esempio se hai seguito le nostre guide, solitamente creiamo in quel percorso una cartella con lo stack di Docker dei vari software;
  • eventuali dump di database generati prima del backup.

Se ospiti database MySQL, MariaDB o PostgreSQL, il consiglio pratico è generare prima un dump e includere anche quello nel backup, invece di affidarti solo ai file grezzi del motore database.

Problemi comuni

Rclone non vede il remote

Controlla il file di configurazione di rclone e verifica con rclone lsd nome-remote: che la destinazione sia raggiungibile.

Restic chiede sempre la password

Assicurati di aver esportato correttamente RESTIC_PASSWORD_FILE, perché la documentazione di Restic prevede esplicitamente l’uso di --password-file oppure della variabile ambiente corrispondente.

Il backup va a buon fine ma occupa troppo spazio

In questo caso controlla sia il file delle esclusioni sia la policy di retention. Il comando forget --prune serve proprio a rimuovere snapshot e dati non più necessari dal repository.

Non so se il backup sia davvero ripristinabile

Fai sempre una prova reale di restore in una directory temporanea, perché è l’unico modo concreto per verificare che il repository sia leggibile e che i dati siano davvero recuperabili. La documentazione Restic mostra il restore come operazione standard e semplice da eseguire.

FAQ

Restic cifra davvero i backup?

Sì. La documentazione di Restic descrive il repository come un archivio di backup cifrato, progettato per salvare più revisioni di file e directory su diversi backend.

Posso usare Restic e rclone per backup off-site di un VPS?

Sì. Restic può usare repository su backend diversi, mentre rclone è pensato proprio per collegare Linux a numerosi storage remoti, quindi la combinazione è adatta a backup off-site cifrati.

Considerazioni finali

Usare Restic e rclone per i backup automatici di un VPS Linux è una soluzione pratica, relativamente semplice e molto flessibile. Con pochi passaggi puoi ottenere backup cifrati, retention automatica e ripristino controllato dei dati usando i comandi ufficiali previsti dalla documentazione di Restic.
Per un piccolo server personale o per servizi self-hosted, questa configurazione è un ottimo punto di partenza. Una volta verificato che il sistema funzioni bene, puoi estenderlo con dump database automatici, notifiche via email o Telegram e controlli periodici del repository.

Rispondi