SAUVEGARDES AUTOMATIQUES SUR UN NAS

De GCE Electronics
Aller à la navigation Aller à la recherche

Sauvegardes

300px
Nom Sauvegardes
Famille Entretien et dépannages
Wiki créé le 25/06/2018
Wiki mis à jour le 25/06/2018
Auteur fgtoul

Présentation

Les différents matériels de GCE Electronics contiennent des données qui nous sont précieuses. Outre la configuration que nous avons passé des jours à peaufiner (voire des semaines), nous trouvons divers formulaires XML tout aussi précieux

  • status.xml,
  • io.xml,
  • analog.xml,
  • globalstatus.xml,

et bien d'autres encore. Ces fichiers contiennent nos mesures de la température du salon ou des chambres, la quantité de pluie tombée hier, le PH de l'eau de la piscine, mais surtout nos consommations d'énergie, d'eau ou de gaz que nous aimerions conserver à des fins statistiques. Les amateurs de météo trouveront d'autres raisons tout aussi importantes pour sauvegarder les mesures faites par leurs sondes .

Nous allons planifier une application Php sur un serveur. Elle effectuera les sauvegardes à un rythme régulier sur le disque du serveur. Dans notre tutoriel, nos exemples et captures d'écrans s'appuieront sur un NAS Synology, mais il sera facile d'adapter le script pour qu'il fonctionne sur un autre type de serveur.

Le script permet, pour chaque matériel, de générer des jeux de sauvegarde qui auront une durée de vie programmée. Dans ce tutoriel, le déroulement du script sera appelé "cycle de sauvegarde", les données sauvegardées durant ce cycle seront nommées "Jeu de sauvegarde". Ces jeux de sauvegardes seront conservés selon un nombre de cycles défini par paramètre. Ainsi, une sauvegarde planifiée de manière hebdomadaire, avec une rétention de 3 cycles, sera préservée pendant 3 semaines. Les données seront écrasées lors du quatrième cycle.

Important : Un jeu de sauvegarde est préservé lorsqu'il est complet. Si un problème survient pendant le cycle, le jeu sera remplacé lors du cycle suivant. Il est possible de déclarer que les jeux de sauvegarde incomplets doivent malgré tout être préservés. Dans ce cas il est conseillé de valoriser le paramètre de rétention à zéro (rétention illimitée).

Préparation du serveur

Création du dossier de sauvegarde

Sur le disque du serveur, créons un dossier qui recevra les différentes sauvegardes de nos matériels.

Sur mon Synology, j'ai créé le dossier test_savIPX

Dans les propriétés du dossier, ajoutez le SYSTEM comme ayant droit.

Sauvegardes droit1.png

Attribuez tous les droits au SYSTEM afin que PHP puisse placer les fichiers dans ce dossier.

Fichier:Sauvegardes droit2.png

Création du dossier de l'application Web

Dans l'arborescence du serveur web, créez un dossier qui contiendra l'application.

Sur mon Synology, j'ai créé le dossier gce ayant le chemin /volume1/web/gce

Dans les propriétés de ce dossier, vérifiez que le SYSTEM a également tous les droits d'accès (lecture et écriture).

Le script PHP

Téléchargement

Voici le code source du script SaveIPX4v2.

Téléchargez et décompressez l'archive dans le dossier que vous avez créé pour l'application (gce dans mon cas).

Adaptation du code

Il va être nécessaire de valoriser quelques paramètres dans le script.

Lise du matériel

Renseignez la liste de matériel pour lesquels vous voulez activer la sauvegarde.

Dans le code, vous trouverez une table nommée $materiel

Créez une ligne par matériel en respectant l'ordre des données. Chaque ligne est composée de 8 valeurs séparées par une virgule

  • nom du matériel : ce nom sera utilisé lors de la création d'un sous-dossier qui contiendra les jeux de sauvegarde pour ce matériel. Ce sous-dossier sera créé dans le dossier que vous avez créé précédemment sur le disque (/volume1/test_savIPX dans mon cas)
  • Type de matériel (IPX800V3, IPX800V4, EDRT2, ED) (en majuscules),
  • adresse IP locale ou distante,
  • port TCP,
  • securisation interface administrateur : doit prendre la valeur true si le menu Administrateur est protégé par mot de passe, ou false si non protégé
  • utilisateur administrateur (respectez les majuscules/minuscules),
  • password administrateur (respectez les majuscules/minuscules),
  • nombre de cycles de sauvegarde à conserver. Comme vu plus haut, cela correspond au nombre de cycles au cours desquels le jeu sera préservé. 0 = rétention illimitée.

Séparez chaque ligne de matériel par une virgule. La dernière ligne ne devra pas être suivie par une virgule.

Exemple de table avec un seul matériel :

$materiel=array
			(
			array('IPX800_1','IPX800V4','192.168.0.112','80',false,'admin','',3)
			);

Exemple de table avec deux matériels :

$materiel=array
			(
			array('IPX800','IPX800V4','192.168.0.112','80',false,'admin','',3),
			array('EDRT','EDRT2','192.168.0.44','80',true,'admin','jhgFdgt1n',7)
			);

Dossier web pour les données temporaires

Renseignez le paramètre $dwnload avec le nom du sous-dossier temporaire où seront téléchargés les fichiers à partir des matériels.

Ce sous-dossier sera automatiquement créé dans le répertoire web de cette application exemple :

$dwnload="sauvegardesGCE";

Dossier de destination des sauvegardes

Précédemment, vous avez créé un dossier sur le disque du serveur afin de stocker les différents jeux de sauvegarde.

Dans ce dossier, le script créera un sous-dossier par méteriel.

Renseignez le paramètre $destination avec le chemin absolu du dossier que vous avez créé

(/volume1/test_savIPX dans mon cas)

exemple :

$destination="/volume1/test_savIPX";

Traitement des jeux incomplets

Par défaut, un jeu de sauvegarde réputé incomplet (ayant rencontré des erreurs pendant son déroulement) ne sera pas préservé et sera remplacé lors du cycle suivant.

Si vous souhaitez préserver les jeux incomplets, valorisez le paramètre ci-dessous à true. Dans ce cas, il est conseillé de régler la rétention à 0 pour tous les matériels dans la table $materiel

exemple :

$preserveIncomplets=false;

Les notifications

$NotificationsMail: Renseignez la valeur true si vous souhaitez que l'application envoie un mail à la fin du traitement.

$NotificationsLimitees: Renseignez truepour que les mails soient envoyés uniquement lorsque le script se termine avec des erreurs. renseignez false pour un envoi systématique. $NotificationsDestinataire: renseignez l'adresse mail du destinataire des notifications.

exemple :

$NotificationsMail=true; //true : envoie d'un mail à la fin du traitement
$NotificationsLimitees=true; //si activés, les mails seront envoyés uniquement lorsque le script se terminera avec des erreurs.
$NotificationsDestinataire="destinataire@gmail.com";

L'envoi des mails repose sur la fonction "Notifications" du synology. Si vous ne l'avez déjà fait, activez les notifications dans le panneau de configuration, et renseignez les accès à votre fournisseur.

Le planificateur de tâches

Créez une tâche planifiée sur votre serveur afin que le script php soit exécuté à intervalle régulier.

Sur le Synology, dans le panneau de configuration, ajoutez une tâche au planificateur

Sauvegardes plan1.png


Sauvegardes plan2.png

l’utilisateur est root, le mot de passe est le même que pour admin sur le synology

Sauvegardes plan3.png

Vous pouvez envoyer une alerte mail lorsque la sauvegarde se passe mal.

renseignez Curl et l’url de votre page web entre guillemets

dans mon cas, c’est

curl "http://192.168.0.9/gce/SaveIPX4.php"

Validez après avoir renseigné le calendrier d’exécution (onglet Programmer)

Sélectionnez la tâche dans la liste et cliquez sur le bouton Paramètres.

Activez le journal d’exécution.

Sauvegardes plan4.png

Remarque : la fonction Curl doit être installée sur votre serveur.

Sur le Synology, dans les paramètres de la Web Station, vérifiez les paramètres PHP (toutes les versions si vous en avez installé plusieurs)

Sauvegardes curl.png

Les fichiers sauvegardés

  • Tous les jeux de sauvegardes sont datés.

Sauvegardes timestamp.png

  • un fichier journal.txt est complété à la fin de chaque cycle. Il contient tout l'historique des sauvegardes.

exemple de journal pour la sauvegarde d'une IPX800 V4 et d'un EDRT2

Sous-dossier download “sauvegardesGCE” dÈj‡ existant.
============== IPX800_1(IPX800V4) ==============
Sous-dossier ‘/volume1/test_savIPX/IPX800_1’ dÈj‡ existant.
crÈation du dossier de destination “/volume1/test_savIPX/IPX800_1/2” rÈussie.
Sous-dossier “sauvegardesGCE/IPX800_1” dÈj‡ existant.
Download du fichier http://admin:12345678@192.168.1.67:80/admin/status.xml vers /volume1/web/gce/sauvegardesGCE/IPX800_1/status_20180624.xml rÈussi.
DÈplacement du fichier /volume1/web/gce/sauvegardesGCE/IPX800_1/status_20180624.xml vers /volume1/test_savIPX/IPX800_1/2/status_20180624.xml rÈussi.
Download du fichier http://admin:12345678@192.168.1.67:80/admin/io.xml vers /volume1/web/gce/sauvegardesGCE/IPX800_1/io_20180624.xml rÈussi.
DÈplacement du fichier /volume1/web/gce/sauvegardesGCE/IPX800_1/io_20180624.xml vers /volume1/test_savIPX/IPX800_1/2/io_20180624.xml rÈussi.
Download du fichier http://admin:12345678@192.168.1.67:80/admin/graph.xml vers /volume1/web/gce/sauvegardesGCE/IPX800_1/graph_20180624.xml rÈussi.
DÈplacement du fichier /volume1/web/gce/sauvegardesGCE/IPX800_1/graph_20180624.xml vers /volume1/test_savIPX/IPX800_1/2/graph_20180624.xml rÈussi.
Download du fichier http://admin:12345678@192.168.1.67:80/admin/analog.xml vers /volume1/web/gce/sauvegardesGCE/IPX800_1/analog_20180624.xml rÈussi.
DÈplacement du fichier /volume1/web/gce/sauvegardesGCE/IPX800_1/analog_20180624.xml vers /volume1/test_savIPX/IPX800_1/2/analog_20180624.xml rÈussi.
Download du fichier http://admin:12345678@192.168.1.67:80/admin/download/config.gce vers /volume1/web/gce/sauvegardesGCE/IPX800_1/config_20180624.gce rÈussi
DÈplacement du fichier /volume1/web/gce/sauvegardesGCE/IPX800_1/config_20180624.gce vers /volume1/test_savIPX/IPX800_1/2/config_20180624.gce rÈussi.
============== EDRT(EDRT2) ==============
Sous-dossier ‘/volume1/test_savIPX/EDRT’ dÈj‡ existant.
crÈation du dossier de destination “/volume1/test_savIPX/EDRT/2” rÈussie.
Sous-dossier “sauvegardesGCE/EDRT” dÈj‡ existant.
Download du fichier http://admin:12345678@192.168.1.3:80/admin/status.xml vers /volume1/web/gce/sauvegardesGCE/EDRT/status_20180624.xml rÈussi.
DÈplacement du fichier /volume1/web/gce/sauvegardesGCE/EDRT/status_20180624.xml vers /volume1/test_savIPX/EDRT/2/status_20180624.xml rÈussi.
Download du fichier http://admin:12345678@192.168.1.3:80/admin/download/config.gce vers /volume1/web/gce/sauvegardesGCE/EDRT/config_20180624.gce rÈussi
DÈplacement du fichier /volume1/web/gce/sauvegardesGCE/EDRT/config_20180624.gce vers /volume1/test_savIPX/EDRT/2/config_20180624.gce rÈussi.
-------------------------------------------------------
Le cycle de sauvegarde terminÈ normalement.
-------------------------------------------------------


  • le mail envoyé à la fin du traitement contient un résumé des sauvegardes.

Il contient également le numéro du jeu de sauvegarde pour chaque matériel. sauvegardes_mail.png