Synchroniser 2 serveurs peut s'avérer utile afin, par exemple, de faire des sauvegardes. Pour cela nous allons utiliser le logiciel rsync (remote synchronization).

Port :

rsync utilise le port 873. Vous aurez peut-être besoin d'ouvrir ce port sur les 2 serveurs avec :

sudo ufw allow 873

Pour information, mon serveur de données est derrière une Box sur laquelle j'ai ajouté une règle de redirection du port 873 vers l'adresse IP de ma machine sur mon réseau local.

Sur le serveur recevant les données :

sudo sano /etc/default/rsync

et modifier ainsi le fichier de configuration :

RSYNC_ENABLE=true

Créer un fichier de configuration avec :

sudo nano /etc/rsyncd.conf

et ajouter les directives suivantes :

uid = rsync
gid = rsync

[share_rsync]
   path = /var/intern
   read only = false

 /var/intern

correspond au chemin du dossier (à créer) qui va recevoir les fichiers.

sudo mkdir /var/intern

Ajouter un utilisateur puis un groupe avec les commandes :

sudo useradd rsync
sudo passwd rsync
sudo groupadd rsync
sudo gpasswd -a rsync rsync

Attribuer le répertoire de sauvegarde à rsync :

sudo chown -R rsync:rsync /var/intern

Attribuer les droits adéquats au répertoire de sauvegarde :

sudo chmod -R 775 /var/intern

Puis lancer rsync sans redémarrage avec la commande : 

sudo /etc/init.d/rsync start

Et enfin, installer rsync comme service au démarrage : 

sudo systemctl enable rsync.service

Sur le serveur client :

C'est simple, il suffit de lancer la commande rsync avec les bons paramètres.

J'ai ainsi créé une première commande afin de sauvegarder mes fichiers de configuration Apache et un seconde pour sauvegarder mes sites web :

rsync -az /etc/apache2/sites-available XXX.XXX.XXX.XXX::share_rsync/
rsync -az /var/www XXX.XXX.XXX.XXX::share_rsync/

  • XXX.XXX.XXX.XXX correspond à l'adresse IP du serveur de données
  • a pour indiquer à rsynk de travailler en mode archive (copie exacte de l'arborescence avec les permissions, propriétaires et dates de modification).
  • z pour utiliser la compression de données pendant le transfert.

l'ensemble ayant été regroupé dans un fichier rsynk.sh que j'exécute régulièrement avec une tâche cron.

Ce petit tutoriel a pour origine :

https://doc.ubuntu-fr.org/tutoriel/serveur_de_synchronisation_avec_rsync

et sous licence :

https://creativecommons.org/licenses/by-sa/3.0/deed.fr