[Tuto] Backup carte SD complète sur nas avec envoi mail

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
nickous
Messages : 30
Inscription : 24 juil. 2015, 16:31

Re: Backup carte SD complète sur nas avec envoi mail

Message par nickous »

Ce ne serait pas plus prudent d'arrêter domoticz pour faire le backup ?
Si y'a des écritures transactionnelles DZ pendant la copie, je ne sais pas ce que cela pourrait donner... :?

Code : Tout sélectionner

sudo service domoticz.sh stop
et après

Code : Tout sélectionner

...start
-EM
Messages : 1
Inscription : 15 juin 2017, 09:53

Re: Backup carte SD complète sur nas avec envoi mail

Message par -EM »

fabienp a écrit :Salut, merci pour ce script!
[...]
EDIT : je reprend ce matin :
j'ai une erreur :

Code : Tout sélectionner

pi@raspberrypi:~ $ sudo ./backup_image.sh
./backup_image.sh: 10: ./backup_image.sh: arithmetic expression: expecting EOF:           "09*3600+28*60+31"
j'ai désactivé la ligne concerné "DEBUT _EN_SEC par un #
du coup ça a passer ce blocage
je continue et je reviens dire si ça marche bien :)

EDIT 2 :
ça a marché! mais par contre les 2 lignes qui convertisse l'heure en seconde (début et fin) font planter le script, ligne 10 et 31, message d'erreur le même qu'au dessus
Un peu tard peut-être: les heures avant midi ont un "0" en tète qui fait planter l'équation. Alternative qui semble marcher : ajout d’un filtre via sed (même manip à faire avec l’heure de fin) :

Code : Tout sélectionner

TIME_START=$TIME_START | sed 's/^0*//'
SECONDS_START=$(($(echo $TIME_START | cut -d':' -f1)*3600+$(echo $TIME_START | cut -d':' -f2)*60+$(echo $TIME_START | cut -d':' -f3)))
-EM
alacran
Messages : 80
Inscription : 12 sept. 2016, 10:05

Re: Backup carte SD complète sur nas avec envoi mail

Message par alacran »

Merci pour le boulot, je vais tester ça sur mon NAS Syno.
Il y avait une question dans les posts et je n'ai aps vu la réponse.

Comment ça se passe pour le restore?

Comment tu gère ensuite le nombre démesuré de version sur le NAS? (je n'y connait rien en script du coup, j'avoue ne pas avoir regardé si il y a une vérif du nombre de sauvegarde ou quoi...)

Merci
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

Re: Backup carte SD complète sur nas avec envoi mail

Message par garycooper »

Bonjour à tous et désolé pour le déterrage du post ... J'étais précédemment chez Free et j'avais appliqué le tuto de sauvegarde sur le disque dur de la Freebox (https://easydomoticz.com/forum/viewtopi ... &start=110). Il fonctionnait parfaitement mais depuis quelques semaines, j'ai changé de fournisseur (SFR) et j'ai constitué un NAS sur base de Raspberry Pi 4 avec 4 disques durs et OpenMediaVault (OMV) comme système de NAS. Je n'arrive pas à adapter le script pour ma configuration, qui est la suivante :

Disque dur physique nommé "Sauvegarde" dans le NAS
Dossier "Backup_Domoticz" dans le disque dur "Sauvegarde" destiné à recevoir les sauvegardes successives de domoticz
Utilisateur "Domoticz" déclaré au NAS avec droit de lecture et écriture dans le dossier "Backup_Domoticz". Pour le mot de passe, on retiendra "password".
J'ai bien sur remplacé "NAS-IP" dans le script par le numéro d'IP de mon NAS

Ca plante dès le montage du dossier ...
Couldn't chdir to /mnt/Backup_Domoticz/: No such file or directory
Je n'ai pas mis l'option de notification par mail (en tout cas, pas dans un premier temps).

Le script que j'essaie est le suivant :

Code : Tout sélectionner

#!/bin/sh
#############
#
# Script de sauvegarde de l'image complete du serveur Domoticz sur un serveur NAS Pi sous OPEN MEDIA VAULT
#
# G@rycooper - Septembre 2020
# Partage fichiers NAS Pi avec authentification
#
#############

#Arret de Domoticz
sudo systemctl stop domoticz.service

# Formatage de la date debut et de l'heure
H_DEPART=`date +%H:%M:%S`
DATE_DEBUT=`date +%d-%m-%Y`

# Montage du NAS
echo "Montage du NAS"
sudo /sbin/mount.cifs //NAS-IP/Sauvegarde/ /mnt/Backup_Domoticz/ -o user=Domoticz,pass=password

# Sauvegarde sur le NAS
echo "Sauvegarde sur le NAS Pi"
sudo dd if=/dev/mmcblk0 | gzip -9 > /mnt/Backup_Domoticz/Backup${DATE_DEBUT}'-'${H_DEPART}.img.gz

# Demontage du NAS
echo "Demontage du NAS Pi"
sudo /bin/umount /mnt/Backup_Domoticz

#Redemarrage Domoticz
sudo systemctl start domoticz.service
Quelqu'un peut-il m'aider à corriger le script SVP ?
Dernière modification par garycooper le 19 sept. 2020, 22:34, modifié 1 fois.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Backup carte SD complète sur nas avec envoi mail

Message par Keros »

Tu arrives à monter le dossier en "manuel" sans passer le script ?

Ce ne serait pas un filtrage des IP pouvant se connecter au partage qui bloquerait le montage ?
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

Re: Backup carte SD complète sur nas avec envoi mail

Message par garycooper »

Le disque dur est monté dans OMV et accessible en FTP sur mon PC ou téléphone. Je n'ai pas mis de filtrage d'IP dans OMV et j'ai créé un utilisateur spécifique avec un accès en lecture et écriture juste dans le dossier Domoticz_Backup. Je me rappelle que j'avais galéré avec le même message d'erreur sur la freebox mais je ne me rappelle plus comment je m'en étais sorti...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: Backup carte SD complète sur nas avec envoi mail

Message par Keros »

Je n'ai pas vérifié ta commande de montage mais je l'ai fait chez moi avec un partage réseau SMB (windows) et non FTP.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

Re: Backup carte SD complète sur nas avec envoi mail

Message par garycooper »

C'est bon, il a fallut préciser les droits en écriture sur le dossier dans OMV en passant par "ACL" dans "gestionnaire d'accès". J'avais déjà donné les droits d'écriture par ailleurs, mais apparement ce n'était pas suffisant.

Le stript final est le suivant :

Code : Tout sélectionner

#!/bin/sh
#############
#
# Script de sauvegarde de l'image complete du serveur Domoticz sur un serveur NAS Pi sous OPEN MEDIA VAULT
# 
# G@rycooper - Septembre 2020
# Partage fichiers NAS Pi avec authentification mais sans envoi de mail ou SMS
#
#############

#Arret de Domoticz
echo "Mise a l arret de Domoticz pour sauvegarde"
sudo systemctl stop domoticz.service

# Formatage de la date debut et de l'heure
H_DEPART=`date +%H:%M:%S`
DATE_DEBUT=`date +%d-%m-%Y`

# Montage du NAS
echo "Montage du NAS"
sudo /sbin/mount.cifs //IP-NAS/Backup_Domoticz/ /mnt/nas_backup/ -o user=User,pass=password

# Sauvegarde sur le NAS
echo "Sauvegarde sur le NAS Pi"
sudo dd if=/dev/mmcblk0 | gzip -9 > /mnt/nas_backup/Backup${DATE_DEBUT}'-'${H_DEPART}.img.gz

# Demontage du NAS
echo "Demontage du NAS Pi"
sudo /bin/umount /mnt/nas_backup

#Redemarrage Domoticz
ech "Redemarrage de Domoticz
sudo systemctl start domoticz.service
manuloup
Messages : 781
Inscription : 18 févr. 2015, 13:05

Re: Backup carte SD complète sur nas avec envoi mail

Message par manuloup »

Bonjour à tous,

J'avais écrit le 1er script de backup de la carte SD vers le partage de la freebox. Aujourd'hui je préfère faire de même mais sur le NAS, comme vous. De plus, mon Raspberry possède une carte SD pour booter, et un disque dur USB. Je fais donc le backup des 2 dans le même script. Après, libre à vous de commenter ce qui ne vous intéresse pas.
J'ai également ajouté une purge des fichiers de plus de 30 jours. J'ai désactivé l'arrêt et relance de domoticz, car de toute façon, au pire des cas si la db restaurée est KO, il suffit de récupérer le backup auto dispo dans le répertoire domoticz/backups/hourly et écraser le domoticz.db corrompue. Je préfère procéder comme cela plutôt que de me retrouver avec l'arrosage auto qui reste allumé toute la nuit, par exemple :)
Je préfère également compresser avec pigz, qui permet d'utiliser plusieurs processes en parallèle, et donc gain de temps.

Voici le script modifié à ma sauce, il suffit de remplacer les xxx par vos valeurs :

Code : Tout sélectionner

#!/bin/sh
#############
#
# Script de sauvegarde de l'image complete du serveur Domoticz sur un serveur NAS Pi sous OPEN MEDIA VAULT
#
# G@rycooper et Manuloup - Septembre 2020
# Partage fichiers NAS Pi avec authentification mais sans envoi de mail ou SMS
#
#############

#Arret de Domoticz
#echo "Mise a l arret de Domoticz pour sauvegarde"
#sudo systemctl stop domoticz.service

# Formatage de la date debut et de l'heure
DATE_DEBUT=`date +%d-%m-%Y_%H:%M:%S`
DATE_DEBUT_LOG=`date +%d-%m-%Y-%H_%M_%S`
start=`date +%s`
echo "Début du traitement : $DATE_DEBUT"

# Montage du NAS
echo "Montage du NAS"
nas_mount=$(mount | grep nas_backup | wc -l)
if  [ $nas_mount = 0 ] ;
then
   sudo /sbin/mount.cifs //192.168.x.x/volume1/Domoticz/ /mnt/nas_backup/ -o user=xxx,pass=xxx
else
   echo "nas_backup déjà monté"
fi
backup_logfile=//mnt/nas_backup/Backup_logfile_${DATE_DEBUT_LOG}.log
echo "Début du traitement : $DATE_DEBUT" > $backup_logfile

# Sauvegarde sur le NAS
echo "$(date) : Sauvegarde sur le NAS de la carte SD Pi" >> $backup_logfile
echo "$(date) : Sauvegarde sur le NAS de la carte SD Pi"
sudo dd if=/dev/mmcblk0 |  pigz -9 -p 3 > /mnt/nas_backup/Backup_SD_${DATE_DEBUT}.img.gz
echo "$(date) : Sauvegarde sur le NAS du disque dur USB Pi" >> $backup_logfile
echo "$(date) : Sauvegarde sur le NAS du disque dur USB Pi"
sudo dd if=/dev/sda |  pigz -9 -p 3 > /mnt/nas_backup/Backup_USB_${DATE_DEBUT}.img.gz

#Redemarrage Domoticz
#echo "Redemarrage de Domoticz" >> $backup_logfile
#sudo systemctl start domoticz.service

#Purge des anciens backups et logfiles de plus de 30 jours
find /mnt/nas_backup -name "*.gz" -mtime +30 -exec rm -rf {} \;
find /mnt/nas_backup -name "*.log" -mtime +30 -exec rm -rf {} \;

# Calcul de la duree d'execution

DATE_FIN=`date +%d-%m-%Y\ +%H:%M:%S`
echo "Fin du traitement : $DATE_FIN"
echo "Fin du traitement : $DATE_FIN" >>  $backup_logfile
end=`date +%s`

# Remise en Heure - Minute - Seconde
runtime=$((end-start))
hours=$((runtime / 3600)); minutes=$(( (runtime % 3600) / 60 )); seconds=$(( (runtime % 3600) % 60 ));

#Message avec heure de fin et la duree
message="$date :  Fin de la sauvegarde image du serveur domoticz. Durée du traitement :  $hours:$minutes:$seconds (hh:mm:ss)"
echo $message
echo $message >> $backup_logfile

# Demontage du NAS
echo "Demontage du NAS Pi" >> $backup_logfile
sudo /bin/umount -l /mnt/nas_backup

Synology DS920+ avec VM Debian 12, Aeon Labs Z-Stick Gen5, Aeon Zwave et devices zwaves , Teleinfo USB, devices Zigbee, batterie Marstek Venus E, Shelly Pro 3EM...
garycooper
Messages : 453
Inscription : 07 août 2017, 23:58

Re: Backup carte SD complète sur nas avec envoi mail

Message par garycooper »

C'est bizarre, le backup commence puis plante au bout de 2-3 minutes (envrion 120 Mb de sauvegarde). Ca me déconnecte même la session putty.
Je lance le backup de la façon suivante
sudo sh +x backup.sh
Le script se déroule jusque là
Debut du traitement : 03-10-2020_11:11:09
Montage du NAS
samedi 3 octobre 2020, 11:11:10 (UTC+0200) : Sauvegarde sur le NAS de la carte SD Pi
puis ça finit par planter avant d'avoir sauvegardé. je ne sais pas si le problème vient d emon script ou d'un paramètre sur le NAS ...
Répondre