Suppression automatique des sauvegardes Home Assistant

Je réalise quotidiennement des sauvegardes depuis l'interface Home Assistant. Cependant je trouve que les options proposées de base sont assez rudimentaires. Par exemple j'ai plusieurs fois saturé mon disque dur de backups car on ne peut pas définir de politique de suppression automatique des anciennes sauvegardes. Après quelques recherches j'ai trouvé une solution qui consiste à scripter une purge des backups qu'on applique en automatisant une connexion ssh en local sur le serveur lui-même. Voici la méthode que j'ai trouvée et qui fonctionne parfaitement.

Étapes pour supprimer automatiquement les anciennes sauvegardes dans Home Assistant

  • Étape 1 : Générer des clés SSH

Pour configurer l'authentification par clé SSH, il est nécessaire de générer une paire de clés (clé privée et publique). Pour cela, ouvrez le terminal sur votre home assistant et exécutez la commande suivante.

ssh-keygen `-t rsa`

Lorsque l'emplacement du fichier vous sera demandé, choisissez un répertoire où vous pouvez stocker vos clés SSH. Perso j'ai mis cela :

/config/shell_command_id_rsa
  • Étape 2 : Configurer l'authentification par clé SSH

Ajoutez la clé publique aux clés autorisées à ce connecter sur la machine

cat /config/shell_command_id_rsa.pub >> /root/.ssh/authorized_keys

On teste la connexion SSH

cd /config
ssh -i shell_command_id_rsa root@localhost

Cela devrait ouvrir une nouvelle session SSH si c'est bon tapez exit pour fermer la session.

  • Étape 3 : Créer un répertoire pour les scripts Shell

Nous allons maintenant créer le répertoire qui contiendra notre script shell. Je vous recommande de choisir un emplacement logique et facile à trouver. Personnellement je l'ai mis dans le répertoire /homeassistant qui permet en plus de retrouver le script depuis l'interface Web d'Home Assistant facilement.

`mkdir homeassistant/scripts-gbd
  • Étape 4 : Créer le script de suppression des sauvegardes

Créez votre script shell dans le répertoire précédemment créé avec votre editeur de texte.

nano /homeassistant/scripts-gbd/Auto-delete-backup-2Month.sh 

Et ajoutez le contenu suivant au script. J'ai choisi de supprimer les fichiers ayant plus de 60 jours mais vous pouvez bien sur adapter à vos besoins en modifiant le chiffre après le +:

!/bin/bash

# Remove old backup files
# -mtime +60 corresponds to files older than 60 days
find /backup -name '*.tar' -mtime +60 -exec rm -f {} \;

Rendez le script exécutable sinon il ne fonctionnera pas :

chmod +x /homeassistant/scripts-gbd/Auto-delete-backup-2Month.sh
  • Étape 5 : Modifier la configuration de Home Assistant

Modifiez le fichier configuration.yaml pour ajouter une commande shell qui exécute votre script via SSH. Cela permettra de le rendre disponible dans vos automatisations

#Purge de backup de plus de 60 jours
shell_command:
  delete_old_backups: 'ssh -i /config/shell_command_id_rsa -o StrictHostKeyChecking=no root@localhost bash /homeassistant/scripts-gbd/Auto-delete-backup-2Month.sh'
  • Étape 6 : Créer une automatisation pour exécuter le script

J'ai réalisé l'automatisation via l'interface web de home Assistant comme ceci

Ce qui donne ceci dans le fichier /homeassistant/automations.yaml

- id: '1723201364479'
  alias: '[HA] Delete Old Backups'
  description: 'Deletes backups older than 7 days every day at 3:30 AM'
  trigger:
  - platform: time
    at: 03:30:00
  condition: []
  action:
  - action: shell_command.delete_old_backups
  mode: single
  • Étape 7 : Redémarrer Home Assistant

Pour finir redémarrez Home Assistant pour appliquer les changements avec cette commande:

ha core restart

Résumé

Voilà, vous avez configuré un système automatisé pour supprimer les sauvegardes de plus de 60 jours en utilisant un script shell personnalisé et des automatisations dans Home Assistant.

Source

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *