Dans la collection on se sauve la vie mutuellement car si le chauffage se coupe c'est le divorce, je vous propose aujourd'hui un petit script permettant la sauvegarde complète de votre carte SD sur une freebox V6 avec l'envoi d'un sms avant et aprés via Free mobile.
Vous l'avez compris, la simple sauvegarde des scripts et de domoticz en général peut ne pas permettre un rétablissement rapide de votre installation domoticz perso.
Pour ceux qui utilisent un raspberry pi, vous savez à quel point les cycles d’écritures sur les carte SD peuvent finir par endommager définitivement, votre serveur domotique perso. Il existe un certain nombre d'articles sur le sujet qui vous démonte la possibilité de faire tourner votre système sur un disque externe tout en concevant une carte SD pour le boot. Mais si tout comme moi, vous n'en faites qu'a votre tête, une sauvegarde complète de votre carte SD n'est pas du luxe.
Les pré-requis:
- une freebox V6 mais avec un peu d'huile de coude le script doit pouvoir s'adapter.
- une installation (domoticz dans mon cas) sur laquelle vous avez passé beaucoup de temps et que la simple sauvegarde des répertoires ne permet pas une remise en service rapide.
- un abonnement free mobile permettant l'envoi de sms sur votre portable préféré.
Fixons une fois pour toute un élément incontournable.
La taille du disque de stockage de votre freebox doit être supérieure à la taille de votre carte SD même si le fichier issu de la copie sera compressé.
On commence:
On se connecte comme d'hab au raspberry pi. Puis rendez vous à l'endroit où vous stockez vos scripts. Mon coté psychorigide me fait ranger mes scripts par type (bash, python etc). Dans mon cas, les scripts shell se trouvent ici
Code : Tout sélectionner
/home/pi/domoticz/scripts/shellCode : Tout sélectionner
nano include_passwdCode : Tout sélectionner
user='IdentifiantFreeMobile' ; export user
pass='motDePasseFreeMobile' ; export pass
user_box='admin' ; export user_box
pass_box='MotDePasseFreeBox' ; export pass_boxCréation du répertoire de montage
Code : Tout sélectionner
sudo mkdir /mnt/freeboxEnsuite on tape la commande pour identifier le lecteur correspondant à la carte SD.
Code : Tout sélectionner
sudo fdisk -lDernière chose, la création du répertoire de stockage sur sa freebox.
On se connecte en tapant mafreebox.free.fr dans votre navigateur préféré puis sur Explorateur de fichier (accessible après authentification, le même password que vous avez tapé dans le fichier include_passwd CQFD).
Déroulez les emplacements et créer un répertoire Backup_img ou tout autre chose qui vous parle.
N'oubliez pas de modifier cela dans le script image.sh décrit plus bas.
Allez zou, on met tout ça en boite dans le script suivant :
Code : Tout sélectionner
nano image.shCode : Tout sélectionner
#!/bin/sh
#############
#
# Script de sauvegarde de l'image complète du serveur Domoticz sur une Freebox V6
# Transmission d un SMS avant et après l'opération
#
# José - JANVIER 2015
#
#############
. ./include_passwd # comprend les identifiants pour acceder à la freebox et transmission des SMS via FreeMobile
# Formatage de la date debut et de l'heure
DATE_DEBUT=`date +%d-%m-%Y`
H_DEPART=`date +%H:%M:%S`
DEBUT_EN_SEC=$(($(echo $H_DEPART | cut -d':' -f1)*3600+$(echo $H_DEPART | cut -d':' -f2)*60+$(echo $H_DEPART | cut -d':' -f3)))
# Transmission d'un premier sms
message=${DATE_DEBUT}' '$H_DEPART' Début de la sauvegarde image du serveur domoticz.'
curl -s -i -k "https://smsapi.free-mobile.fr/sendmsg?user=$user&pass=$pass&msg=$message"
# Montage de la Freebox
echo "Montage de la Freebox"
/sbin/mount.cifs //mafreebox.freebox.fr/Disque\ dur/ /mnt/freebox/ -o user=$user_box,pass=$pass_box
# Sauvegarde sur la Freebox
echo "Sauvegarde sur la Freebox"
dd if=/dev/mmcblk0 | gzip -9 > /mnt/freebox/Backup_img/srv-domoticz-${DATE_DEBUT}'-'$H_DEPART.img.gz
# Démontage de la Freebox
echo "Démontage de la Freebox"
/bin/umount /mnt/freebox
# Formatage de la date de fin et de l'heure
DATE_FIN=`date +%d-%m-%Y`
H_FIN=`date +%H:%M:%S`
# Découpe pour mise en seconde
FIN_EN_SEC=$(($(echo $H_FIN | cut -d':' -f1)*3600+$(echo $H_FIN | cut -d':' -f2)*60+$(echo $H_FIN | cut -d':' -f3)))
# Calcul de la durée d'execution
DUREE_EN_SEC=$(($FIN_EN_SEC-$DEBUT_EN_SEC))
# Remise en Heure - Minute - Seconde
DUREE_H=$(($DUREE_EN_SEC/3600))
DUREE_M=$((($DUREE_EN_SEC%3600)/60))
DUREE_S=$((($DUREE_EN_SEC%3600)%60))
# Transmission sms avec heure de fin et la durée
message=${DATE_FIN}' '$H_FIN' Fin de la sauvegarde image du serveur domoticz. Durée du traitement '$DUREE_H':'$DUREE_M':'$DUREE_S
curl -s -i -k "https://smsapi.free-mobile.fr/sendmsg?user=$user&pass=$pass&msg=$message"Si vous avez changé le point de montage, changer son nom ici (extrait de la commande) :
/sbin/mount.cifs //mafreebox.freebox.fr/Disque\ dur/ /mnt/freebox/ .../...
ET LA
/bin/umount /mnt/freebox .../...
Pour adapter le nom de votre carte SD, modifier mmcblk0 en rouge par le nom de votre propre carte SD et Backup_img en bleu par le nom de votre répertoire de sauvegarde sur la freebox (extrait de la commande):
dd if=/dev/mmcblk0 | gzip -9 > /mnt/freebox/Backup_img/srv-domoticz .../...
Rendons maintenant ce script exploitable grâce à un chmod +x image.sh
Et tentons le premier lancement.
Code : Tout sélectionner
sudo ./image.shPetite astuce en cas de plantage, lancez votre script avec la commande suivante :
Code : Tout sélectionner
sudo sh +x image.shIl ne reste plus qu'a gérer sa planification (crontab -e) en fonction de la place restante sur votre freebox et votre degré de paranoïa. Mais si vous êtes arrivé à ce stade de la lecture, je suis heureux de voir que je ne suis pas tout seul
Source sur la copie:
http://blog.nicolargo.com/2013/04/raspb ... te-sd.html
Et après...
Comme je dispose d'un raspberry de test, j'ai décidé de tester une restauration complète après avoir lancé une sauvegarde cette nuit.
Et bien après avoir replaqué la sauvegarde sur une nouvelle carte SD, le raspberry est reparti au quart de tour.
J'attends vos commentaires et remarques toujours très constructives.