Solutions de sauvegarde / Backup Raspberri Pi

Ayant enfin reçu mon Raspberry Pi 4 + SSD :rocket: , j’ai refait une installation complète de Gladys et je commence à installer d’autres services sur mon Raspberry.

Je sais que la base de données Gladys est sauvegardée dans Gladys Plus :muscle:, mais je me pose la question des autres données / services.

Comment gérez-vous les sauvegardes ?

  • copie du disque une fois de temps en temps ?
  • script de copie à la main (rsync) vers une autre machine (dans le cloud par exemple)
  • utilisation d’un outil de sauvegarde (syncthings, rpibackup, …)
1 « J'aime »

Qu’est-ce qui exactement n’est pas gardé actuellement dans Gladys Plus ?

Il manque les fichiers du Zigbee2mqtt / MQTT en gros ?

Je me demande si il faudrait pas dans ces services être capable de retomber sur ces pattes lors d’une restauration d’un backup DB (re-créer les containers / les fichiers)

Parce qu’en soit il n’y a rien dans ces fichiers qui ne sont pas dans la DB non?

Sinon, moi sur mes serveurs j’utilise rclone: https://rclone.org/ pour tout ce qui est backup de fichier vers le cloud. Tu peux brancher ça vers n’importe quoi (Google Drive, Amazon S3, Backblaze, Dropbox, etc…)

Les fichiers ZigbeeMqtt uniquement. Les containers MQTT seront recréés avec les mêmes paramètres.

Pour Z2M, il y a deux choses à sauvegarder :

  • le fichier configuration.yaml. Mais je pense qu’on peut le recréer à l’identique depuis une sauvegarde de base de données.
  • le fichier database.db qui contient tous les devices du réseau.
    Source : FAQ | Zigbee2MQTT

Je crée une issue pour suivre ça : The Zigbee2mqtt service should be able to be restored from a backup · Issue #1378 · GladysAssistant/Gladys · GitHub

Ma question était aussi plus générale (sauvegarder des fichiers en dehors de Gladys). Je vais tester RClone, merci :pray:

Hello, de mon côté j’utilise un script assez basique qui fait du SCP des fichiers de gladys compressé vers un serveur. J’ai en plus intégré un ping vers le service Healthchecks qui me permet d’être alerté par un serveur Gotify en cas d’échec.

Ok! Du coup dans l’intégration Zigbee2mqtt il faudrait idéalement une sorte de « routine de démarrage » qui vérifie que le container est bien lancé, etc… et si il y a pas ce fameux fichier configuration.yaml, le re-créé depuis la DB on est d’accord?

Je pense pas nécessairement que ce soit lié à Gladys Plus la todo du coup, si on développe ça côté Zigbee2mqtt ça permettra à quelqu’un qui fait ses sauvegardes soit même de relancer une instance à partir de sa DB :slight_smile:

Bonjour,
Je rebondis sur ce message de @Albenss, parce que je voudrais mettre en place une sauvegarde de cette façon-là moi aussi. Comme je n’utilise pas GladysPlus, quels sont les dossiers/fichiers que je dois sauvegarder pour pouvoir les restaurer si mon Raspberry crashe et que je dois repartir d’une image Gladys Raspbian toute neuve ?

Merci d’avance pour la réponse!

Le dossier /var/lib/gladysassistant contient tout :slight_smile:

Après attention lors d’un backup “à chaud”, Gladys écrit dans une base de donnée SQLite en WAL mode, et donc il y a 3 fichiers de DB. Si tu fais un backup qui prend les 3 fichiers en séquentiel, tu auras une DB corrompue

Le mieux est d’utiliser le CLI de SQlite3 pour dupliquer la DB dans un unique fichier avant de la sauvegarder

Merci pour ces précisions.
J’imagine que je peux aussi faire un “docker container stop gladys” avant de sauvegarder le dossier en question, puis de relancer avec un “docker container start gladys” ?

Du coup ça vaudrai peut-être le coup de mettre à dispo le cli sqlite et rclone sur l’image gladys ?

Tout à fait @StephaneB :slight_smile:

docker stop gladys
docker start gladys

marche aussi

le CLI sqlite3 est déjà présent dans l’image Docker Gladys (pour les backups Gladys Plus). Il peut-être réutilisé au besoin.

Rclone par contre à mon avis c’est clairement à l’utilisateur de le mettre en place si il le souhaite, c’est un tool très dev à configurer, si l’utilisateur veut l’installer il peut mais je pense pas que ce soit à nous de l’inclure (ni dans l’image Raspberry Pi OS, et encore moins dans l’image Docker), on reste minimaliste sur les dépendances :slight_smile:

1 « J'aime »

Merci @pierre-gilles pour la confirmation

Si ça peut donner des idées, de mon côté je fais des snapshots du système de fichier (btrfs), que je sauvegarde de manière chiffrée via Restic sur différents médias (cloud/NAS/disque externe, selon la data).
Les snapshots me permettent de sauvegarder les DB sans interruption de service et sans trop de risque de perte de données. Attention néanmoins, c’est une technique un peu avancée qui nécessite de jouer avec les volumes/partitions/système de fichier, le risque de perte de données est bien réel.

Par ailleurs, je vois que vous évoquez Syncthings. C’est un super logiciel, mais il ne fait que de la réplication de données, pas de la sauvegarde ! Ça peut paraître proche, mais ce sont bien deux choses complètement différentes. Si un fichier vient à être corrompu sur un support, cette corruption risque fortement de se propager aux autres stockages synchronisés. Idem pour la suppression d’un fichier.
À proscrire, donc, pour de la sauvegarde.