Plugin Rsync de Jeedom

Introduction

Ce plugin permet de faire une copie miroir d'un dossier local de la machine où est installé Jeedom vers un serveur RSync.
La particularité de rsync est de limiter la bande passante et la charge réseau lors des copies (copie plus rapide).
Le client rsync (Jeedom) et le serveur rsync vont communiquer pour lister les fichiers modifiés/ajoutés/supprimer puis lancer la copie pour que la destination soit un miroir de la source.

Important :
Ce plugin utilise rsync pour effectuer les copies. Si vous copiez tout votre système sans arrêter les services (deamon), votre copie risque d'être inutilisable pour certains programmes comme par exemple les bases de données. Aucune garantie donc, mais en règles générales, cela fonctionne quand même 😉

Installer un serveur Rsync sur Windows

Présentation de DeltaCopy

DeltaCopy est un petit logiciel qui va se charger de lancer le serveur rsync au démarrage de Windows. Il a aussi une petite interface simplifiée pour créer les dossiers partagés pour rsync.

Installation de DeltaCopy

Site de téléchargement : http://www.aboutmyip.com/AboutMyXApp/DeltaCopy.jsp
A droite de la page :

Cliquez sur Win Installer pour la version avec programme d'installation.

ou sur Without Installer pour une version portable.

Démarrez le programme DeltaS.exe

Démarrer en tant que service

Dans un premier temps, on va faire en sorte que le serveur rsync démarre avec Windows :

Cliquez sur "Register Windows Service", cochez la case "Use Local Service Account" :

Validez sur OK
(Vous pouvez aussi utiliser un compte utilisateur, mais il vous faudra certainement aller dans le gestionnaire de service Windows pour revalider le compte pour que Windows lui donne les droits de gérer les services. Sinon le service ne voudra pas démarrer)

Astuce : Pour désinstaller le service, il faut passer en ligne de commande cmd Windows, faire cd (puis le nom du dossier d'installation de DeltaCopy) et taper DCServce /UNINSTALL

Cliquez sur "Start Server", si le bouton passe au Vert, c'est que c'est Ok :

Création du dossier partagé

Allez maintenant dans l'onglet "Virtual Directories", et double cliquez sur "Add New Directory"

Entrez un nom de dossier, et validez sur ok. Ce nom est purement virtuel :

Créez un dossier dans Windows (grâce à l'explorateur de Windows) qui sera vide et pourra recevoir les fichiers.
Ensuite dans la partie à droite de DeltaCopy :

Cliquez sur Browse pour aller chercher ce dossier.
J'insiste : Ce dossier doit-être vide, car le contenu sera remplacé par la sauvegarde.
Cochez Use Authentication, et entrez un nom d'utilisateur et un mot de passe.
Conseil de sécurité : Utilisez un mot de passe complexe, et différent de vos mots de passes habituels (il apparaîtra en clair dans DeltaCopy Server...)

On peut fermer DeltaCopy Server.

Créez une règle Parefeu pour ouvrir le port TCP 873 (port rsync par défaut) :
Soit en ouvrant le PareFeu de Windows,
Soit en ligne de commande cmd : netsh firewall add portopening TCP 873 "DeltaCopy Rsync"
Soit dans PowerShell : New-NetFirewallRule –Name "rsync" -DisplayName "rsync (DeltaCopy 873)" -Profile Public -Enabled True -Protocol TCP -LocalPort 873 -Action Allow

Récupérez l'IP de votre ordinateur en ligne de commande cmd : ipconfig /all | find "IPv4" et notez là pour la partie de configuration du plugin rsync de Jeedom.

Configuration du serveur Rsync sur un Nas Synology

Activation du serveur rsync

Allez dans le "Panneau de configuration", "Services de fichiers" et cochez les cases :

Puis cliquez sur le bouton "Appliquer".

Création d'un Utilisateur

Toujours dans le "Panneau de configuration", cliquez sur "Utilisateur" à gauche, puis sur "Créer".
Si on suit la même configuration que pour le tuto au dessus (rsync sous Windows), on va renseigner les infos suivantes :

Avec mdp#Complexe en mot de passe
(Mettez un mot de passe complexe : Vous mettez ce que vous voulez bien sûr)

On clique sur le bouton "Suivant", et on laisse cocher le groupe users seulement :

On clique sur Suivant, et dans l'attribution des permissions sur les dossiers partagés on coche tout sur "Pas d'accès" (car on a pas encore créé le dossier partagés pour rsync) :

On clique sur Suivant, et dans Paramètre de quota, on laisse illimité :

On clique sur Suivant, et dans les permissions sur les applications, on refuse tout et on autorise rsync :

On clique sur Suivant et dans les paramètres de limite de vitesse de l'utilisateur, on laisse tout par défaut (pas de limite) :

On clique sur Suivant, et on a le récapitulatif : On peut faire appliquer.
On verra alors notre utilisateur dans la liste des utilisateurs créés.

Création du dossier partagé

Toujours dans le "Panneau de configuration", cliquez sur "Dossier partagé" à gauche. Puis sur Créer. On va suivre la même logique que le tuto précédent pour les noms :

Important : On désactive la corbeille (surtout si on doit sauvegarder tout un système).
Cliquez sur Suivant plusieurs fois, jusqu'à arriver au bouton "Appliquer".
La fenêtre de partage s'ouvre.
On va refuser l'accès à tous, sauf admin et jeedom :

Et on valide sur OK !

Il nous reste une dernière étape : Revenir dans le "Panneau de configuration", "Services de fichier" à gauche, onglet "rync", et cliquez sur le bouton "Modifier le compte rsync".

Une petite fenêtre s'ouvre, cliquez sur "Ajouter" et mettez le compte utilisateur avec le même mot de passe que l'on vient de créer : jeedom et mdp#Complexe (enfin votre mot de passe).

Cela a pour effet de permettre à l'utilisateur jeedom d'avoir un accès distant au serveur rsync.
Voilà c'est terminé. La suite est optionnelle (vous pouvez passer à l'installation du plugin rsync dans Jeedom)

Garder un historique (rotation) de mes sauvegardes sur le Nas

Pourquoi utiliser les rotations de backup

Pourquoi faire cela ? Cela vous permettra de revenir en arrière dans le temps. Un fichier supprimé ? vous vous en rendez compte quelques jours après.... Pas grâve, on va le récupérer sur le Nas dans les historiques.

L'avantage de la solution "Hyper Backup", c'est qu'elle va dé-dupliquer les fichiers pour ne pas garder plusieurs versions du même fichier (gain d'espace disque).

Créer un dossier partager BackupJeedomHB

Je vous conseille d'acheter un disque 2To externe et de le connecter en USB sur le NAS (un disque avec alim externe). Vous le branchez et créez un dossier partagé sur celui-ci pour être destination des rotations de backup. Pour notre exemple on va créer un dossier partagé qui sera nommé BackupJeedomHB, et on mettra les rotations dans un sous dossier Rotation. Vous savez déjà créer un dossier partager, faites le, et pensez à décocher la corbeille lors de la création du dossier. Pour les droits utilisateurs, refusez tout sauf admin.

Installer et paramétrer Hyper Backup

Dans un premier temps, allez dans le "Centre de paquets", recherchez "Hyper Backup" et installez le.
(Attention à ne pas confondre avec Hyper Backup Vault qui permet d'utiliser Hyper Backup entre 2 Nas)

Ouvrir Hyper Backup, et cliquez sur le petit plus en bas à gauche, puis sur l'option "Tâche de sauvegarde de données" :

Sélectionnez l'option "Dossier local & USB"

Cliquez sur Suivant, et sélectionnez votre dossier partagé de destination, puis renseignez le répertoire :

On clique sur Suivant, et on coche les dossiers sources que l'on veut historiser. Dossier BackupJeedom (désolé pour la copie d'écran ou j'ai inversé le nom 😉

On clique sur Suivant, et dans "Sauvegarde des applications" on ne coche rien.
On clique sur Suivant.
Donnez un titre à votre tâche, et programmez là comme bon vous semble (en fonction de l'heure de fin de votre sauvegarde rsync Jeedom bien sûr).

C'est une sauvegarde Nas sur Nas, donc cela ne va pas ralentir Jeedom ou le réseau, on peut programmer la rotation en journée (et faire les backups Jeedom la nuit).

On clique sur Suivant, et on coche la case pour "Activer le rotation des sauvegardes".
On coche Smart Recycle, qui permet d'avoir un historique sur plusieurs mois, voir années :

Et on clique, sur Appliquer. C'est terminé, vos données seront sauvegardées, et historisées.

Installer le Plugin Rsync dans Jeedom

Installer le plugin Rsync

Pour cela allez dans Jeedom, menu Plugins -> Gestion des plugins, et cliquez sur Market.
Mettez rsync dans le champ de recherche, et installez le plugin Rsync :

Allez sur la page du plugin et vérifiez que les dépendances sont OK (cliquez sur relancer si ce n'est pas le cas) :

Configurer une copie rsync

Aller dans le menu Plugins -> Programmation -> Rsync
Cliquez sur Ajouter et donnez un nom par exemple "Copie des backups Jeedom".

Options générales et planification

Onglet Général :

Log en fin de traitement : Permet de créer des entrées de Log pour un suivi post traitement pour créer un rapport de traitement.
Notification Jeedom : Permet d'afficher une notification dans Jeedom selon la condition sélectionnée dans la liste déroulante.
Programmation (cron) : Programmer l'exécution du traitement (cliquez sur le ? pour vous aidez à créer la planification répétée). Je vous conseille une planification à 7h du matin.

Astuce : Si vous désirez lancer la copie rsync à la fin de la sauvegarde Jeedom (Configurable dans Menu Roue Crantée de Jeedom -> Sauvegarde), il vous suffit de créer un scénario, avec comme déclencheur #end_backup#, et avec une action qui va lancer le bouton Sauvegarde de l'équipement du Plugin rsync.

Définir la source

Onglet Source :

Dossier source : Dossier à copier. Tous les sous-dossiers du dossier source seront copiés.
Exclusion : Liste des dossiers, ou modèles de fichiers à exclure (séparés par un retour à la ligne). Le plugin placera une liste par défaut.

Pour notre exemple, nous sommes sur un RPI, et nous allons copier le dossier des sauvegardes de Jeedom. Il est possible de lancer une copie de tout le raspberry en mettant / dans dossier source.

Définit la destination

Onglet Destination :

IP ou Nom de machine : IP de la machine où est le serveur rsync (préférez l'IP si vous avez une IP fixe)
Port : Laissez tel quel si vous n'avez pas changé le port du serveur rsync.
Utilisateur : Mettre le nom d'utilisateur créé dans le serveur rsync (jeedom dans notre exemple)
Mort de passe : Mettre le mot de passe créé dans le serveur rsync (mdr#Complexe dans notre exemple)
Dossier : C'est la destination de la copie sur le serveur Rsync. Pour rapport dans DeltaCopy, nous avons créé un "Directorie" nommé BackupJeedom (voir image ci-dessous). Il faudra donc mettre BackupJeedom/ ou BackupJeedom/nom-de-votre-sous-dossier/ si vous désirez mettre la copie dans un sous-dossier.
Permissions : En règles générales et si la copie est vers un Windows ou un Nas, il faudra mettre "Ne pas copier les permissions". Si vous copiez les permissions, vous risquez de ne pas avoir accès aux fichiers dans l'explorateur Windows.

Testez la copie

C'est terminé. Rendez-vous sur la tuile Jeedom :

Pensez à bien agrandir votre équipement sur la tuile, puis cliquez sur Sauvegarder... Vous devriez voir cela :

A savoir : Si le premier fichier à copier est volumineux, rsync mettra du temps à remonter l'estimation du nombre total de fichier à copier.

Si la copie s'est déroulée correctement, voici le résultat final :

Important : La copie des fichiers ne peut-être assurée à 100%.
Le plugin utilise rsync et ne peut garantir son fonctionnement.
Je n'ai pas trouvé à ce jour de solution pour vérifier si 1 fichier n'a pas été copié correctement alors que les autres oui. En contre partie le plugin remonte l'information si la copie ne s'est pas terminée correctement.