Aller au contenu

Sauvegarde HC3 automatique sur NAS Synology


Lazer

Messages recommandés

Sauvegarde Home Center 3

sur NAS Synology

 

Version 3.22 - Janvier 2024

 

 

Voici un script Shell à installer sur un NAS Synology, permettant d'automatiser la sauvegarde de la box Home Center 3.

La sauvegarde est externalisée et stockée sur le NAS.

Un rapport par email est envoyé, ainsi qu'une notification dans l'interface Web de DSM.

 

Installation

 

Télécharger le fichier backup-hc3.sh ci-joint, et le copier sur le NAS.

Modifier le script afin de paramétrer les options suivantes :

 

  • HC3 Address
    • HC3_ADDRESS : Adresse IP de la HC3. Par exemple "192.168.1.1"
  • HC3 Authentication : echo -n 'user:password' | base64 ou https://www.base64encode.org/
    • HC3_AUTHENTICATION : Identifiants de connexions encodés en base64. Utiliser le site https://www.base64encode.org/ par exemple pour admin:password cela donne "YWRtaW46cGFzc3dvcmQ=". L'utilisateur doit avoir les droits "Administrateur" sur la box.
  • HC3 Backup History
    • HC3_BACKUP_HISTORY : doit prendre la valeur "YES" afin de sauvegarder l'historique. Si la sauvegarde est trop longue ou trop grosse, il est possible de désactiver la sauvegarde de l'historique en attribuant n'importe quelle autre valeur à cette variable, par exemple "NO".
  • HC3 Global Variable
    • HC3_VARIABLE_NAME : nom d'une variable à tester pour bloquer le déclenchement de la sauvegarde, par exemple "Vacances"
    • HC3_VARIABLE_IS_VALUE : valeur que doit avoir la variable éventuellement définie pour déclencher la sauvegarde, par exemple "0"
  • HC3 Active Profile (on peut filtrer sur aucun profil, 1 seul, ou les 2, dans ce dernier cas c'est un ET logique qui est effectué, c'est à dire que les 2 conditions doivent être vraies) :
    • HC3_PROFIL_IS_VALUE : ID du profil actif permettant de déclencher la sauvegarde. Si le profil actif est égal à cette valeur, alors la sauvegarde est démarrée.
    • HC3_PROFIL_NOT_VALUE : ID du profil qui ne doit pas être actif pour déclencher la sauvegarde. Si le profil actif est égal à cette valeur, alors la sauvegarde est bloquée.
  • NAS
    • NAS_PATH : chemin complet sur le NAS dans lequel copier le fichier sauvegarder, normalement il s'agit du même répertoire qui contient le script, par exemple "/volume1/backup/HC3"
  • Email
    • MAIL_FROM : adresse email source, par exemple : "HC3 <moi@domaine.com>"
    • MAIL_TO : adresse email cible, par exemple "Moi <moi@domaine.com>"
    • MAIL_SUBJECT : titre de l'email, par exemple "Backup HC3"
  • Notification
    • NOTIF_TO : destinataire des notifications sur le NAS, par exemple "@administrators"
    • NOTIF_TITLE : titre de la notification, par exemple "Sauvegarde"
  • Backup timeout
    • TIMEOUT : durée maximale en secondes de la sauvegarde autorisée avant que le script ne considère que la box est plantée, par exemple pour 10 minutes : 600
  • Reboot
    • CLEAN_REBOOT : focer un reboot complet de la box après chaque sauvegarde, valeur par défaut "No"
    • FORCE_REBOOT : forcer le reboto de la box si les services n'ont pas correctement redémarrés après la sauvegarde, valeur par défaut "Yes"

 

 

Sur l'interface Web de DSM, ouvrir le Panneau de configuration, sélectionner le Planificateur de tâches, puis Créer / Tâche planifiée / Script défini par l'utilisateur :

 

screenshot-dsm-task-0-create.png.fa0cae0e2f9d27aa79515ee437ba8c58.png

 

Dans l'onglet "Général", taper un nom de tâche et utiliser le compte "admin" :

 

screenshot-dsm-task-1-general.png.ee4ce87976d10c002aad0221f9384a77.png

 

Dans l'onglet "Programmer", sélectionner un jour et une heure, par exemple chaque dimanche à 3h du matin :

 

screenshot-dsm-task-2-program.png.a7b12f6e252b95ed95a98b61aac5c7ed.png

 

Dans l'onglet "Paramèters de la tâche", entrer l'adresse email destinataire des rapports, et la commande suivante pour exécuter le script (remplacer éventuellement le chemin s'il est différent chez vous) :

set -o pipefail; "/volume1/backup/HC3/backup-hc3.sh" 2>&1 | tee -a "/volume1/backup/HC3/backup-hc3.out"

 

screenshot-dsm-task-3-parameters.png.73b9ad9fc5784a0d2b5a95e2dcc6968a.png

 

 

Utilisation

 

Attendre... :)

 

Lorsque la planification se déclenche, un email est envoyé :

 

screenshot-email.png.c4485646cfb50f9754d45b17c2dbf5f8.png

 

Une notification apparait dans l'interface Web de DSM :

 

screenshot-dsm-notification.png.53dc271379609c97bdbf7c6387b2dd0a.png

 

Un nouveau fichier fbi contenant la sauvegarde (chiffrée) est présent sur le NAS, ainsi qu'un fichier journal backup-hc3.out :

 

screenshot-dsm-files.thumb.png.c82c87bc822597377a5aecce4cf051d6.png

 

 

Exécution immédiate :

 

Si on est impatient et qu'on veut tester immédiatement le script, le plus efficace est d'ouvrir une session SSH en ligne de commande (utiliser PuTTY sous Windows) et de l'exécuter directement :

admin@DiskStation:~$ /volume1/backup/HC3/backup-hc3.sh

Backup Fibaro Home Center : Saturday 11/07/2020 19:10:03
Vérification de la valeur de la variable globale 'Vacances'...
Variable globale 'Vacances' = '0' identique à '0' => Sauvegarde
Vérification du profil actif...
Profil actif = '1' => Sauvegarde
Sauvegarde avec historique...
...........................................................................
Sauvegarde terminée
Téléchargement de backup_HC3-00000000_2020_07_11-19_10_28.fbi...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  794k  100  794k    0     0  8028k      0 --:--:-- --:--:-- --:--:-- 8108k
Téléchargement terminé
Pas de reboot du Home Center

Backup terminé avec succès : Saturday 11/07/2020 19:12:02

 

(penser à activer préalablement le serveur SSH dans le panneau de configuration de DSM si ce n'est pas déjà fait)

 

 

Téléchargement :

 

 

 

Bonus : script pour HC2 & HCL :

 

 

Modifié par Lazer
  • Like 7
Lien vers le commentaire
Partager sur d’autres sites

Après un test cela fonctionne j'ai un peu galéré car je croyais que tu avais mis le mot de pas admin:admin " YWRtaW46YWRtaW4=" et ben non :D

On peut aussi dire que ce script fonctionne sous linux avec un cron

 

Backup Fibaro Home Center : Saturday 11/07/2020 16:56:03
Sauvegarde...
........................................................................
Sauvegarde terminée
Téléchargement de backup_HC3-0000XXXX_2020_07_11-16_56_25.fbi...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  635k  100  635k    0     0  7932k      0 --:--:-- --:--:-- --:--:-- 8039k
Téléchargement terminé
Pas de reboot du Home Center

Backup terminé avec succès : Saturday 11/07/2020 16:57:57

 

Lien vers le commentaire
Partager sur d’autres sites

Je m'auto-cite : par exemple pour admin:password cela donne "YWRtaW46cGFzc3dvcmQ="

 

OK donc une fois de plus, tu ne lis pas ce que j'écris :20: ..... triste, je suis

 

J'allais ajouter que pour tester directement le script, le mieux est de se connecter en SSH et d'exécuter le script directement en ligne de commande, cela permet de voir l'état d'avancement en temps-réel.

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

@Lazer : c'est tiptop :) 

 

installé et en fonction tous les matin à 02h00...

 

merci !!!

 

remarque ... je vais faire mon chieur  : 

 

J'ai galéré un peu car j'ai des noms d'espaces dans les chemins d'accès

 

  • donc dans les paramètres de la tâche sur le NAS, il faut encadrer les chemins par des "" . 

image.png.a5c5b1da6e0472c3ff91b6427901d9a8.png

  • Dans le script shell, ligne 73 et 78, il faut ajouter également les "" autour de ${NAS_PATH}
# Check destination directory
if [ ! -d "${NAS_PATH}" ]
then
	Error "Erreur : le répertoire de destination '${NAS_PATH}' n'existe pas"
	Quit 2
fi
cd "${NAS_PATH}"
  • Ensuite c'est con mais j'ai utilisé comme login:user, mon adresse mail comme pour me connecter en temps normal, et il a pas aimé, faut bien utiliser le user admin.
     
Lien vers le commentaire
Partager sur d’autres sites

Il y a 11 heures, kioneoranga a dit :

Ce script ne marche que pour la hc3?
Est il possible de l'utiliser pour la hc2?

Envoyé de mon HD1903 en utilisant Tapatalk
 

je ne pense pas mais on peut faire la même chose sur hc2 je pense...

enfin j'en suis même sur si tu maitrises le shell linux c'est pas très compliquer a faire. Je dis cela mais je serais incapable de le faire :D

Lien vers le commentaire
Partager sur d’autres sites

@kioneoranga l'API a légèrement évolué entre HC2 et HC3. Je t'ai partagé en bonus le script pour la HC2 à la fin du tuto.

 

@jjacques68

- Espace dans les chemins : en effet, merci pour la correction, j'ai mis à jour le script dans le tuto pour intégrer ce correctif. De mon coté j'ai pris pour habitude de ne jamais mettre d'espace dans les noms de chemins/fichiers sous Unix. Les accents ne posent plus de problème depuis le passage à l'Unicode, mais les espaces et un certains nombres de caractères spécieux tels que les guillemets posent toujours problème.

 

- User : j'ai rajouté une précision dans le tuto indiquant que l'utilisateur devait avoir les droits Administrateur. De mon coté, ça fait longtemps que je n'utilise plus "admin" et qu'il a été renommé.

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

@Lazer : je vais faire une demande (pas en mariage :) ) :

 

penses tu qu'il est possible de glisser dans le nom du fichier de backup, le numéro du firmware correspondant ?

ou alors de créer une arborescence en fonction du firmware ?

 

je me dis que ça permettrait en cas de retrogradage, de pouvoir savoir en quelle version était ce backup...

 

après j'ai aucune idée de la complexité de ma demande...

 

Si tu as un peu de temps et que tu pense que c'est utile, et pas trop compliqué à faire... ce serait avec plaisir !

 

merci !

 

 

Lien vers le commentaire
Partager sur d’autres sites

C'est possible oui, même si je n'en vois pas l'intérêt.

Pour moi ce script sert à externaliser les backups en cas de crash violent de la HC3.

Pour le problème qui te concerne, en cas de firmware buggé nécessitant un retour arrière, tu t'en rends compte tout de suite, il suffit de restaurer le dernier backup cloud effectué par la box juste avant la mise à jour, ou bien l'un des 3 derniers backups locaux stockés sur la HC3.

Je ne vois pas bien dans quelle situation on pourrait nécessiter de revenir en arrière plusieurs semaines/mois après ?!?

Pour tout dire, ça m'est arrivé une fois avec la HC2, j'ai dû retourner en arrière 3 semaines, non pas à cause d'un firmware, mais à cause d'une corruption de la base de données des modules Z-Wave. Du coup, le firmware n'avait aucune importance.

 

Je vais essayer de faire ça, mais pas tout de suite.... pas trop le temps en ce moment.

Lien vers le commentaire
Partager sur d’autres sites

alors comportement étrange, 

 

depuis quelques jours, le backup se fait mais j'ai une alerte du NAS que me dit qu'il a pas pu rebooter la box.

Je suis tombé au-delà des 10 min de timeout.

Et le fichier n'est pas copié sur le NAS.

J'ai monté à 12 min pour voir, idem...

 

Je télécharge manuellement un fichier de backup depuis la HC3, et oh ! surprise ils dépassent 25 Mo !!!!!

Alors que depuis le début je tourne entre 5 Mo et 7 Mo.

Et ça depuis que ma box à commencé à crasher (les derniers crash étaient volontaires afin de comprendre le pourquoi du comment - voir sujet dans topic dédié à la mise à jour).

 

J'ai donc restauré la dernière sauvegarde qui était encore de taille normal (dans le nouveau firmware), et là c'est ok...

 

un mystère de plus...

 

 

Lien vers le commentaire
Partager sur d’autres sites

Des logs peut être ?

Depuis le dernier firmware, le panneau d'événements remonte beaucoup plus d'informations.
S'ils n'ont pas adapté la politique de purge automatique, ça pourrait expliquer la croissance de la DB.


En espérant que ça ne soit pas un autre souci plus grave.

 

Mais oui, il faut demander au support.

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...