Avere un servizio rsync sempre a disposizione nella propria LAN può essere molto utile per semplificare non poco i backup quotidiani dei dati dei PC e Workstation di lavoro. Soprattutto per i più pigri; ossia, per quelli che non fanno mai il backup perché la ritengono una cosa complicata, oppure noiosa o peggio ancora inutile; tra l’altro, questi sono poi i primi a lamentarsi quando qualcosa va storto e qualche file va perso.
Senza contare che fa bene anche al GDPR, il nuovo Regolamento sulla privacy, in quanto può essere facilmente adottato come sistema di backup dei dati nell’ambito della mitigazione del rischio.
Con un server rsync centralizzato tutto diventa ancora più semplice per gli utilizzatori, ma anche per l’amministratore, poiché tutti i backup sono in un unico contenitore e che quindi il tutto è più semplice da dimensionare e manutenere.
In questo sintetico tutorial ho cercato di descrivere come creare un server rsync con una distribuzione GNU Linux. In realtà sappiamo bene che non si può parlare di generica distribuzione Linux; è per questo che ho pensato di incentrare la discussione almeno su due diversi distribuzioni GNU Linux: CentOS 7 e Debian 9.
Non ultimo, la disponibilità di servizio rsync in contesti aziendali e/o professionali, si rivela di grande aiuto alla implementazione di criteri sulla sicurezza dei dati, tanto a cuore alle nuove normative sulla privacy, introdotte tramite l’ormai arcinoto GDPR.
Nota su questo Tutorial
Questo tutorial fa parte di un insieme di articoli che mirano a descrivere la preparazione di un server di Disaster Recovery per tutti i sistemi informatici presenti in azienda, così come richiesto dal RGPD, ossia il Regolamento Generale sulla Protezione dei Dati, forse meglio noto nella sua dicitura inglese: GDPR, ossia: General Data Protection Regulation.
Che cosa è Rsync ?
Rsync è un software Open Source per Unix/Linux che sincronizza file e cartelle da una elaboratore a un altro, minimizzando il trasferimento di dati utilizzando quando possibile la cosiddetta codifica delta, proprio per minimizzare e velocizzare i trasferimenti.
A dire il vero, Rsync è uno strumento talmente flessibile che relegarlo ad un semplice tool di sincronizzatore di file e cartelle sarebbe alquanto limitato. Ma proprio perché il suo “motore” fa proprio questo (sincronizzare dati) può assumere l’importante ruolo di Backup Server.
Rsync da il meglio di se lo quando lo si rende disponibile in una LAN, in modo che possa essere utilizzato per mantenere costantemente aggiornate le copie dei dati di tutti i computer dell’azienda, mantenendoli al sicuro in un filesystem centralizzato, che può essere anche (preferibilmente) criptato e messo al sicuro da eventuali malaugurati furti.
Perchè CentOS e Debian ?
Semplice. Perché sono le distribuzioni GNU Linux più utilizzate! Quale cosa migliore quindi che provare ad installarlo e configurarlo in questi due importanti ambienti?
In realtà moltissime delle distribuzioni GNU Linux sono derivare da Red Hat Enterprise© o da Debian, nonostante la distribuzione Suse in realtà sia una derivata di Slackware, ma questa è un’altra storia.
Tutto ciò, anche se, a dire il vero, per i nostri scopi, non ci sono poi così profonde differenze tra una distribuzione e l’altra. In fin dei conti si installano in modo molto simile e dal punto di vista dei client la differenza è del tutto irrilevante.
Comunque sia, poco importa con quale distribuzione GNU Linux viene realizzato un servizio rsync, l’essenziale è che questo prezioso strumento sia presente sempre e dovunque vi siano dati da tenere al sicuro da spiacevoli incidenti tecnici.
Tuffiamoci finalmente nell’installazione e nella configurazione del servizio rsync.
Preliminari
Prima di proseguire con l’installazione e la configurazione del servizio rsync è utile dare qualche indicazione sull’ambiente.
Tanto per cominciare, Ho dato per scontato che la distribuzione Linux (CentOS o Debian, non ha importanza) sia già installata, perfettamente funzionante e disponibile (raggiungibile) in rete.
In secondo luogo, è utile accennare che per la stesura di questo tutorial ho preventivamente installato 2 VM (Macchine Virtuali) eseguendo le configurazioni preliminari in un server CentOS 7 e di un server Debian 9.
Infine, anche se superfluo, dovendo modificare alcuni file di configurazione dei servizi, sarà necessario utilizzare le credenziali dell’utente root.
Quindi…
$ sudo -i (e digitare la password di root)
Oppure
$ su - (e digitare la passwodr di root)
Installazione il pacchetto Rsync ed attivazione del servizio
Qui di seguito faremo costantemente una distinzione nell’installazione sulle seguenti principali distribuzioni GNU Linux:
- Debian (e sue derivate)
- Red Hat (e sue derivate), in questo caso: CentOS
Con Debian e derivate
Prima di qualsiasi altra cosa, è bene partire con un sistema aggiornato, quindi sarà il caso di fare l’aggiornamento (update) di tutti i pacchetti già installati:
# apt-get update && sudo apt-get upgrade --yes
ed eventualmente fare un reboot
, se necessario
Con apt_get
procedi con l’installazione del pacchetto rsync , ovviamente, se questo non è già stato preventivamente installato
# apt-get install rsync --yes
Con CentOS
Prima di qualsiasi altra cosa, è bene partire con un sistema aggiornato, quindi sarà il caso di fare l’aggiornamento (update) di tutti i pacchetti già installati:
# yum update -y
ed eventualmente fare un reboot, se necessario.
Utilizzando yum, procedi con l’installazione del pacchetto rsync, ovviamente, se questo non è già stato preventivamente installato
# yum install rsync -y
Configurazione de servizio rsync
Da qui in poi, le cose da fare sono pressappoco uguali per tutte le distribuzioni Linux, solo con qualche minima differenza.
Configurazione dei valori di base di rsync
Prima di proseguire, è necessario sistemare il file dell’ambiente di base del demone di rsync
.
Quindi:
con Debian:
# vi /etc/default/rsync
Con CentOS:
# vi /etc/sysconfig/rsyncd
In questo file, per entrambe le distribuzioni, verificare che siano impostate le seguenti variabili ed aggiungerle, se mancanti.
RSYNC_ENABLE=true RSYNC_CONFIG_FILE=/etc/rsyncd.conf RSYNC_OPTS='--port=873 --address=0.0.0.0' RSYNC_NICE=’10’ RSYNC_IONICE=’-c3′
Salvare e chiudere il file.
Creazione delle directory contenitore
Dobbiamo ora creare le directory che conterranno i file dei Client, ogni qual volta che questi eseguiranno il backup dei dati su questo server centrale.
Per il nostro esempio, ho preventivamente creato tante cartelle quanti saranno i client che saranno autorizzati ad utilizzare questo server per le proprie sessioni di backup di salvataggio dati con rsync.
In questo modo, ogni client avrà una sua propria cartella privata contenente esclusivamente i file di backup di cui è effettivamente proprietario; così da evitare confusione.
Nella fattispecie e per facilità di utilizzo, le cartelle create avranno un nome riconducibile al nome del client proprietario dei file.
I nomi delle cartelle creati in questo tutorial di esempio saranno quindi: client_01
, client_02
e client_03
, utilizzando il seguente comando:
# mkdir -p /store_bck/rsync/client_01 /store_bck/rsync/client_02 /store_bck/rsync/client_03
Ovviamente, queste cartelle potranno anche chiamarsi Laptop_Dario
, Computer_Maria
e via discorrendo, così da essere più facilmente riconoscibili.
Impostazione della configurazione di rsyncd.
Posto che alcune distribuzioni Linux potrebbero non predisporre un file di configurazione di base per il servizio rsync, va creato (nel caso non ci fosse, come nel caso di Debian) o modificato quello esistente (come nel caso di CentOS e derivate Red Hat©).
Per via di quello detto fin’ora, quelli che seguono sono i passi da seguire per l’attivazione del servizio rsync che mi sono riproposto di attivare.
1 – File di configurazione di rsync
Creazione e/o modifica del file di configurazione Quello mostrato qui sotto è un buon candidato ad essere file di configurazione rsync per gli obbiettivi che ci siamo proposti di raggiungere.
Apri il file con il tuo editor preferito:
# vi /etc/rsyncd.conf
e verifica che il suo contenuto sia più o meno questo:
# /etc/rsyncd: configuration file for rsync daemon mode # See rsyncd.conf man page for more options. log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid use chroot = yes uid = root gid = root secrets file = /etc/rsyncd.strict strict modes = yes [client_01] path = /store_bck/rsync/client_01 comment = rsync storage for client name client_01 read only = no list = yes auth users = client01 hosts allow = 192.168.0.0/24 transfer logging = no [client_02] path = /store_bck/rsync/client_02 comment = rsync storage for client name client_02 read only = no list = yes auth users = client02 hosts allow = 192.168.0.0/24 transfer logging = no
Per maggiori informazioni, suggerisco di leggere le man pages:
# man rsyncd.conf
2 – file /etc/rsyncd.strict di rsync
Aggiungi, nel file /etc/rsyncd.strict
, tutti gli username e le relative password (uno per riga), nel formato username:password
, come descritto nelle man pages: rsyncd.conf(5)
.
Nell’esempio qui sotto, una semplice definizione degli username
e delle password
per i moduli degli utenti definiti più sopra.
Apri quindi il file /etc/rsyncd.strict
con il tuo editor preferito:
# vi /etc/rsyncd.strict
e verifica che il suo contenuto sia più o meno questo:
# Rsync secret file: /etc/rsyncd.strict # This file must contains username and password for the rsync modules defined in /etc/ rsyncd.conf. # Please remember that is 'strict modes' is on, then it must be chown to root and chmod 600 # client01:pwdclient01 client02:pwdclient02
Permessi del file /etc/rsyncd.strict
Attenzione. questo file deve avere permessi 600 e deve essere proprietario l’utente root, altrimenti verrà completamente ignorato, con ovvi problemi di autenticazione.
Quindi….
# chmod 600 /etc/rsyncd.strict
Servizio rsync
Verica che il servizio rsync sia abilitato ed attivo.
Qui un altro “distinguo” tra CentOS e Debian, in quanto per CentOS il servizio si chiama rsyncd
, mentre per Debian si chiama semplicemente rsync
.
Con Debian
# systemctl is-enabled rsync.service # systemctl is-active rsync.service
Con CentOS
# systemctl is-enabled rsyncd.service # systemctl is-active rsyncd.service
Abilitazione ed avvio del servizio rsync
Nel caso non sia abilitato all’avvio del sistema e/o non attivo, attivare il servizio per l’avvio allo startup dl sistema ed avviarlo subito.
Anche in questo caso i comendi sarnno leggermente differenti tra Debian e CntOS:
Con Debian
# systemctl enable rsync.service # systemctl start rsync.service
Con CentOS
# systemctl enable rsyncd.service # systemctl start rsyncd.service
Fin qui tutto ciò che riguarda il servizio Rync, ma potresti ancora non poter accedere al servizio per una serie di motivi, non ultimo il firewall.
Continua a seguirmi.
Abilitazione firewall interno
Per copersi successivamente connettere con un qualsiasi client al servizio rsyncd, è indispensabile abilitare la porta rsync
(TCP/873
) del firewall interno del sistema.
Se nel sistema è in esecuzione il servizio firewalld
, o qualsiasi altro servizio di firewall, è sicuramente il caso aprire la porta TCP/873
per consentire l’accesso al servizio.
Per aprire la porta TCP/873
per l’accesso dall’esterno al nostro servizio rsyncd, utilizzare i comandi del firewall del sistema come segue:
1 – Mostra la zona attiva del firewall, con il seguente comando
# firewall-cmd --get-active-zones
2 – Apri in modo permanente la porta TCP 873 del firewall
# firewall-cmd --zone=public --add-port=873/tcp --permanent
3 – Ricarica le regole del firewall
# firewall-cmd --reload
Se invece il sistema è protetto semplicemente da iptables, allora è necessario aggiungere le istruzioni opportune per l’apertura della porta 873/tcp
direttamente da linea di comando, come questa:
# iptables -I INPUT -p tcp -m multiport --dports 873 -j ACCEPT
Infine, se non è presente alcun firewall, non è necessaria nessuna azione, anche se una macchina senza firewall è assolutamente la cosa più insicura che si può immaginare.
Pronti? Via!
Siamo finalmente pronti per avviare il nostro primo trasferimento di prova con rsync.
Dal nostro client Linux possiamo finalmente provare a lanciare il nostro backup di file e cartelle con un comando simile a questo:
$ rsync -avz --numeric-ids --delete --stats [source_dir] client01@192.168.0.92::client_01
Ovvio che al comando suggerito dovrai sostituire [source_dir]
con il percorso della cartella che che desideri salvare.
Logicamente, dovrai tener presente che la prima volta lancerai questo comando ci metterà un sacco di tempo per completare il trasferimento; il che dipende da quanti file, cartelle e dalle dimensioni totali (in termini di Mega/Giga/Tera bytes) dei tuoi files.
Al contrario, tutte le volte successive che lancerai questo comando, il tempo di esecuzione per il trasferimento sarà più breve, poiché verranno effettivamente trasferite solo le differenze dei file che nel frattempo avranno subito un qualche tipo di modifica.
In Conclusione
Installare e configurare un server Rsync è un task relativamente semplice ed alla portata di chiunque abbia un minimo di dimestichezza con i sistemi GNU Linux.
Con il tuo Server Rsync disponibile tua rete aziendale o del tuo ufficio mantenere una copia consistente dei dati delle postazioni di lavoro di tutti i dipendenti è davvero un gioco da ragazzi. Senza contare che i backup dei dati di ogni singolo PC può essere totalmente trasparente per l’utente, in quanto può essere attivato a tempo con l’aiuto dello scheduler cron
di Linux o della Utilità di pianificazione di Windows.
Il presupposto iniziale di questo sintetico tutorial fa riferimento, per semplicità ad un Server Rsync da mettere nella LAN, che sia aziendale o dell’ufficio; ma nulla vieta di implementarlo, con i dovuti accorgimenti, anche come Cloud Backup Server.
Disclaimer
Questa pagina potrebbe contenere link di affiliazione. Gli acquisti o gli ordini che effettuerai tramite tali link possono generare commissioni che ci aiutano a sostenere questo sito web.