borg init --encryption=none /backup/borg
borg init --encryption=repokey /backup/borg
borg create --list /backup/borg::'monApplication-{now}' /chemin/de/mon/application
borg list /backup/borg
Ne pas oublier de se placer dans /
avant.
cd /
sudo borg extract --list /backup/borg::monApplication-2024-03-31T12:41:44
On peut faire un dry run : simule la suppression sans la réaliser.
borg delete --dry-run /backup/borg::monApplication-2024-03-31T12:41:44
borg delete /backup/borg::monApplication-2024-03-31T12:41:44
borg compact /backup/borg
S'ils sont en bonne santé et pas corrompu avec le checksum
borg --progress check /backup/borg
borg delete /backup/borg
Pour envoyer les notifications sur discord, il faut d'abord créer le webhook.
Sur Discord, clique droit sur le salon ou vous voulez les notifications => Modifier le salon
=> Ìntégrations
=> Webhooks
=> Nouveau webhook
.
Mettez un nom et cliquez sur Copier l'URL du webhook
: vous avez votre webhook.
Création du script de backup automatique backup.sh
#!/bin/bash
# Fonction pour envoyer un message à Discord
envoyer_message_discord() {
local message="$1"
local webhook_url="https://discord.com/api/webhooks/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
curl -s -H "Content-Type: application/json" -X POST \
-d "{\"content\": \"${message}\"}" "$webhook_url" > /dev/null
}
# Liste des répertoires à sauvegarder
dossiers=(
"/docker/docker1"
"/docker/docker2"
"/docker/docker3"
)
# Répertoire de destination pour les sauvegardes Borg
backup_dir="/backup/borg"
# Fichier contenant les exclusions
exclude_file="$HOME/scripts/exclude.txt"
# Nom de larchive, utilisation de {now} pour une sauvegarde avec la date et l'heure
archive_name="backup-{now}"
# Boucle à travers tous les dossiers pour effectuer la sauvegarde
for dossier in "${dossiers[@]}"; do
nom_dossier=$(basename "$dossier")
echo "Lancement de la sauvegarde pour $dossier"
if borg create --list --filter=EM --exclude-from "$exclude_file" \
"$backup_dir::${nom_dossier}-${archive_name}" "$dossier"; then
echo "Sauvegarde de $dossier réussie."
envoyer_message_discord "✅ Sauvegarde réussie : $nom_dossier"
else
echo "Erreur lors de la sauvegarde de $dossier."
envoyer_message_discord "❌ Erreur lors de la sauvegarde : $nom_dossier"
fi
done
if borg compact "$backup_dir"; then
envoyer_message_discord "✅ Compact terminé avec succès."
else
envoyer_message_discord "❌ Erreur lors du compact."
fi
# 4. Vérification de l'intégrité
if borg check "$backup_dir"; then
envoyer_message_discord "✅ Vérification du dépôt réussie."
else
envoyer_message_discord "❌ Erreur lors de la vérification du dépôt."
fi
Rendez le script executable
sudo chmod +x backup.sh
Ensuite créez un nouveau fichier exclude.txt
qui contiendra toutes vos exclusions, exemple :
/docker/docker1/querylog.json
/docker/docker2/log.txt*
/docker/docker3/ssh
backup_dir
, c'est le dépot de borg qu'on a créé précédemmentexclude_file
Une fois tout configuré, il suffit juste d'appeler le script avec crontab, à l'instant T désiré :
0 5 * * 1 /home/rico/scripts/borg/backup.sh
Ici le script se délenchera tous les lundi à 05:00, et les notifications Discord ressembleront à ça :