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/
où
- 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