I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una vera potenza.

— Albert Einstein

rsync server con CentOS

http://www.stenoweb.it/files/blog/centos.png 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, a questo indirizzo.

Byez :)

A mio parere è sempre meglio incapsulare rsync con ssh, il tempo macchina non è così tanto e l'overhead sulla rete trascurabile.

Se si usa rsync pulito è meglio avere un utente dedicato con una passphrase abbastanza lunga per scoraggiare gli script, sapendo però che una persona smaliziata potrebbe bucare il tutto.

Concordo. Tuttavia siccome avevo già spiegato in un precedente post come farlo con SSH, mi faceva piacere qui cambiare metodo giusto per far notare le due possibilità.

Certo. Poi, ovviamente, ci sono usi ottimi di rsync.
Soprattutto se la confidenzialità non è necessaria.

Wow, awesome weblog layout! How lengthy have you been blogging
for? you make running a blog glance easy. The full glance of your web site is great, as well as
the content material!

Way cool! Some very valid points! I appreciate
you penning this post and the rest of the website is very good.