Rsync – La miglior utility per il backup

postato in: Articoli, Backup | 0

Rsync

Buongiorno a tutti. Una delle cose più importanti, quando si utilizzano sistemi complessi è la possibilità di ripristinare tutto in caso di guasti e malfunzionamenti.

La vita è così. Un giorno va tutto bene, e quello dopo invece è successo un disastro. E si deve correre ai ripari.

Come nella stragrande maggioranza dei casi vale il detto: prevenire è meglio che curare.

Ma come possiamo prevenire? Utilizzando delle copie di back up aggiornate periodicamente.

Vi sono tantissimi tool in giro per l'internet che effettuano backup più o meno validi, ma il migliore resta in ogni caso Rsync.

 

 

PERCHÈ RSYNC
I motivi sono innumerevoli:

  • è un tool a riga di comando, quindi programmabile per effettuare un backup automatico periodico.
  • efficiente: diversamente da altri, effettua solo dei backup incrementali, senza stare a copiare sempre tutti i file.
  • consumo di banda personalizzabile: permette di personalizzare il consumo di banda per il backup.

 

 

COSA DOBBIAMO SAPERE PER INIZIARE
La prima cosa che dobbiamo sapere per utilizzare Rsync, è come installarlo:

sudo dnf install rsync

o se usate derivate di Debian:

sudo apt-get install rsync

Una volta installato il programma, prima di iniziare ad utilizzarlo vediamo delle opzioni utilizzeremo di più:

  • -v: verbose. Stampa a video molte informazioni durante la copia.
  • -q: quiet mode. Non stampa alcunchè mentre è eseguito. Utilissimo durante l'esecuzione di script.
  • -r: copia ricorsivamente ma senza preservare i permessi.
  • -h: human readable. L'output sarà più leggibile.
  • -z: comprime i file mentre li sposta, in modo da risparmiare dati.

 

 

COPIARE DATI SULLA STESSA MACCHINA
Il primo utilizzo che troviamo è quello della copia all'interno della propria macchina da una cartella di partenza source a una destinazione destination.

rsync -avzh source destination

 

 

COPIARE FILES DA UNA CARTELLA LOCALE DA/IN UNA SU UN SERVER
In questo caso avremo bisogno di sapere quale è l'indirizzo del server su cui dovremo copiare o da dove dovremo effettuare il backup dei nostri file.

 

Copiare una directory da locale a server:
Una volta che sappiamo l'indirizzo del server e l'utente, possiamo copiare mantenendo tutte le informazioni, come permessi, gruppi e utenti, grazie al comando:

rsync -avzh source_dir user@ipaddress:destination

Ad esempio, se dobbiamo copiare la cartella immagini all'interno della home dell'utente tux_maniacs, daremo da linea di comando:

rsync -avzh immagini tux_maniacs@192.168.1.160:/home/tux_maniacs/

 

Copiare una directory da server al computer locale:
In modo analogo a come abbiamo fatto prima, imposteremo la cartella source a quella remota presente sul server, e quella destination alla directory di destinazione all'interno del nostro computer.

rsync -avzh user@ipaddress:source_dir local_destination

Ad esempio:

rsync -avzh tux_maniacs@192.168.1.160:/home/tux_maniacs/immagini /home/emanuele/

 

 

IMPOSTARE LA LARGHEZZA DI BANDA MASSIMA
Una caratteristica molto interessante di Rsync è quella di poter impostare la larghezza di banda massima che la procedura deve utilizzare. Per farlo utilizzeremo l'opzione --bwlimit, che prende come parametro una larghezza espressa in KBps (Kilo Bytes per second). Ad esempio impostiamo 100 KBps di limite:

rsync -avzh --bwlimit=100 source_dir user@ipaddress:destination

 

 

DRY RUN
Una caratteristica importante, è la possibilità di poter provare l'efficacia di un comando, magari all'interno di uno script, senza però effettivamente fare le operazioni richieste. Insomma con script molto complessi e/o grandi file la possibilità di fare delle prove di esecuzione senza che il pc faccia alcuna modifica è bellissimo. Rsync fornisce questa funzionalità grazie all'opzione --dry-run.

 

 

RIMOZIONE AUTOMATICA DEI FILE
Forse una delle opzioni più utili. Grazie a --delete potremo implementare una sincronizzazione perfetta.
Se inseriamo l'opzione --delete, se dopo la sincronizzazione in source abbiamo meno file che in destination (ad esempio perchè ne abbiamo eliminati alcuni), questi verranno eliminati anche in destination. La sintassi è:

rsync -avzh --delete source user@ipaddress:destination

 

Ad esempio:

    $ ls source
    img1.png
    img2.png

    $ ls destination
    img1.png
    img2.png
    img3.png

 

Dopo aver lanciato:

rsync -avzh --delete source user@ipaddress:destination

all'interno di destination avremo:

    $ ls destination
    img1.png
    img2.png

 

 

RIMOZIONE AUTOMATICA FILE SORGENTI
Se dobbiamo caricare semplicemente alcuni file ma non necessitiamo di mantenerli all'interno della nostra cartella sorgente, Rsync permette di eliminarli automaticamente una volta che il trasferimento è andato a buon fine. Lo possiamo fare grazie all'opzione --remove-source-files. La sintassi sarà:

rsync -avzh --remove-source-files source user@ipaddress:destination

 

 

SHELL REMOTA
Rsync permette di selezionare quale shell remota o quale protocollo utilizzare per effettuare il trasferimento.
La sintassi è simile alla precedente, ma va aggiunta l'opzione -e tipo-shell. Ad esempio se scegliamo di utilizzare ssh, diamo:

rsync -avzh -e ssh source user@ipaddress:destination

 

 

CONCLUSIONE
Rsync è uno strumento veramente molto potente. Risulta sicuramente molto flessibile e efficace.
Voi lo usate? Se si, come? Fatecelo sapere nei commenti!

 

FONTI:

Dottore in Informatica. Appassionato di computer fin dal primo PC Olivetti con Windows 95 e la bellezza di 8 MB di RAM.
Utilizzatore Linux da 5 anni, credo profondamente nella filosofia open source.
Dopo tante distro provate sul mio fidato Toshiba, uso Fedora per lo studio e il divertimento.

Lascia un commento