Script de sauvegarde manuelle Borg pour Yunohost

Dans cet article, je te présente un script de sauvegarde manuelle Borg pour Yunohost. Sur un de mes serveurs, l’instance de Borg Backup crashe constamment lors de la sauvegarde automatisée, pour une raison que je n’ai pas réussi à diagnostiquer.

J’ai donc écris un script bash qui me permet de faire la sauvegarde de toutes mes applications manuellement. Il remplace le script configuré par défaut lors de l’installation de Borg. Je tenais à le partager ici pour la communauté.

Le script

Ce script effectue une boucle sur la liste de toutes les applications installées avec /usr/bin/yunohost app list --json. Pour chacune, j’utilise l’outil de manipulation de fichiers json jq pour extraire seulement le nom interne des applications. Ce qui me donne une liste de noms.

Représentation graphique du flux de traitement du script de sauvegarde manuelle Borg sur Yunohost

Dans la boucle, je vais le traitement suivant:

  • Je crée d’abord la sauvegarde avec yunohost en utilisant yunohost backup create et la méthode borg_app. Le fait que ça fonctionne me confirme que mon installation de Borg est correcte !
  • J’envoie ensuite un appel POST à un webhook mon serveur n8n. Ceci démarre un script qui se charge de m’envoyer un courriel pour me dire que la sauvegarde pour une application donnée a été complétée. Comme ça mon serveur ne communique pas directement par SMTP et je n’ai pas les enjeux de délivrabilité.
#!/bin/bash
# Sauvegarde Borg Manuelle
# /root/borg_manual_backup.sh

export n8n_url="https://adresse.de.n8n.sur.mon.serveur"
export n8n_webhook_path="une clé secrète ici"

for app in $(/usr/bin/yunohost app list --json | jq '.apps | .[] | .id' | tr -d '"')
do
  echo "=== Sauvegarde de $app démarrée ==="
  /usr/bin/yunohost backup create -n "auto_$app" --method borg_app --apps "$app" &> /var/log/backup_log.txt
  echo "=== Sauvegarde de $app terminée ==="
  /usr/bin/curl -XPOST "https://${n8n_url}/webhook/${n8n_webhook_path}/borg-backupnc-complet/${app}"
done
  • C’est tout ! Un peu rudimentaire, mais ça marche !

Ce script est ensuite exécuté par l’utilitaire de tâches planifiées cron à chaque jour avec cette entrée:

0 0 * * * /bin/bash /root/borg_manual_backup.sh

Pour éditer le fichier de configuration de cron, j’utilise crontab -e en tant que root.

Bien que le système par défaut pour mettre des tâches en automatisation sur Yunohost soit les timers de systemd, cron est toujours disponible.

J’espère que cette technique de sauvegarde manuelle Borg pour Yunohost te sera utile !

DéconstruIT ⛏️🧱

Mastermind techno rebelle

Un accompagnement de six mois pour enfin réaliser tes projets technos tout en développant ton autonomie.

Libérons ensemble ton entreprise, ta clientèle et toi de l’oppression numérique.

Travaillons de manière durable et alignée sur tes valeurs dans un environnement sécuritaire, intime et engagé.

Tout en ayant bien du fun !

Articles connexes