Loading...

Approfondimento Tech

Backup sincronizzati con rsync

Scopri cos'è rsync, come funziona e come usarlo su Linux e Windows per creare backup sincronizzati locali o remoti.

Software per il backup

Indice dei contenuti

  • Cos’è rsync e perché usare questo software per il backup in remoto
  • Come funziona rsync: trasferimento differenziale
  • Sintassi e opzioni principali di rsync
  • Come effettuare un backup in una cartella remota
  • Storage del backup su Cloud

La protezione dei dati è una delle priorità assolute, e in questo ambito i backup ricoprono un ruolo strategico.

Tuttavia, creare copie di sicurezza dei file in modo manuale o inefficiente può portare a errori, ritardi e perdite di dati. Qui entra in gioco rsync, uno strumento potente e flessibile, perfetto per realizzare backup sincronizzati sia in locale che in remoto.

In questo articolo vedremo in dettaglio cos’è rsync, come funziona, come si installa e come usarlo correttamente, anche su Cloud.

Cos’è rsync e perché usare questo software per il backup in remoto

rsync è un’utilità open source sviluppata per sistemi Unix-like (come Linux, macOS e BSD), ma disponibile anche per Windows tramite ambienti come WSL (Windows Subsystem for Linux) o Cygwin.

La sua funzione principale è la sincronizzazione efficiente di file e directory tra due posizioni: possono essere locali (ad esempio tra due dischi sullo stesso sistema) oppure remote (tramite una rete o Internet).

Come funziona rsync: trasferimento differenziale

L’efficacia di rsync deriva dal suo algoritmo di sincronizzazione differenziale. In pratica, il software confronta i file sorgente e quelli di destinazione e trasferisce solo le differenze, evitando di riscrivere file già identici. Questo approccio lo rende molto veloce e ottimizza la larghezza di banda.

Un altro vantaggio è la capacità di mantenere i metadati dei file: permessi, timestamp, proprietà, collegamenti simbolici, e così via.

Perché rsync è utile per la cyber security

In ambito cyber security, il backup è uno dei pilastri fondamentali della resilienza informatica. Un backup eseguito male o non aggiornato equivale a non averlo. rsync risponde perfettamente a queste esigenze grazie a:

  • Sicurezza
    Può usare SSH per cifrare il canale di comunicazione, garantendo confidenzialità e integrità dei dati.
  • Affidabilità
    Robusto e ampiamente testato, utilizzato anche in ambienti di produzione.
  • Automazione
    Facilmente integrabile in script bash o in crontab per pianificare esecuzioni periodiche.
  • Scalabilità
    Può essere usato su file system locali, su server aziendali, VPS o su istanze cloud.

Esempio pratico di backup remoto con SSH

rsync -azv /home/utente/dati/ utente@serverremoto.it:/home/backup/dati/

Spiegazione:

  • -a: modalità archivio (mantiene struttura e metadati)
  • -z: comprime i dati per ridurre il traffico
  • -v: output dettagliato (verbose)
  • utente@serverremoto.it: connessione via SSH al server remoto

Il sistema chiederà la password SSH, a meno che non sia stata configurata l’autenticazione tramite chiavi SSH, cosa altamente consigliata per la sicurezza e l’automazione.

Esempio di uso in uno script automatico:

#!/bin/bash

SOURCE="/home/utente/progetti/"

DEST="utente@serverremoto.it:/backup/progetti/"

LOG="/var/log/backup_rsync.log"

rsync -azv --delete "$SOURCE" "$DEST" >> "$LOG" 2>&1

Il flag –delete serve a rimuovere dal backup i file che non esistono più nella sorgente, mantenendo una copia perfettamente sincronizzata.

Prerequisiti per creare un sistema di backup con rsync

Per creare un sistema affidabile di backup sincronizzati con rsync, è essenziale partire con una configurazione solida. In un contesto professionale o aziendale, questi prerequisiti garantiscono sicurezza, efficienza e continuità operativa.

1. Accesso root o sudo

Molte operazioni di backup richiedono il salvataggio di file di sistema o directory con permessi elevati. Per questo è necessario disporre dei privilegi root o dell’accesso tramite sudo.

Esempio:

sudo rsync -az /etc/ /mnt/backup/etc/

In questo esempio viene effettuato il backup della directory /etc/, accessibile solo con permessi amministrativi.

2. Server di destinazione con rsync installato

Se il backup è locale, il server può essere un secondo disco o una directory di rete montata. Se invece è remoto, il server di destinazione deve avere rsync installato e configurato per ricevere i dati.

Verifica installazione:

rsync --version

Su un server Ubuntu remoto:

ssh utente@serverremoto "which rsync || sudo apt install rsync"

3. Connessione SSH attiva (per backup remoti)

Per garantire sicurezza nella trasmissione, rsync sfrutta SSH per cifrare i dati inviati. È fondamentale che la porta SSH (di default la 22) sia aperta e accessibile.

Esempio:

rsync -az /home/utente/dati/ utente@192.168.1.101:/home/backup/dati/

In questo caso, la connessione SSH è implicita nel formato utente@host.

4. Conoscenze base della riga di comando

rsync è un programma CLI (Command Line Interface): ciò significa che per usarlo è indispensabile saper lavorare nella shell di Linux o Bash. Tra i comandi fondamentali da conoscere:

  • cd, ls, mkdir, rm, nano o vim
  • chmod, chown, scp, ssh
  • Redirezione output (>, >>) e piping (|)

Esempio semplice:

mkdir -p /mnt/backup/logs/

rsync -av /var/log/ /mnt/backup/logs/

5. Policy di backup ben definita

Un sistema di backup efficace non si improvvisa. Prima di avviare rsync, è utile stabilire:

  • Cosa deve essere salvato? (es. solo dati utente, database, configurazioni?)
  • Quando deve essere eseguito il backup? (es. ogni notte, settimanalmente?)
  • Dove vengono salvati i file? (locale, NAS, server esterno, Cloud?)

Esempio di strategia di backup:

ElementoDestinazioneFrequenza
/home/user/mnt/backup/home/Giornaliero
/etc/mnt/backup/system/Settimanale
/var/lib/mysqlServer remoto via SSHOgni 12 ore

6. Server di destinazione sicuro e aggiornato

Quando si tratta di backup remoto, il server ricevente deve rispettare requisiti di sicurezza informatica:

  • Sistema aggiornato e patchato
  • Accesso limitato agli utenti autorizzati
  • Firewall configurato correttamente
  • SSH configurato con autenticazione a chiave pubblica/privata

Configurazione chiavi SSH:

Sul client:

ssh-keygen -t rsa -b 4096

ssh-copy-id utente@serverremoto

Dopo questa configurazione, rsync potrà essere automatizzato senza richiedere password, riducendo il rischio di errore umano.

Come installare rsync

Su molti sistemi Linux, rsync è già installato di default. Tuttavia, se così non fosse, l’installazione è molto semplice.

Su Debian/Ubuntu:

sudo apt update

sudo apt install rsync

Su CentOS/RHEL/Fedora:

sudo dnf install rsync

Su Arch Linux:

sudo pacman -S rsync

Su macOS:

brew install rsync

Su Windows:

Puoi usare rsync su Windows tramite WSL (Windows Subsystem for Linux) oppure tramite Cygwin. L’uso con WSL è consigliato per chi cerca maggiore compatibilità:

wsl sudo apt install rsync

syntax

Sintassi e opzioni principali di rsync

La sintassi base di rsync è:

rsync [opzioni] origine destinazione

Vediamo ora alcune delle opzioni più usate:

  • -a: modalità archivio (mantiene permessi, timestamp, ecc.)
  • -v: modalità verbose (output dettagliato)
  • -z: comprime i dati durante il trasferimento
  • -p: mantiene i permessi
  • -h: mostra i numeri in formato leggibile (es. 1K, 234M)
  • –progress: mostra lo stato del trasferimento

Esempio completo:

rsync -avzh --progress /home/user/dati/ backup@192.168.1.100:/mnt/backup/

In questo comando stiamo eseguendo un backup remoto di una cartella /home/user/dati/ verso un server remoto con compressione, mantenendo i permessi e mostrando i progressi.

  • Come effettuare un backup in una cartella locale
    Effettuare un backup locale con rsync è il modo ideale per cominciare a usare questo strumento. È semplice, veloce e ti consente di sperimentare le opzioni principali senza dover configurare connessioni remote o SSH.

Caso d’uso: copia della cartella documenti

Supponiamo di voler salvare una copia della cartella /home/user/documenti all’interno di un disco secondario montato su /mnt/backup.

Il comando sarà:

rsync -avh /home/user/documenti/ /mnt/backup/documenti/

Cosa fa questo comando?

  • -a: modalità archivio, copia ricorsivamente e preserva permessi, proprietà, collegamenti simbolici e timestamp
  • -v: verbose, stampa a video i file copiati
  • -h: human-readable, mostra le dimensioni dei file in un formato leggibile (es. 1.4K, 22M)

Differenza tra usare o meno la barra finale

  • Con la barra / finale: copia solo il contenuto della directory, non la directory stessa.
  • Senza la barra: include anche la directory nella destinazione.

Esempio con barra finale:

rsync -avh /home/user/documenti/ /mnt/backup/documenti/

Risultato: il contenuto di documenti viene copiato dentro /mnt/backup/documenti/

Esempio senza barra finale:

rsync -avh /home/user/documenti /mnt/backup/

Risultato: viene creata la directory documenti dentro /mnt/backup/, e poi vi si copia il contenuto.

Backup incrementale: solo file modificati

Uno dei vantaggi principali di rsync è che, quando ripeti un backup, vengono copiati solo i file modificati.

Esempio

Primo backup (copierà tutto):

rsync -avh /home/user/documenti/ /mnt/backup/documenti/

Secondo backup dopo una modifica:

rsync -avh /home/user/documenti/ /mnt/backup/documenti/

Solo i file nuovi o modificati verranno aggiornati, riducendo drasticamente i tempi di esecuzione.

Suggerimenti aggiuntivi

Log del backup:
rsync -avh /home/user/documenti/ /mnt/backup/documenti/ >> /var/log/rsync_backup.log 2>&1

Escludere file temporanei o cache:

rsync -avh –exclude ‘*.tmp’ /home/user/documenti/ /mnt/backup/documenti/

Modalità simulazione (dry-run):

rsync -avh –dry-run /home/user/documenti/ /mnt/backup/documenti/

Come effettuare un backup in una cartella remota

Il vero potenziale di rsync si manifesta nella sua capacità di gestire backup remoti in modo sicuro, efficiente e automatizzabile. Questo è particolarmente utile in ambienti professionali dove i dati devono essere replicati su server esterni, sia per motivi di sicurezza sia per creare copie di emergenza in località fisicamente distanti.

Backup remoto via SSH: esempio base

rsync -azp /var/www/ user@remote.server:/home/backup/www/

Spiegazione delle opzioni:

  • -a: modalità archivio, mantiene la struttura, i permessi, i timestamp e i link simbolici
  • -z: compressione, riduce il volume di dati trasferiti
  • -p: permessi, garantisce che i file mantengano i diritti di accesso originari
  • user@remote.server: connessione al server remoto via SSH (porta 22 per impostazione predefinita)

Il comando copia in modo ricorsivo tutto il contenuto della directory /var/www/ verso il server remoto nella directory /home/backup/www/.

Differenza tra con e senza barra finale

  • Con /var/www/ (con barra): copia solo il contenuto della directory
  • Con /var/www (senza barra): copia la directory stessa e il contenuto

Uso di SSH con autenticazione a chiave

Per evitare di dover inserire manualmente la password ad ogni esecuzione del backup, è buona pratica configurare l’autenticazione con chiavi SSH.

1. Generare la chiave sul client:

ssh-keygen -t rsa -b 4096

2. Copiare la chiave sul server remoto:

ssh-copy-id user@remote.server

Dopo questa configurazione, rsync potrà connettersi senza password:

rsync -azp /var/www/ user@remote.server:/home/backup/www/

Esempio completo in uno script bash

#!/bin/bash

ORIGINE="/var/www/"

DESTINAZIONE="user@remote.server:/home/backup/www/"

LOG="/var/log/rsync_remoto.log"

rsync -azp --delete "$ORIGINE" "$DESTINAZIONE" >> "$LOG" 2>&1

Lo script può essere poi schedulato con cron per eseguire il backup ogni notte alle 2:

0 2 * * * /path/to/script.sh

Altri suggerimenti utili

  • Aggiungere l’opzione –progress per monitorare i trasferimenti in tempo reale
  • Usare –exclude per evitare di copiare file temporanei o di cache

Specificare una porta SSH diversa se non si usa la 22:
rsync -azp -e “ssh -p 2222” /var/www/ user@remote.server:/home/backup/www/

Pianificare una procedura di backup con rsync

Uno dei punti di forza di rsync è la possibilità di essere integrato con cron, il gestore di processi programmati in Linux.

Ecco come creare un backup automatico ogni giorno alle 2 di notte:

crontab -e

Aggiungere la riga:

0 2 * * * rsync -azp /dati/ user@192.168.1.100:/backup/dati/

Per rendere il backup più affidabile, si può creare uno script bash:

#!/bin/bash

rsync -azp /dati/ user@192.168.1.100:/backup/dati/ >> /var/log/rsync.log 2>&1

E poi richiamarlo dal crontab.

Storage del backup su Cloud

Usare rsync in combinazione con un Cloud provider è possibile, a patto di avere accesso SSH o FTP/SFTP al servizio. Ad esempio, molti servizi VPS o anche istanze AWS, Azure o Google Cloud supportano questo tipo di configurazione.

Esempio con un server su AWS EC2:

rsync -azp -e "ssh -i ~/.ssh/aws-key.pem" /home/user/dati/ ec2-user@aws-instance:/mnt/cloud_backup/

In alternativa, per servizi come Dropbox, Google Drive o OneDrive, si possono usare tool come rclone, che simulano l’ambiente file system remoto e possono essere combinati con rsync in locale.


Domande e risposte

  1. rsync funziona su Windows?
    Sì, tramite WSL o Cygwin.
  2. rsync può fare backup incrementali?
    Sì, trasferisce solo le differenze tra file.
  3. rsync usa SSH per connessioni remote?
    Sì, per impostazione predefinita.
  4. Posso usare rsync per sincronizzare due dischi locali?
    Assolutamente sì.
  5. rsync supporta il Cloud?
    Sì, se il Cloud offre SSH o con strumenti come rclone.
  6. Cos’è l’opzione -avz?
    Modalità archivio, verbose e compressione dati.
  7. rsync è sicuro?
    Sì, se usato con SSH e buone pratiche.
  8. Posso pianificare rsync con cron?
    Sì, è molto comune.
  9. È possibile escludere file con rsync?
    Sì, con l’opzione –exclude.
  10. Dove trovo i log di rsync?
    Puoi reindirizzarli con >> rsync.log.
To top