Outils pour utilisateurs

Outils du site


borgbackup

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
borgbackup [2025/07/05 18:30] lucborgbackup [2025/07/05 20:31] (Version actuelle) luc
Ligne 9: Ligne 9:
 ===== Gérer un repo borg ===== ===== Gérer un repo borg =====
  
 +=== Création/initialisation d'un repo ===
 ça commence par la création du __repository__ : ça commence par la création du __repository__ :
  
 <code bash> <code bash>
 +borg init --encryption=repokey /path/to/repo
 +</code>
 +NOTES :
 +  * Un __repository__ nécessite une méthode de chiffrement, l'argument ''--encryption'' est indispensable. Cela peut être un mdp ''repokey'', un fichier de chiffrement ''keyfile'', ou rien ''none''
 +  * L'option ''--append-only'' permet les prunes et delete, mais pas le compact (les données ne sont pas donc pas supprimées)
  
 +Pour plus de facilité, notamment dans un script automatisé, on peut définir des variables d'environnement pour définir l'accès au __repository__ :
 +<code bash>
 +BORG_REPO=/path/to/repo/
 +BORG_PASSPHRASE='aAbBcCdDeE1234'  # avec ou sans ' '
 </code> </code>
 +
 +=== Créer une archive ===
 +
 +Maintenant que le __repository__ existe, on peut ajouter des données dedans. Lors d'un ajout, toutes les données sont contenues dans une __archive__, il est commun de donner la date dans le nom
 +<code bash>
 +borg create /path/to/repo::Monday ~/src ~/Documents
 +# ici l'archive s'appelle Monday
 +</code>
 +Note : si le repo n'est pas initialisé, on aura une erreur. Pratique si on a un mount qui peut ne pas marcher : aucun risque de mettre des données n'importe où
 +
 +
 +=== Consulter le repo / une archive ===
 +
 +2 outils existent : ''info'' et ''list''
 +
 +<code bash>
 +## --- info ---
 +# sur un repo : donne la taille du repo (dedupliquée = sur le disque, originelle si extrait)
 +borg info /path/to/repo/
 +
 +# sur une archive : donne la taille de l'archive et du repo (dedupliquée = sur le disque, originelle si extrait)
 +borg info /path/to/repo::archive-name
 +
 +
 +## --- list ---
 +# sur un repo : donne la liste des archives qui compose le repo, avec la date de création des archives
 +borg list /path/to/repo/
 +
 +# sur une archive : donne la liste des fichiers et dossiers contenus dans l'archive
 +borg list /path/to/repo::archive-name
 +</code>
 +Note: le path des fichiers et dossier est conservé, hein ;)
 +
 +
 +=== Extraire des données ===
 +
 +<code bash>
 +# extraire les données d'une archiveavec des chemins relatifs au dossier actuel 
 +cd /current/folder/
 +borg extract /path/to/repo::archive-name
 +
 +# extraire seulement quelques fichiers
 +# ?
 +</code>
 +
 +=== Supprimer une archive ===
 +
 +<code bash>
 +## --- delete ---
 +# Supprimer l'archive, mais ne libère pas l'espace disque
 +borg delete /path/to/repo::archive-name
 +
 +
 +## --- compact ---
 +# recupérer de l'espace disque en compactant les segments de fichiers (notamment des archives supprimées)
 +borg compact /path/to/repo
 +</code>
 +
 +Note : on peut aussi ''prune'' le repo, pour une suppression automatique d'archives selon des critères définis #stratégieDeSauvegarde
 +<code bash>
 +## --- prune ---
 +borg prune --glob-archives 'pattern-*' --keep-daily 7 --keep-weekly 4 --keep-monthly 3 /path/to/repo/
 +# --glob-archives : permet de restreindre la purge aux archives qui match le pattern
 +</code>
 +
 +===== Exemple de script automatisé =====
 +
 +L'idée est d'automatiser le processus de backup, par exemple avec un script déclenché par un crontab
 +
 +<code bash>
 +### backup_auto.sh
 +
 +#!/bin/sh
 +# Ce script a pour vocation la sauvegarde d'un dossier en particulier dans un dossier SMB mount.
 +# Le préfix "auto" sera mis en place, et ces backups seront concernés par les prunes / purges
 +
 +# Variable d'environnement pour accéder au repo
 +export BORG_REPO=/path/to/repo/
 +export BORG_PASSPHRASE=aAbBcCdDeE1234
 +
 +# nom de la sauvegarde : manual + date du jour
 +NAME="auto_$(date +%Y-%m-%d%.H-%M)"
 +
 +# Create the backup
 +echo "starting backup"
 +borg create --list --stats --progress ::$NAME /folder/to/backup/*
 +backup_exit=$?
 +echo "borg exit = $backup_exit"
 +
 +# prune 
 +echo "Pruning repository"
 +borg prune --list --glob-archives "auto_*" --show-rc --keep-daily 7 --keep-weekly 3 --keep-monthly 2
 +# --show-rc : afficher le code de retour en dernier dans les logs
 +# --glob-archives n'appliquer prune qu'aux archives qui match le pattern
 +prune_exit=$?
 +
 +# compacting repository
 +echo "compacting repository"
 +borg compact
 +compact_exit=$?
 +
 +# use highest exit code as global exit code
 +global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit ))
 +global_exit=$(( compact_exit > global_exit ? compact_exit : global_exit ))
 +echo "global exit = ${global_exit}"
 +
 +exit ${global_exit}
 +</code>
 +
 +Il conviendrait de récupérer les info (echo) et les mettre dans un système de log, et de faire du reporting. Pour une prochaine fois !
borgbackup.1751740229.txt.gz · Dernière modification : de luc