Page 1 sur 1

Restauration impossible malgré sauvegarde domoticz.db toutes les semaines

Publié : 16 juil. 2017, 10:26
par digdogger
Salut,
Domoticz tourne sur une Raspberry depuis 3 mois sans problème. Je fais des sauvegardes toutes les semaines du fichier domoticz.db via un client ftp qui vient se connecter automatiquement à la raspi.
Hier j'ai du tout coupé car je devais remplacer une prise éléctrique chez moi. Donc j'éteins proprement la raspi avec la bonne vieille commande :

Code : Tout sélectionner

sudo shutdown -h now
Une fois fini, je remets tout en route, et là Domoticz reste définitivement en offline, malgré le service bien lancé et actif.
Je tente donc une restauration en remplaçant le fichier domoticz.db par un plus ancien, et toujours rien.
J'essaie même des sauvegardes plus anciennes, pareil.
Je décide donc de reinstaller domoticz en faisant le deuil de ma base de données (qui n'est certe pas très grosse mais bon) et je relance tout.
Forcemment, j'ai perdu ma config, mes scripts et ma base de donnée.
Je me demandais donc, quel est le moyen le plus sûr de faire une sauvegarde avec domoticz pour éviter ce genre de désastre. Je n'ai pas vraiment compris pourquoi aucune de mes sauvegardes ne peut être restaurée.

Re: Restauration impossible malgré sauvegarde domoticz.db toutes les semaines

Publié : 16 juil. 2017, 11:38
par Chrominator
Tu ne donnes pas assez d'éléments pour qu'on puisse dire pourquoi tes restaurations ne fonctionnent pas.
Il est possible qu'attraper au vol une base active (des écritures ont lieu pendant la sauvegarde) produise une base corrompue ou inconsistente.

Tu aurais pu essayer d'utiliser l'une des sauvegardes automatiques contenues sur ta carte sd dans domoticz/backups/, pour peu que tu n’aie pas désactivé la fonction.

D'autre part, une sauvegarde doit être testée, sans quoi on est jamais sûr qu'en cas de besoin on récupèrera un système.
Ça nécessite quelques moyens, mais dans nos config une carte sd en bon état suffit à vérifier que le pi repart avec toutes ses affaires.

il y a quelques scripts de sauvegarde ici dans ce forum, tu les trouveras facilement.
Pour ma part j'ai opté en premier lieu pour des sauvegardes différentielles sur un mois envoyées sur un autre système à base de duplicity.
Je viens de laisser tomber ce système compliqué à mettre en œuvre car en fin de compte je n'ai que rarement restauré quelque chose à partir de ces sauvegardes, et en cas de gros pépin (carte sd hs), je suis reparti d'une image que j'avais conservé.

Je viens d'opter pour un script assez malin je trouve, semblable à ceux trouvés sur ce forum ;
Le script sauvegarde tour à tour la base de données, le répertoire de domoticz et forme une image de la sd sur un système tiers (freebox), en conservant un nombre paramétrable d'exemplaires.
Perso j'ai sauvegardé sur un partage nfs d'un pc, ça revient au même.
La base de données est sauvegardée en 6 s, le répertoire en 18 s et l'image de la sd (2,7 Go) en 1h 5mn.

Restauration sur une sd vierge prévue dans quelques minutes (et oui il faut tester ;) ).

Le script vient de là cette page.

Re: Restauration impossible malgré sauvegarde domoticz.db toutes les semaines

Publié : 17 juil. 2017, 18:57
par digdogger
Salut,
je te remercie pour ta réponse.
Je débute avec Domoticz et j'ai lu quelque part qu'il n'était pas bon pour la carte SD d'activer la fonction Back-up.
Pour l'instant, je vais opter pour la solution sauvegarder la base à la main via les paramètres de Domoticz toutes les semaines. Je verrais plus tard pour les scripts de sauvegarde automatique.
Je n'ai pas cloner la carte SD car j'ai une carte 32Go et çà prend trop de place et de temps à sauvegarder.

Pour les sauvegardes à la main, je ne suis pas convaincu non plus car comme je l'ai écrit sur un autre post, en faisant des essais de sauvegarde/restauration manuelle espacées de quelques heures. Lors de la restauration, certaines sondes MySensor ne sont plus détectées comme un capteur température/humidité mais comme 2 séparées (même 24h après la restauration).
Il faut redémarrer plusieurs fois la raspberry, le gateway Mysensor et même les sondes pour que tout redevienne normal.
Cette situation est pour moi assez inquiétante et j'éspère ne pas avoir besoin de faire des restaurations trop souvent.

Re: Restauration impossible malgré sauvegarde domoticz.db toutes les semaines

Publié : 19 juil. 2017, 13:31
par Carthman
Chrominator a écrit : Le script vient de là cette page.
Salut !

Je serai bien intéressé par ce script, mais le lien pointe vers un site qui ne se charge pas chez moi, tu peux y accéder sans problèmes toi ?
Il y aurait un autre endroit où trouver ce script ?

Merci

Re: Restauration impossible malgré sauvegarde domoticz.db toutes les semaines

Publié : 19 juil. 2017, 20:16
par Chrominator
Oui, j'y accède encore ce soir.
Je reproduit le script plus bas ici, mais c'est dommage de se passer du texte qui présente le script.

Cependant, un bémol ; le script produit bien une image pour la sauvegarde de la SD, mais sur 2 essais de sauvegarde puis restauration j'ai eu deux échecs ; le pi ne boot pas l'image restaurée.
C'est pas glop. :(

J'ai pas encore eu le temps d'analyser pourquoi.

Code : Tout sélectionner

#! /bin/sh

##-------------------------------------------------------------------------
## Script : backup.sh
##
## Objectif : Script qui permet d'automatiser la sauvegarde des éleménts
## importants d'une installation DOmoticz'
##
## Auteur : Bastien DUMAS 
## Date : 01/11/2015
## Version : 1.0
##-------------------------------------------------------------------------

################### CONFIGURATION DU SCRIPT ###################
## Information abonné FreeMobile pour l'envoie de SMS
FREE_USERNAME="votre ID" #Nom d'utilisateur freemobile
FREE_PASSWORD="votre PASSWORD" #Password freemobile

#Informations relative à domoticz
DOMOTICZ_IP="localhost"  # Domoticz IP 
DOMOTICZ_PORT="8080"        # Domoticz port 
DOMOTICZ_DIRECTORY="/home/pi/domoticz" #Répertoire Domoticz
FILESYSTEM="/dev/mmcblk0" #Chemin du device filesystem

#Informations relative à la sauvegarde
BACKUP_DIRECTORY="votre répertoire de backup" #Répertoire de destination des fichiers issus de la sauvegarde
TIMESTAMP=`/bin/date +%Y%m%d%H%M%S` #Timestamp utilisé pour différencier les sauvegardes
DB_BACKUPFILE="domoticz_$TIMESTAMP.db" #Nom du fichier issu de la sauvegarde de la base de donnée domoticz
DOMOTICZ_DIRECTORY_BACKUPFILE="domoticz_directory_$TIMESTAMP.tar.gz" #Nom du fichier issu de la sauvegarde du répertoire domoticz 
FILESYSTEM_BACKUPFILE="domoBox_$TIMESTAMP.gzip" #Nom du fichier issu de la sauvegarde du filesystem complet

#Chemin du fichier de log
LOG_FILE="/media/nas/RPi/domoticz/backup/backup.log"

#Temps de conservation des fichiers de sauvegarde
TTL_DB="7" #Base de donnée
TTL_DOMOTICZ="31" #Répertoire domoticz
TTL_FILESYSTEM="62" #Sauvegarde complete du FILESYSTEM
###############################################################




####################### DEBUT DU SCRIPT #######################
echo "===============> Sauvegarde du $TIMESTAMP" >> $LOG_FILE
echo "==== ELEMENTS DE CONFIGURATION ====" >> $LOG_FILE
echo "BACKUP_DIRECTORY : $BACKUP_DIRECTORY" >> $LOG_FILE
echo "TIMESTAMP : $TIMESTAMP" >> $LOG_FILE
echo "DB_BACKUPFILE : $DB_BACKUPFILE" >> $LOG_FILE
echo "DOMOTICZ_DIRECTORY_BACKUPFILE : $DOMOTICZ_DIRECTORY_BACKUPFILE" >> $LOG_FILE
echo "FILESYSTEM_BACKUPFILE : $FILESYSTEM_BACKUPFILE" >> $LOG_FILE
echo "myBackupFile = ${BACKUP_DIRECTORY}/${DB_BACKUPFILE}" >> $LOG_FILE
echo "LOG_FILE = $LOG_FILE" >> $LOG_FILE
echo "===================================" >> $LOG_FILE
echo "" 
echo ""

        #### PARTIE 1 : SAUVEGARDE #####

case "$1" in
	DB) ## Sauvegarde de la base de donnée de domoticz
		echo "$TIMESTAMP : Vous avez demande la sauvegarde de la base de donnée de Domoticz " >> $LOG_FILE
		myBackupFile="${BACKUP_DIRECTORY}/${DB_BACKUPFILE}"

		#Initialisation du timer
		BEFORE=$(/bin/date +'%s')

		#Sauvegarde
		sav_db=$(curl -s http://$DOMOTICZ_IP:$DOMOTICZ_PORT/backupdatabase.php > $myBackupFile)

		#Calcul du temps d'éxécution
		AFTER=$(/bin/date +'%s')
		ELAPSED=$(($AFTER - $BEFORE))
		ELAPSED=`/bin/date -u -d @${ELAPSED} +"%T"`

		#LOG du résultat
		if [ -e $myBackupFile ]
		then
			msg="$TIMESTAMP : Sauvegarde OK dans le fichier : $myBackupFile en $ELAPSED"
			echo $msg >> $LOG_FILE
			##Envoie du SMS de succes
			curl -s -i -k "https://smsapi.free-mobile.fr/sendmsg?user=$FREE_USERNAME&pass=$FREE_PASSWORD&msg=$msg"
		else
			msg="$TIMESTAMP : ERREUR LORS DE LA SAUVEGARDE DE LA BASE DE DONNEE DOMOTICZ" 
			echo $msg >> $LOG_FILE
			##Envoie du SMS d'erreur
			curl -s -i -k "https://smsapi.free-mobile.fr/sendmsg?user=$FREE_USERNAME&pass=$FREE_PASSWORD&msg=$msg"
			exit 3;
		fi
	;;
	DOMOTICZ) ## Sauvegarde du répertoire domoticz complet
		echo "$TIMESTAMP : Vous avez demande la sauvegarde du répertoire DOMOTICZ" >> $LOG_FILE

		#Construction du nom de fichier
		myBackupFile="${BACKUP_DIRECTORY}/${DOMOTICZ_DIRECTORY_BACKUPFILE}"

		#Initialisation du timer
		BEFORE=$(/bin/date +'%s')

		#Sauvegarde
		sav_directory=$(sudo tar czf $myBackupFile $DOMOTICZ_DIRECTORY)

		#Calcul du temps d'éxécution
		AFTER=$(/bin/date +'%s')
		ELAPSED=$(($AFTER - $BEFORE))
		ELAPSED=`/bin/date -u -d @${ELAPSED} +"%T"`

		#LOG du résultat
		if [ -e $myBackupFile ]
		then
			msg="$TIMESTAMP : Sauvegarde OK dans le fichier : $myBackupFile en $ELAPSED" 
			echo $msg >> $LOG_FILE
			##Envoie du SMS de succes
			curl -s -i -k "https://smsapi.free-mobile.fr/sendmsg?user=$FREE_USERNAME&pass=$FREE_PASSWORD&msg=$msg"
		else
			msg="$TIMESTAMP : ERREUR LORS DE LA SAUVEGARDE DU REPERTOIRE DOMOTICZ" 
			echo $msg >> $LOG_FILE
			##Envoie du SMS d'erreur
			curl -s -i -k "https://smsapi.free-mobile.fr/sendmsg?user=$FREE_USERNAME&pass=$FREE_PASSWORD&msg=$msg"
			exit 3;
		fi
	;;
	FILESYSTEM) ## Sauvegarde du FILESYSTEM complet
		echo "$TIMESTAMP : Vous avez demande la sauvegarde du FILESYSTEM" >> $LOG_FILE
		
		#Construction du nom de fichier
		myBackupFile="${BACKUP_DIRECTORY}/${FILESYSTEM_BACKUPFILE}"
		
		#Initialisation du timer
		BEFORE=$(/bin/date +'%s')
		
		#Sauvegarde
		sav_filesystem=$(sudo dd bs=4M if=$FILESYSTEM | gzip > $myBackupFile)
		
		#Calcul du temps d'éxécution
		AFTER=$(/bin/date +'%s')
		ELAPSED=$(($AFTER - $BEFORE))	
		ELAPSED=`/bin/date -u -d @${ELAPSED} +"%T"`
		
		#LOG du résultat
		if [ -e $myBackupFile ]
		then
			msg="$TIMESTAMP : Sauvegarde OK dans le fichier : $myBackupFile en $ELAPSED"
			echo $msg >> $LOG_FILE
			##Envoie du SMS de succes
			curl -s -i -k "https://smsapi.free-mobile.fr/sendmsg?user=$FREE_USERNAME&pass=$FREE_PASSWORD&msg=$msg"
		else
			msg="$TIMESTAMP : ERREUR LORS DE LA SAUVEGARDE DU FILESYSTEM"
			echo $msg >> $LOG_FILE
			##Envoie du SMS d'erreur
			curl -s -i -k "https://smsapi.free-mobile.fr/sendmsg?user=$FREE_USERNAME&pass=$FREE_PASSWORD&msg=$msg"
			exit 3;
		fi
	;;
	*) ## ERREUR DE PARAMETRE
		
		echo "USAGE $0 :" >&2
		echo "$0 type_sauvegarde" >&2
		echo "$0 (DB|DOMOTICZ|FILESYSTEM)" >&2
		echo "Paramètres incorrectes" >> $LOG_FILE
		exit 3;
esac

        #### PARTIE 2 : NETTOYAGE #####

#Nettoyage des sauvegarde de DB
myDBFile="${BACKUP_DIRECTORY}/*.db"
DB_to_be_deleted=`find $myDBFile -type f -mtime +$TTL_DB`
echo "DB_to_be_deleted : $DB_to_be_deleted" >> $LOG_FILE
find $myDBFile -type f -mtime +$TTL_DB -exec rm {} \; 

#Nettoyage des sauvegardes de répertoire domoticz
myDIRECTORYFile="${BACKUP_DIRECTORY}/*.tar.gz"
DIRECTORY_to_be_deleted=`find $myDIRECTORYFile -type f -mtime +$TTL_DOMOTICZ`
echo "DIRECTORY_to_be_deleted : $DIRECTORY_to_be_deleted" >> $LOG_FILE
find $myDIRECTORYFile -type f -mtime +$TTL_DOMOTICZ -exec rm {} \;

#Nettoyage des sauvegardes du filesystem
myFSFile="${BACKUP_DIRECTORY}/*.gzip"
FS_to_be_deleted=`find $myFSFile -type f -mtime +$TTL_FILESYSTEM`
echo "FS_to_be_deleted : $FS_to_be_deleted" >> $LOG_FILE
find $myFSFile -type f -mtime +$TTL_FILESYSTEM -exec rm {} \;
	
######################## FIN DU SCRIPT #######################

Re: Restauration impossible malgré sauvegarde domoticz.db toutes les semaines

Publié : 19 juil. 2017, 23:46
par Carthman
C'est bon j'ai accès au site, il devait y avoir un souci ce matin !

Re: Restauration impossible malgré sauvegarde domoticz.db toutes les semaines

Publié : 26 août 2017, 11:50
par Chrominator
La restauration de la sauvegarde à la volée de la SD fonctionne très bien, il faut juste remplacer la base de données de Domoticz par la version qui convient (normal, la sauvegarde de la bdd par copie des secteurs produit une base corrompue puisque Domoticz n'est pas arrêté).

Les problèmes que j'ai eu plus haut ici devaient venir de la SD dont je me servais pour mes tests, trop lente je pense.