Rsync per Linux: sincronizzazione, copia e backup dei file
9 min di lettura - 24 maggio 2025

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:
| Flag | Cosa fa |
|---|---|
-a | Modalità archivio. Mantiene permessi, proprietà, collegamenti simbolici e timestamp. Equivalente a -rlptgoD. |
-v | Verbose. Elenca i file in fase di trasferimento. |
-z | Comprimere durante il trasferimento. Utile su connessioni lente o costose, meno utile in LAN o per contenuti già compressi. |
-P | Combina --partial e --progress. Riprende i trasferimenti interrotti, mostra l'avanzamento in tempo reale. |
--delete | Elimina i file sulla destinazione che non esistono sull'origine. Necessario per un vero mirror. |
--exclude | Salta i file che corrispondono a un modello. |
--exclude-from=FILE | Leggi i modelli di esclusione da un file. Più pulito rispetto al concatenamento di molti --exclude flag. |
--dry-run | Mostra cosa succederebbe senza trasferire nulla. |
--bwlimit=KBPS | Limita l'utilizzo della larghezza di banda in kilobyte al secondo. Utile per i backup che vengono eseguiti durante l'orario di lavoro. |
--checksum | Confronta i file in base al checksum anziché alle dimensioni e alla data di modifica. Più lento ma rileva i casi limite. |
-e ssh | Utilizza 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 /destinationuna 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:
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-hostUno 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>&1Rendilo eseguibile con
chmod +x.Una voce cron per eseguirlo. Modificalo con
crontab -e:0 2 * * * /usr/local/bin/rsync-backup.shQuesto 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
-aper la modalità archivio,-zper la compressione,-Pper il ripristino e il monitoraggio dei progressi,--deleteper 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.

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

Avete domande o avete bisogno di una soluzione personalizzata?
Opzioni flessibili
Portata globale
Distribuzione immediata
Opzioni flessibili
Portata globale
Distribuzione immediata