Rsync per Linux: sincronizzazione, copia e backup dei file

9 min di lettura - 24 maggio 2025

hero section cover
Indice
  • Rsync per Linux: come sincronizzare, copiare ed eseguire il backup dei file come un professionista
  • Cos'è rsync?
  • Perché utilizzare rsync anziché cp o scp
  • Flag rsync comuni
  • Esempi di rsync
  • Automatizzare rsync con cron
  • Considerazioni finali
Condividi

Come usare rsync su Linux per trasferimenti incrementali, sincronizzazioni remote su SSH, backup programmati con cron ed evitare la trappola del trailing-slash.

Rsync per Linux: come sincronizzare, copiare ed eseguire il backup dei file come un professionista

Rsync è lo strumento standard per copiare file tra sistemi Linux. È più veloce di cp o scp per qualsiasi operazione che si esegue più di una volta, si riprende in caso di interruzioni di rete e trasferisce solo ciò che è effettivamente cambiato. Questo post illustra cosa fa rsync, i flag che vale la pena conoscere, gli esempi a cui si ricorrerà più spesso e come pianificarlo con cron.


 

Cos'è rsync?

Rsync è un'utilità da riga di comando per copiare e sincronizzare file tra diverse posizioni. Funziona localmente, tramite SSH su un host remoto o con un demone rsync. La differenza fondamentale rispetto a cp o scp: rsync confronta prima la sorgente e la destinazione, poi trasferisce solo le differenze. In una directory da 100 GB in cui sono stati modificati 200 MB, rsync trasferisce 200 MB. cp e scp sposta tutto.

È incluso in ogni moderna distribuzione Linux. Se manca: apt install rsync oppure dnf install rsync.

Perché utilizzare rsync anziché cp o scp

Tre motivi per cui rsync è la scelta migliore per qualsiasi copia non banale:

  • È incrementale. Le esecuzioni successive trasferiscono solo i byte modificati, non interi file. Per i backup e i mirror, ciò trasforma un lavoro notturno in pochi minuti.
  • Resiste alle interruzioni. Con --partial, un file da 50 GB trasferito a metà riprende da dove si era interrotto invece di ricominciare da capo.
  • Conserva i metadati. La modalità archivio (-a) mantiene i permessi, la proprietà, i collegamenti simbolici e i timestamp. È fondamentale per i file di sistema, gli alberi di sorgenti e qualsiasi cosa in cui gli attributi siano importanti.

Per copie una tantum di file di piccole dimensioni, scp va bene. Per qualsiasi cosa che si ripete, che richiede molta larghezza di banda o che potrebbe essere necessario riprendere, usa rsync.

Flag rsync comuni

I flag che userete effettivamente:

FlagCosa fa
-aModalità archivio. Mantiene permessi, proprietà, collegamenti simbolici e timestamp. Equivalente a -rlptgoD.
-vVerbose. Elenca i file in fase di trasferimento.
-zComprimere durante il trasferimento. Utile su connessioni lente o costose, meno utile in LAN o per contenuti già compressi.
-PCombina --partial e --progress. Riprende i trasferimenti interrotti, mostra l'avanzamento in tempo reale.
--deleteElimina i file sulla destinazione che non esistono sull'origine. Necessario per un vero mirror.
--excludeSalta i file che corrispondono a un modello.
--exclude-from=FILELeggi i modelli di esclusione da un file. Più pulito rispetto al concatenamento di molti --exclude flag.
--dry-runMostra cosa succederebbe senza trasferire nulla.
--bwlimit=KBPSLimita l'utilizzo della larghezza di banda in kilobyte al secondo. Utile per i backup che vengono eseguiti durante l'orario di lavoro.
--checksumConfronta i file in base al checksum anziché alle dimensioni e alla data di modifica. Più lento ma rileva i casi limite.
-e sshUtilizza SSH per il trasferimento. Implicito nella maggior parte delle installazioni moderne.

Il comportamento predefinito confronta la dimensione del file e la data di modifica, il che è veloce e quasi sempre corretto. Passare a --checksum se un processo di distribuzione riscrive i timestamp senza modificare il contenuto, o se sospetti un danneggiamento a livello di bit.

Esempi di rsync

Copiare una directory localmente:

rsync -av /source/path/ /destination/path/

Sincronizzare con un server remoto tramite SSH:

rsync -avz /local/dir/ user@remote:/remote/dir/

Eseguire una simulazione prima di compiere operazioni irreversibili:

rsync -avz --dry-run /local/dir/ user@remote:/dir/

Eseguire il mirroring di due directory, incluse le eliminazioni sulla destinazione:

rsync -av --delete /source/ /destination/

Escludere i log e una directory temporanea:

rsync -av --exclude='*.log' --exclude='tmp/' /src/ /dest/

Riprendere un trasferimento di grandi dimensioni che potrebbe essere stato interrotto:

rsync -avP user@remote:/backups/big.img /local/

Se la sessione SSH si interrompe, eseguire nuovamente lo stesso comando. Con -P, rsync riprende da dove si era interrotto invece di ricominciare da zero.

Limitare la larghezza di banda a 50 MB/s per un backup fuori dalle ore di punta in modo che non saturi l'uplink:

rsync -avz --bwlimit=50000 /local/dir/ user@remote:/dir/

La trappola della barra finale

L'errore più comune con rsync:

rsync -av /source  /destination/    # copies the 'source' directory INTO /destination
rsync -av /source/ /destination/    # copies the CONTENTS of /source into /destination

una barra finale nella directory di origine significa "tutto ciò che si trova all'interno di questa directory". L'assenza di barra finale significa "questa directory stessa". Esegui con --dry-run prima se non sei sicuro, specialmente se combinato con --delete.

Automatizzare rsync con cron

Per i backup programmati, sono necessari tre elementi:

  1. Accesso SSH senza password alla destinazione. I cron job non possono digitare password. Generare una chiave e copiarla sull'host di backup:

    ssh-keygen -t ed25519
    ssh-copy-id user@backup-host
  2. Uno script, non una riga singola in crontab. Più facile da testare, più facile da registrare:

    #!/bin/bash
    LOG=/var/log/rsync-backup.log
    rsync -az --delete /etc/ user@backup:/backups/$(hostname)/etc/ >> "$LOG" 2>&1

    Rendilo eseguibile con chmod +x.

  3. Una voce cron per eseguirlo. Modificalo con crontab -e:

    0 2 * * * /usr/local/bin/rsync-backup.sh

    Questo esegue lo script ogni notte alle 02:00.

Due miglioramenti che vale la pena apportare in produzione: racchiudere lo script in flock in modo che un'operazione di lunga durata non si sovrapponga all'esecuzione della notte successiva, e reindirizzare l'output tramite logger in modo che gli errori finiscano nel registro di sistema dove il monitoraggio possa rilevarli.

Considerazioni finali

Rsync è uno dei pochi strumenti Linux in cui il tempo speso per imparare i flag viene ripagato quasi immediatamente. I punti principali:

  • I trasferimenti incrementali e il supporto alla ripresa rendono rsync la scelta giusta per qualsiasi operazione che si esegue più di una volta
  • -a per la modalità archivio, -z per la compressione, -P per il ripristino e il monitoraggio dei progressi, --delete per i mirror veri e propri
  • Fai attenzione alla barra finale nel percorso di origine, specialmente con --delete
  • Abbinalo a cron e alle chiavi SSH per backup pianificati automatici

Per lavori di backup di grandi dimensioni che spostano dati tra strutture, l'esecuzione di rsync su un VPS con larghezza di banda illimitata significa che le finestre di backup non sono limitate da limiti di trasferimento.

Blog

In primo piano questa settimana

Altri articoli
Affaticamento degli occhi da schermi digitali: come proteggere la vista in un mondo dominato dagli schermi

Affaticamento degli occhi da schermi digitali: come proteggere la vista in un mondo dominato dagli schermi

Passi tutto il giorno davanti allo schermo? Scopri come ridurre l’affaticamento visivo da schermo con tecniche e strumenti collaudati. Questa guida è indispensabile per i lavoratori da remoto, gli sviluppatori e chiunque operi nel settore tecnologico.

4 min di lettura - 21 maggio 2025

Perché è importante disporre di un VPS potente e senza limiti di traffico

8 min di lettura - 9 maggio 2025

Altri articoli
background image

Avete domande o avete bisogno di una soluzione personalizzata?

icon

Opzioni flessibili

icon

Portata globale

icon

Distribuzione immediata

icon

Opzioni flessibili

icon

Portata globale

icon

Distribuzione immediata