Condividi su Facebook
rsyncd ~ Installare e configurare un rsync server
Scritto da: Monska il 09/11/2010 alle 17:00
Tag: Linux, Bash, Informatica, Sistemi Operativi, Reti.Visto 1941 volte.


network

Nella nostra vita informatica spesso ci capita di voler sincronizzare due directory, magari dislocate su calcolatori geograficamente distanti.
Quello che nella maggior parte dei casi accade è che, per una questione di tempo, iniziano una vera e propria copia dei file, rendendo una directory il mirror dell'altra.
Questa procedura può essere conveniente per spostamenti di piccole dimensioni, piccoli file che se anche trasferiti diverse volte, sul lungo periodo non incidono molto sulla banda utilizzata.
L'approcio risulta poco intelligente se quello che vogliamo fare è mantenere nel tempo le due directory sincrone tra loro e se i file in esse contenuti vengono modificati.

Abbiamo già parlato precedentemente di rsync come tool per i nostri backup in questo articolo, ma quello che andremo ad analizzare oggi è una variante più complessa del servizio.

Il nostro obiettivo è creare un server rsync che ci permetta di gestire la sincronizzazione tra due cartelle e l'accesso ad esse secondo delle policy predefinite.

Preparazione e installazione

ATTENZIONE: la guida è stata testata su Fedora 14/CentOS 5.5; i comandi di seguito sono relativi alla distribuzione indicata ma facilmente sostituibili con i comandi specifici della propria distribuzione.

Per poter attivare rsync in modalità servizio è ovviamente necessario avere il software installato sul computer.
Per farlo provvediamo attraverso il comando:

Code:

# yum install rsync

Una volta installato il software necessario passiamo alla fase di configurazione

Configurazione

Creiamo, se non è già esistente la cartella /etc/rsyncd con il comando

Code:

# mkdir /etc/rsyncd

nella quale andremo a posizionare tutti i file di configurazione necessari.

Creiamo il file di configurazione generale /etc/rsyncd/rsyncd.conf come segue:

Code:

# RSYNCD CONFIG FILE

# General configuration
motd file = /etc/rsyncd/motd.rsync
read only = no
list = yes
uid = nobody
gid = nobody
log file = /var/log/rsyncd/rsyncd.log
pid file = /var/run/rsyncd.pid

# Module configuration
[all]
comment = Welcome Home ~ rsyncdserver.mydomain.net
path = /home/rsync/all

[secure]
comment = Secure Module
path = /home/rsync/secure
auth users = rsync,codiceasbarre
secrets file = /etc/rsyncd/rsyncd.secrets
#hosts allow = *.mydomain.com
#hosts deny = *
list = false

Il file è scaricabile da qui.

Commentiamo ora alcune parti del file:
~ motd: message of the day, ovvero il messaggio di benvenuto che il server mostra ai client
~ list: permette di listare i moduli
~ uid/gid: uid e guid di chi manda in esecuzione il servizio

I moduli sono le parti che rappresentano i "repository" del server.
Quello che accade con il file sopracitato, viene configurato un modulo all, fruibile da chiunque in lettura e scrittura (come definito globalmente), la cui path è /home/rsync/all.
Per quanto riguarda il modulo secure, è un modulo ad accesso esclusivo degli utenti rsync e codiceasbarre, per i quali vengono definite delle credenziali di accesso nel file /etc/rsyncd/rsyncd.secrets. Tale modulo non viene listato tra i moduli presenti sul server.
Le variabili hosts allow e hosts deny possono essere configurate in base alle proprie esigenze di sicurezza.

Creiamo ora i file accessori al servizio.
Iniziamo con il file /etc/rsyncd/motd.rsync, nel quale possiamo inserire quello che vogliamo come per esempio:

Code:

Welcome on rsyncdserver.mydomain.net

Passiamo ora al file contenente le credenziali degli utenti con accesso al modulo ristretto, ovvero al file /etc/rsyncd/rsyncd.secrets:

Code:

rsync:mypassword
codiceasbarre:drowssapym

Come è facilmente intuibile il file contiene un utente per riga nel formato username:password. Il file sopraindicato specifica quindi che l'utente rsync potrà accedere al server attraverso la password mypassowrd, e l'utente codiceasbarre dovrà utilizzare la password drowssapym.

Per quanto riguarda la configurazione del servizio siamo pronti a lanciare il nostro server rsync, che ricordiamo utilizza la porta 873, attraverso il comando:

Code:

rsync --daemon --config /etc/rsyncd/rsyncd.conf

Proponiamo di seguito, per completezza, uno script di init (argomento trattato in questo post), che possiamo copiare nella cartella /etc/init.d permettendoci di gestire il servizio. Tale script è conforme alle direttive di chkconfig, quindi può essere gestito attraverso gli appositi comandi di chkconfig (vedere questo post).


Code:

#!/bin/bash
# chkconfig: 345 96 55
# description: rsyncd service
# INIT SCRIPT FOR RSYNCD

RSYNC_CMD="/usr/bin/rsync"
CONFIG_FILE="/etc/rsyncd/rsyncd.conf"
PID_FILE="/var/run/rsyncd.pid"

PROG_NAME="rsyncd"

function start()
{
   $RSYNC_CMD --daemon --config "$CONFIG_FILE"
   sleep 3
   echo -e "Rsyncd startttt[ OK ]"
}

function stop()
{
   kill -9 $(cat "$PID_FILE")
   rm -f "$PID_FILE"
   sleep 2
   echo -e "Rsyncd stopttt[ OK ]"
}

function restart()
{
   stop
   sleep 1
   start
}

function status()
{
   if [ -f "$PID_FILE" ]
   then
      echo "$PROG_NAME is started ($(cat $PID_FILE))"
   else
      echo "$PROG_NAME is stopped"
   fi
}

function usage()
{
   echo -e "$PROG_NAME usage:ntt$0 {start|stop|restart}"
}

case $1 in
   start)
      start
   ;;
   stop)
      stop
   ;;
   restart)
      stop
      start
   ;;
   status)
      status
   ;;
   *)
      usage
   ;;
esac


Lo script è scaricabile da qui

Utilizzo del servizio

Siamo ora pronti ad utilizzare il servizio. Se avete lasciato moduli listabili potete andare a esplorare i "repository" che avete condiviso con il seguente comando

Code:

rsync rsync://[<user>@]<host>

che vi mostrerà in output la lista dei moduli listabili.

Per visionare il contenuto di ogni singolo modulo basterà aggiungere la path da visionare; per il nostro esempio:

Code:

rsync rsync://[<user>@]<host>[/<path>]

Potrete quindi navigare all'interno del vostro modulo con il comando rsync, eseguendo l'autenticazione se necessario. Per tutti i comandi di trasferimento dati vi rimandiamo alla man page del comando rsync
($ man rsync | rsync --help).


Aggiungi un commento:
Nick:
captchaInserire il codice: