RSync Server con CentOS

Abbiamo già usato in passato rsync, un software in ottica client/server che sincronizza file e cartelle tra due locazioni (in rete o meno) minimizzando e ottimizzando il trasferimento dei dati. Un’importante caratteristica di rsync che non trova riscontri in programmi/protocolli simili (ad esempio ftp) è che il mirroring avviene attraverso una sola trasmissione per ogni direzione di comunicazione. rsync può copiare o visualizzare il contenuto delle directory e copiare i files, utilizzando opzionalmente la compressione dei dati e la ricorsione. Per default, rsync effettua la copia attraverso una connessione TCP sulla porta 873, ma può essere incapsulato su ssh per una trasmissione sicura dei dati. Tralasciamo ssh e vediamo come utilizzare il suo protocollo nativo usando come server CentOS. Sulle altre distro cambia solo la parte relativa all’installazione, per il resto rsync è rsync …

Server

Installazione

Installiamo il necessario:

yum -y install rsync xinetd

Con CentOS rsync viene avviato con il demone xinetd, quindi aggiungiamolo alla lista dei servizi da attivare:

chkconfig –add xinetd

Se vogliamo essere sicuri controlliamo che xinetd sia avviato con i runlevel 3 (solo shell) e 5 (grafica):

chkconfig –list xinetd

Configurazione

Abilitiamo rsync con xinetd editando il file:

nano /etc/xinetd.d/rsync

e cambiando la riga da “disable = yes” a “disable = no”

creiamo un file che contiene utenti e password per l’accesso dei clients:

nano /etc/rsyncd.secrets

scrivendoci ad esempio:

utente:password

creiamo il file di configurazione e una condivisione, nella sintassi molto simile ad in file INI di Windows :

nano /etc/rsyncd.conf

ad esempio :

max connections = 2
log file = /var/log/rsync.log
timeout = 300 [rsbackup]
comment = condivisione rsync di backup
path = /home/rsbackup
read only = false
list = yes
uid = nobody
gid = nobody
auth users = utente
secrets file = /etc/rsyncd.secrets
hosts allow = 172.16.105.0/24

Credo il file si commenti da solo.

Mettiamo ora al riparo da occhi indiscreti il nostro file delle password :

chown root.root /etc/rsyncd.*
chmod 600 /etc/rsyncd.*

e avviamo rsync attraverso xinetd

service xinetd restart

per sicurezza controlliamo che rsync sia attivo :

chkconfig –list

Facciamo attenzione al firewall (se presente) abilitando la porte 873 TCP e UDP altrimenti non riusciremo a connetterci al nostro server.

Client

Nel client non c’e’ molto da fare una volta che rsync è installato. Possiamo direttamente provare:

rsync utente@server::

Dopo aver digitato la password dovremmo ottenere la lista della condivisioni. Facciamo attenzione al doppio “::”, con il singolo “:” diciamo a rsync di utilizzare ssh per la comunicazione:

rsync utente@server:

in questo caso “utente” deve essere un utente valido per ssh non per rsync !

Se vogliamo realizzare degli script di salvataggio non possiamo certo star lì a digitare la password. Per ovviare a questo problema creiamo un file tipo quello del server:

nano /etc/rsync.secret

scrivendoci la password :

password

mettiamo in sicurezza il file come prima:

chown root.root /etc/rsync.secret
chmod 600 /etc/rsync.secret

ora possiamo utilizzare il comando così:

rsync –password-file=/etc/rsync.secrets utente@server::

ottenendo l’output senza dover digitare la password.

E per finire …. lanciamo un bel backup delle nostre homes sul server rsync :

rsync -av –delete –password-file=/etc/rsyncd.secrets /home utente@server::rsbackup

magari ottenendo anche informazioni sulla percentuale di completamento aggiungendo il parametro –progress.

Per chi vuole approfondire segnalo una interessante guida al backup con rsync e non solo, .