
Scrittura · 30 ott 2020
Come usare rsync per fare i backup
Spiegazione di un potente strumento di trasferimento file
È importantissimo fare il backup dei tuoi dati, perché non sai mai quando ti colpirà un disastro! Uno strumento potente e multipiattaforma che ti aiuta è 'rsync'. In questo post ti spiego perché rsync è utile e come usarlo per configurare i tuoi backup.
Rsync
Da quando è stato creato nel 1996 (da Andrew Tridgell e Paul Mackerras), rsync è diventato un'utilità standard disponibile sulle principali distribuzioni GNU/Linux, su Apple macOS, FreeBSD, NetBSD, OpenBSD e (tramite Cygwin o WSL) su Windows.
Caratteristiche principali
Rsync si usa tipicamente per sincronizzare file e cartelle tra due computer diversi. Può usare SSH per collegarsi a un altro computer e trasferire i file. Oltre ai computer remoti, puoi usare rsync per sincronizzare verso dischi rigidi esterni e unità NAS (network attached storage). Rsync è popolare perché:
- È distribuito con la licenza GNU General Public License, il che lo rende software libero; libero sia come in "libertà di parola" sia come in "birra gratis"
- L'algoritmo di rsync è un tipo di codifica delta, cioè riduce al minimo dati e traffico di rete perché copia solo le parti dei file che sono cambiate. In più, i dati possono essere compressi per ottimizzare ulteriormente il traffico del trasferimento.
- Può riprendere i trasferimenti interrotti grazie alla verifica del checksum. Questo permette a rsync di rilevare errori quando copia un file da un posto all'altro. Se due file differiscono anche di un solo bit, i loro checksum diventano diversi. La verifica del checksum è un modo efficiente per controllare che ogni byte sia arrivato correttamente a destinazione.
Installare rsync
Se usi GNU/Linux, *BSD o Apple macOS probabilmente hai già rsync installato. Se usi Windows puoi dare un'occhiata al Windows Subsystem for Linux o WSL per avere accesso a tutti gli strumenti standard di GNU/Linux. In alternativa a WSL, puoi usare Cygwin per installare su Windows la grande raccolta di strumenti GNU e open source.
Uso tipico di rsync
Si usa rsync dalla riga di comando, cioè dal terminale. Esegui il comando 'rsync' seguito da opzioni (facoltative), un percorso di origine e un percorso di destinazione.

Con le opzioni -arvz configuri rsync in questo modo:
- a: modalità "archivio", che conserva permessi, data di creazione e di ultima modifica
- r: modalità "ricorsiva", che permette a rsync di sincronizzare ricorsivamente le sottocartelle dentro le cartelle di origine e destinazione
- v: "verbose" attiva un output più dettagliato nella console, così puoi seguire l'avanzamento riga per riga
- z: "compress" attiva la compressione dei dati mentre vengono inviati alla macchina di destinazione, il che riduce la quantità di dati trasmessi, utile su connessioni lente o a consumo
- --delete: permette di eliminare i file sul lato remoto se vengono eliminati dalla cartella di origine. Con questa opzione devi stare attento!
Ci sono molte altre opzioni che ti permettono di personalizzare il comportamento di rsync secondo le tue esigenze. Dai un'occhiata alla pagina man di rsync per l'elenco completo.
Come usare rsync per il backup dei file
Nell'esempio che segue uso rsync per copiare una cartella ("Sample-Files") dal mio desktop Windows 10 a un server remoto. Uso WSL su Windows per avere un ambiente Debian_GNU/Linux funzionante nel mio Windows Terminal.

Ti spiego il comando che uso:
- rsync è il nome del programma che uso
- -arvz sono le opzioni che configurano rsync per fare un backup in archivio, comprese le sottocartelle, e trasferire i dati con la compressione
- /mnt/c/Users/mail/Desktop/Sample-files/ è il percorso della cartella di origine come lo vede la struttura di directory di WSL. Punta al mio desktop di Windows (che si trova sul disco C:)
- willem @ store.willem.com:./Backup è la destinazione, da leggere come "utente willem sul server 'store.willem.com'" e "su quel server" usa la cartella "Backup" dentro la home "./" dell'"utente willem".
La prima volta che esegui questo comando viene mostrata l'impronta crittografica del server remoto. Serve ad accertarti che stai parlando con il tuo server. Questo impedisce agli hacker di spacciarsi per il tuo server senza che tu te ne accorga (perché l'impronta è unica per il tuo server. Se rsync rileva un cambiamento di questa impronta, rifiuterà di trasferire i file. È fondamentale, perché copiare i tuoi backup su una destinazione remota qualsiasi sarebbe un potenziale rischio di fuga di dati!
Se ti colleghi tramite SSH senza autenticazione a chiave, ti viene chiesta la password. Va bene se intendi eseguire i trasferimenti a mano, ma se vuoi automatizzarli conviene configurare l'autenticazione a chiave (con l'utile comando "ssh-copy-id"). Il tuo computer potrà così accedere in modo sicuro alla macchina remota senza dover inserire la password a mano.

Se rsync riesce a collegarsi, procede a determinare quali file vanno trasferiti. Se hai impostato l'opzione "-v", vedrai l'avanzamento riga per riga. A trasferimento completato rsync termina con un riepilogo.
Trasferimenti incrementali
L'asso nella manica di rsync è che supporta in modo completo e nativo i trasferimenti incrementali. Se hai dei file nuovi e poi esegui di nuovo lo stesso comando rsync, trasferirà solo i file che ne hanno bisogno.

Nello screenshot vedi che rsync ha rilevato in automatico il nuovo file. Ha trasferito solo quel file sul server remoto. Si risparmiano banda, tempo e potenza di calcolo. Funziona con i file nuovi e con quelli aggiornati.
Facoltativamente puoi usare l'opzione "--delete" per propagare le cancellazioni locali alla cartella di destinazione, creando uno specchio perfetto della struttura locale dei file. Per i backup puoi valutare di non usarla (perché potresti cancellare dei file senza volerlo).
Automatizzare trasferimenti e backup
Visto che rsync è "solo un comando da terminale" puoi usarlo facilmente nei tuoi script. Pensa a uno script come a una raccolta di comandi rsync che comprendono una serie di collegamenti "origine" e "destinazione" tra i tuoi file e le rispettive posizioni di backup.
Puoi programmare l'esecuzione automatica dello script in un certo giorno della settimana e a una certa ora. Su GNU/Linux, *BSD e macOS puoi usare cron. Su Windows puoi usare l'app "Utilità di pianificazione".
Conclusione
Con rsync puoi trasferire file dal tuo computer a un altro sistema in modo efficiente, sicuro e incrementale. Può essere uno strumento fondamentale nel tuo piano di backup.
È gratuito e ampiamente disponibile. Le sue prestazioni e la sua affidabilità sono ormai provate. Non c'è davvero scusa per non configurare bene i tuoi backup!