Sauvegarde et Backup via NAS

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Sauvegarde et Backup via NAS

Message par pierrotori »

Bonjour,
Suite à la dernière migration de domoticz en 2021 et la migration de tous mes scripts de lua en dzvents, ma domotique commence à avoir des scénarios qui correspondent à mon quotidien. Après tous ces efforts j’avais envie sécuriser mes sauvegardes en automatisant sur mon NAS DS213J les sauvegardes.
mon RPI2 est uniquement en éthernet et sur buster lite
Le nas etant sécurisé au niveau de ces disques et d'une sauvegarde externe. Je suis parti du principe de schéduler les sauvegardes à partir de celui-ci ce qui pourra être réutilisé pour les caméras

Si j'ai compris Différent Type de sauvegarde pour différent cas
1) la base
je fais donc une Sauvegarde Base de donnée par soir avec conservation des 10 derniers jours(revenir en arrière si crash après des tests ou autre action)

Code : Tout sélectionner

curl -s http://XXX.XXX.X.X:8080/backupdatabase.php > /dev/null
sudo mv /tmp/backup.db /home/pi/exploit/backup_db/$file
find /home/pi/exploit/backup_db/backup* -type f -mtime +10 -exec /bin/rm -f {} \;
je n'utilise pas la Sauvegarde Base de donnée: faite par domoticz car l'activation fait une sauvegarde par heure , jour, mois (pas terrible si on a une carte SD)

2) domoticz
Sauvegarde du soft Domoticz (problématique de montée de version)

Code : Tout sélectionner

sudo /bin/tar -zcvf domoticz_backup.tar.gz /home/pi/domoticz/
3) image ou snapshot
reste l'image de la carte en cas de crash de carte ou de suppression d'un répertoire système et oui ca arrive

Code : Tout sélectionner

dd bs=1M if=/dev/mmcblk0 conv=notrunc,noerror > backup_pi_sda_1M.img
vous avez compris certaines commande sont faites en local sur le rpi2 du domoticz, le but serait que le nas execute ces commandes. j'ai donc généré une clé afin de lancer les commandes en remote du NAS sans rentrer le mot de passe via ces commandes sur le NAS

Code : Tout sélectionner

ssh-keygen -t rsa -f /etc/ssh/domoticz -C "clef de ds213j vers domoticz"
on transfert la clé publique sur domoticz

Code : Tout sélectionner

scp /etc/ssh/domoticz.pub root@192.168.0.X_DOMOTICZ:/root/.ssh/authorized_keys
ensuite on peut utiliser les commandes sur le NAS en remote ssh -i /etc/ssh/domoticz


Pour les différents cas voici les commandes utilisées
1) on rapatrie la DB à partir du NAS qui sont générées une fois par jour en local sur domoticz

Code : Tout sélectionner

 rsync -e "ssh -i /etc/ssh/domoticz" -ai root@192.168.0.X_DOMOTICZ:/home/pi/exploit/backup_db /volume1/backupRPI
2) pareil on rapatrie une fois par jour le fichier zippé contenant le répertoire domoticz

Code : Tout sélectionner

rsync -e "ssh -i /etc/ssh/domoticz" -ai root@192.168.0.X_DOMOTICZ:/home/pi/domoticz_backup.tar.gz /volume1/backupRPI
3) c'est la seule commande qui fait tout :D mais la plus longue en temps

Code : Tout sélectionner

ssh -i /etc/ssh/domoticz root@192.168.0.X_DOMOTICZ dd bs=1M if=/dev/mmcblk0 conv=notrunc,noerror > backup_pi_sda_1M.img
Evidemment au moment ou j'écris il faudra que je recette chaque cas de sauvegarde. voici le résultat des commandes passées en manuel, reste à les scheduler dans le planificateur du NAS
nas213J.PNG
nas213J.PNG (7.7 Kio) Consulté 2027 fois
Pour la restauration
1) on restaure la DB via l'interface de domoticz
2) il faudra transférer le fichier gz dans le répertoire pi et lancer le script UPDATE option restauration
voir ici viewtopic.php?f=17&t=7179
3) installation de win32diskImager et flasher l'image sur la nouvelle carte

Conclusion : Pour le cas 1 et 2 on gère et on génère les sauvegardes du soft domoticz en local en schedulant via le cron du rpi afin que le NAS récupère via rsync
Il y a le cas 3 qui sera exécuté 1 fois par mois ou a la demande et qui dure 50 min

J'espère avoir balayé les différentes problématiques de sauvegardes en fonction des situations et on peut s'en sortir avec 2 commandes rsync et dd
Je suis preneur d'autres solutions
Bonne soirée
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Re: Sauvegarde et Backup via NAS

Message par pierrotori »

je continue mon monologue, je suis en train de valider l'étape 3 et donc de réduire la taille de l'image
boot_blocks=$(df --block-size=1M | grep 'mmcblk0p1' | awk '{print $2}') -> 253
root_blocks=$(df --block-size=1M | grep '/dev/root' | awk '{print $3}') -> 2483
file_size=$(($boot_blocks+$root_blocks+420)) = 3156

Code : Tout sélectionner

ssh -i /etc/ssh/domoticz agentBCK@XXX.XXX.X.X dd if=/dev/mmcblk0 bs=1M count=3156 iflag=fullblock > backup_pi_sda.img
Après avoir passé la commande j'obtiens une image de 3,2 Go en 37 min, la c'est mieux

pour l'étape de restauration je plug la carte SD sur le nas et lance la commande

Code : Tout sélectionner

dd if=/volume1/bck_server/backup_pi_sda.img of=/dev/sdr bs=1M status=progress
par contre c'est long 883569152 bytes (884 MB) copied, 4106.89 s, 215 kB/s --> 1H15
pret à faire un switch :D
neo
Messages : 89
Inscription : 15 janv. 2020, 15:57

Re: Sauvegarde et Backup via NAS

Message par neo »

Hello,
Voici comment je fais mes backups, sachant que je suis sur RaspberryPi et Docker.
Chaque conteneur enregistre ses données dans son répertoire dédié sous home/pi.
J'ai simplement créé un fichier backup.sh que je lance moi-même régulièrement (il y a moyen d'automatiser avec crontab).
Ce fichier placé sur le pi dans home/pi connecte un partage SMB de mon NAS et compresse/transfère (nom du backup avec date correspondante) tout ce qui se trouve sous home/pi.
Il prend bien soin d'arrêter avant mes conteneurs pour éviter toute corruption de donnée.
Si j'ai un gros crash je n'ai qu'à réinstaller proprement raspbian lite avec docker et mes conteneurs de base, et restaurer ma sauvegarde (transfert via Winscp par exemple).

Code : Tout sélectionner

#!/bin/bash
echo Docker containers stopping
echo --------------------------
docker stop ddaf6649ab71 1882441ab13d 40ceddbe2a56 d7116abc638e

echo Network share mount
echo -------------------
mkdir /mnt/backup && mount -t cifs -o username=utilisateur,password=motdepasse //192.168.0.12/Download/backup-domotique /mnt/backup

echo Backup processing
echo -----------------
TIME=`date +%Y-%m-%d`                      # This Command will read the date.
FILENAME=backup_$TIME.tar.gz               # The filename including the date.
SRCDIR=/home/pi                            # Source backup folder.
DESDIR=/mnt/backup                         # Destination of backup file.
tar -P -cpzf $DESDIR/$FILENAME $SRCDIR

echo Network share unmount
echo ---------------------
cd /mnt && umount backup && rm -fr backup

echo Docker containers starting
echo --------------------------
docker start d7116abc638e 40ceddbe2a56 1882441ab13d ddaf6649ab71
Raspberry Pi 2 - Docker: Domoticz, NodeRed, Mosquitto, Homebridge - RFLink USB 433mhz, sondes Oregon, pluviomètre - Prises électriques et autres cartes à base d'ESP8266/ESP32 sous ESPEasy et Tasmota
Mes designs 3D sur Thingiverse
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: Sauvegarde et Backup via NAS

Message par Chrominator »

On avait ça en magasin sur le forum.
Ça fonctionne très bien, j'ai restauré plusieurs fois le système avec succès (contrairement à mon premier essai).
Il reprend grosso-modo les principes de pierrotori.
Je l'ai juste modifié pour utiliser lbzip2 à la place de gzip, compresser la sauvegarde en utilisant tous les noyaux du CPU et gagner du temps.
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Re: Sauvegarde et Backup via NAS

Message par pierrotori »

pour cette command
ssh -i /etc/ssh/domoticz root@192.168.0.x_domoticz dd if=/dev/mmcblk0 bs=1M | gzip -c - > backup_pi_sda.gz
on est bien d'accord que la command dd et gzip s'execute localement sur le rpi domoticz?
Répondre