====== BorgBackup ======
* https://borgbackup.readthedocs.io/en/stable/index.html
* [[https://connect.ed-diamond.com/Linux-Pratique/LP-098/Ne-procrastinez-plus-vos-sauvegardes-grace-a-Borg3|Ne procrastinez plus vos sauvegardes grâce à Borg]]
* https://torsion.org/borgmatic/
* [[https://fljd.in/2025/10/08/sauvegardes-personnelles-avec-restic/|Sauvegardes personnelles avec Restic]]
==== Installation ====
Avec pip :
sudo apt install libssl-dev libacl1-dev python3-pip python3-venv python3-pkgconfig
pip install pkgconfig wheel
pip install borgbackup
Il est aussi possible d'utiliser le [[https://borgbackup.readthedocs.io/en/stable/installation.html?__do_not_save__#standalone-binary|binaire fourni directement par BorgBackup]] :
wget https://github.com/borgbackup/borg/releases/download/1.1.17/borg-linux64
mv borg-linux64 /usr/local/bin/borg
chown root:root /usr/local/bin/borg
chmod 755 /usr/local/bin/borg
==== Utilisation ====
On commence par initialiser un //dépôt// qui va stocker les sauvegardes. Chaque sauvegarde dans le dépôt est appelée une //archive//.
=== Initialisation ===
borg init --encryption=none /media/BigData/linux/tmp/zds/borg-repo
''%%--%%encryption=none'' ne chiffre pas les sauvegardes. ''%%--%%encryption=repokey'' chiffre les sauvegardes à l'aide d'une clé protégée par une phrase de passe. La clé est sauvegardée au sein du dépôt, mais il est tout de même conseillé de l'exporter et la sauvegarder quelque part ailleurs dans un lieu sûr.
Il est possible d'utiliser l'option ''%%--%%umask 022'' pour indiquer avec quel umask créer le dépôt.
Pour faire la sauvegarde sur un serveur SSH, il faut utiliser la syntaxe suivante : ''hôte_ssh:/chemin/vers/le/dépôt''.
=== Sauvegardes ===
borg create /chemin/du/dépôt::identifiant_archive /dossier/à/sauvegarder
Les options suivantes sont disponibles :
* ''%%--%%info'' pour afficher les informations sur l'archive (notamment sa taille)
* ''%%--%%compression zstd,6'' pour utiliser la compression zstd à un niveau de compression 6
Si les sauvegardes sont chiffrées, il est possible d'indiquer comment récupérer la phrase de passe :
export BORG_PASSCOMMAND='cat fichier_avec_la_phrase_de_passe'
=== Afficher la dernière archive ===
borg list --last 1 /chemin/vers/le/dépôt
Pour l'utiliser dans une autre commande :
borg extract --verbose --progress /chemin/vers/le/dépôt::$(borg list --last 1 --format '{archive}{NL}' /chemin/vers/le/dépôt)
=== Supprimer les vieilles sauvegardes ===
Pour supprimer les sauvegardes plus vieilles que 60 jours :
borg prune --keep-within 60d --list /chemin/vers/le/dépôt/
==== Héberger les dépôts sur un serveur SSH ====
* https://borgbackup.readthedocs.io/en/stable/deployment/hosting-repositories.html
Il est possible de limiter à Borg l'utilisation de la clé SSH que Borg utilise pour se connecter au serveur qui héberge le dépôt, en préfixant l'entrée dans le fichier ''~/.ssh/authorized_keys'' :
restrict,from="ip.du.client.borg",command="borg serve --append-only --restrict-to-repository /chemin/du/depot/borg --storage-quota 200G"
==== Quotas ====
=== Changer la valeur ===
Penser à changer la valeur du paramètre ''%%--%%storage-quota'' dans le fichier ''.ssh/authorized_keys''.
Pour changer la valeur dans la configuration du dépôt :
borg config --list /chemin/local/du/depot
borg config /chemin/local/du/depot storage_quota 15G