🏳️🌈♿️👩🎨🌱 En février, je remets 3% de mes ventes à des organismes qui favorisent la diversité, les arts et l'environnement 🏳️🌈♿️👩🎨🌱
Manuel d'alchimie du code
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.
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éthodeborg_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 !