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:
/etcper le configurazioni di sistema;/var/wwwper siti web e applicazioni pubblicate;/homeper file utente;/optper 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.

