Borg Backup : Gérer ses backups sous Linux
Table des matières
Borg Backup (Borg en abrégé) est un programme de sauvegarde incrémentielle en ligne de commande. Il permet de fournir un moyen efficace et sûr de sauvegarder des données.
Il existe des logiciels graphiques, possiblement moins complet, mais profitant des fonctionalités de borg backup. Si vous êtes intéressés, vous pouvez consulter https://www.linuxtricks.fr/wiki/pika-backup-la-sauvegarde-graphique-avec-la-puissance-de-borg
Nous allons voir comment utiliser et paramétrer tout ça.
Juste avant, quelques détails techniques pour les geeks !
Borg backup supporte la déduplication, la compression et le chiffrement :
- La sauvegarde incrémentale des données rend l'outil approprié pour les sauvegardes quotidiennes puisque seules les modifications sont sauvegardées.
- La technique de déduplication va éviter le stockage multiple de fichiers identiques (plus précisément de blocs de données) d'une sauvegarde à l'autre
- La technique de chiffrement est adaptée aux sauvegardes vers des destinations qui ne sont pas totalement fiables. Ainsi une sauvegarde sur disque amovible pourra rester à l'abris des regards indiscrets.
Borg permet aussi de réaliser :
- Une compression des données sauvegardées pour gagner de la place
- Des sauvegardes distantes avec le support de dépôts distants à travers un tunnel SSH.
- De monter les sauvegardes comme un système de fichiers et d'y accéder pour restaurer avec les outils cp, rsync ou même un gestionnaire de fichiers graphique.
Pour accéder aux sauvegardes, vous devez disposer d'un système ayant borg d'installé.
L'outil ne sauvegarde pas en effet en mode fichier comme un bon vieux copier coller, ou un rsync mais il propose des fonctions intéressantes, ce qui peut répondre à votre besoin.
Aucune base de données n'est nécessaire, les métadonnées sont stockées dans le dépôt de sauvegarde lui même.
Suivant votre distribution Linux, il suffit d'installer le paquet borgbackup :
Gentoo :
Fedora / RedHat et dérivées (Nécessite EPEL) :
Debian :
Dans l'exemple de ce tutoriel, j'utilise un point de montage local /backup sur lequel le disque de sauvegarde est monté.
Avant de lancer notre première sauvegarde, il faut créer un repository.
Cela permet de créer dans la destination directement les métadonnées qui vont bien.
Pour cela on va utliser la commande borg init.
Pour créer un repository sans chiffrement :
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Pour protéger le repository avec une passphrase :
la passphrase vous sera demandée 2 fois :
C'est le couple passphrase + clé qui vous permet de déchiffrer le contenu. Pensez bien à sauvegarder cette clé au cas où, qui est stockée dans le repo lui même.
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Pour créer notre sauvegarde, on va utiliser la commande borg create :
On se positionnera dans le dossier concerné avant :
Quelques explications :
--stats : Permet d'afficher des statistiques si vous le voulez
-C : Permet d'utiliser la compression si vous le voulez
/backup/borg::20230119 : Le chemin du repo, suivi de :: suivi du nom de la sauvegarde
. : Le dossier à sauvegarder (ici le dossier courant) On peut évidemment mettre plusieurs dossiers, comme avec la commande tar.
Pour l'option -C, vous avez l'autocomplétion disponible avec les algorithmes et les "forces" de compression. Chez moi j'ai :
Vous pouvez utiliser d'autres options sympa :
--progress : permet d'afficher la progression de la création de la sauvegarde.
--exclude : permet d'exclure des dossiers (peut être utilisé plusieurs fois)
Voici un exemple avec progress et 2 dossiers exclus :
Si vous sauvegardez sur un repository chiffré, la passphrase vous sera demandée.
Grâce à l'option stats, on a ce type de sortie après la sauvegarde :
Evidemment, vous ne pouvez pas utiliser deux fois la même commande, chaque nom de sauvegarde doit être unique !
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Pour visualiser les backups sur un repository, on utilisera borg list :
Qui produit ceci :
Si vous listez un repository chiffré, la passphrase vous sera demandée.
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Pour visualiser le contenu d'un backup particuluer sur un repository, on utilisera borg list également mais avec la même syntaxe que lors de la création avec les deux fois deux points :
Ce qui sort une liste dont je vous mets un extrait (avec les permissions à la ls -l ) :
Si vous listez un backup d'un repository chiffré, la passphrase vous sera demandée.
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Si vous désiez des informations globales sur un backup, c'est la commande borg info, avec la même syntaxe que lors de la création avec les deux fois deux points :
Ce qui produit ceci :
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Borg Backup, comme je l'ai dit en introduction permet la déduplication.
Par rapport à rsync, une sauvegarde suivante va tenir compte de ce qui est déjà présent dans le repository et va dédupliquer la sauvegarde.
C'est un gros plus par rapport à rsync.
Si je supprime quelques fichiers, et que je relance une sauvegarde avec borg create, c'est beauciup plus rapide :
Voilà la sortie produite :
On voit que la sauvegarde est très rapide,
On pourra reprendre l'état d'un chichier à chaque sauvegarde.
Là où rsync fait de la sauvegarde incrémentale et vous avez uniquement la version du fichier de la dernière exécution de la commande rsync.
Si on fait une sauvegarde, c'est pour vous sauver la vie le jour où vous avez besoin de récupérer un ou des fichiers.
La commande qui nous sera utile sera borg extract avec la même syntaxe que lors de la création avec les deux fois deux points :
Sans argument, ça réextrait toute la sauvegarde dans le dossier courant :
L'option --progress permet de voir où borg en est dans l'extraction !
Evidemment vous pouvez récupérer que quelques éléments en les passant en argument (comme tar), ici le dossier Téléchargements par exemple :
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Plutôt que de restaurer avec la commande borg extract comme vu précédemment, vous pouvez monter une sauvegarde sur un point de montage.
Cela vous permettra de parcourir la sauvegarde comme un dossier classique de votre système, et de restaurer les éléments par copier coller en ligne de commande ou graphique.
Je créé un dossier temporaire dans mon système pour monter dedans après :
On monte la sauvegarde avec la commande borg mount. Voici un exemple :
On notera que les données sont montées en lecture seule comme l'indique la commande mount :
Les données de ma sauvegarde sont accessibles en mode fichier, on peut donc les lister, les copier/coller, etc. :
Pour démonter on utilisera borg umount :
ou la commande native fusermount :
Si je vous relance un borg list j'ai ici 4 backups pour la démo :
Si je veux supprimer un backup, on va utiliser la commande borg delete avec la même syntaxe que lors de la création avec les deux fois deux points :
Et si je reliste avec borg list le backup 2 a disparu :
Evidemment, les 3 autres sauvegardes sont bien intactes, borg gère tout comme un grand.
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Parfois on peut avoir besoin de garder que les X derniers backups. Cela peut être utile dans le cas d'une automatisation via script.
Pour cela on va utiliser la commande borg prune, je vous montre ici avec les 2 derniers :
Une fois fait, si je liste à nouveau, il ne me reste que les 2 derniers :
Evidemment, 2 est excessif dans cet exemple.
Sachant que borg déduplique, compresse également, vous pouvez en garder plus !
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
On peut utiliser d'autres options à noter :
--keep-last 5 : Garder les 5 derniers backup
--keep-daily 5 : Garder les 5 derniers backups journaliers
--keep-monthly 5 : Garder les 5 derniers backups mensuels
Plus de précisions dans la page man avec des exemples.
Pour vériier la cohérence du dépôt, on pourra utiliser borg check et rechercher d'éventuels problèmes de consistance :
A force de générer des sauvegardes, et d'en supprimer, on peut tenter de recompacter l'ensemble des données pour libérer un peu d'espace et réorganiser tout ça. On pourra le faire avec borg compact :
Si vous avez utilisé une passphrase et que vous désirez la changer, vous le pouvez grâce à la commande borg key :
L'ancienne clé vous sera demandée et deux fois la nouvelle :
Il est possible d'automatiser ses backup avec plusieurs actions :
- Soit par un script avec les différentes commandes
- Soit avec borgmatic
Pour installer borgmatic :
Gentoo :
Fedora / red Hat et dérivées (EPEL requis) :
Debian :
Pour générer une config modèle :
Par défaut le fichier /etc/borgmatic/config.yaml est extrèmement commenté.
Voici un exemple de ce qu'on peut produire pour faire comme dans les exemples ci-dessus :
Je vous ai laissé en commentaire des choses utiles si vous avez un backup chiffré ou distant
Ensuite pour lancer un backup avec les options de ce fichier de configuration, rien de plus facile :
Quelques options possibles :
-v1 : permet d'avoir un peu de verbosité
-n : permet de tester l'exécution mais ne fait rien
Voici un exemple de sortie d'un test via :
Après y a plus qu'à mettre dans crontab pour planifier !
- Introduction
- Détails et fonctionalités techniques
- Installation
- Utilisation
- Automatisation
Introduction
Borg Backup (Borg en abrégé) est un programme de sauvegarde incrémentielle en ligne de commande. Il permet de fournir un moyen efficace et sûr de sauvegarder des données.
Il existe des logiciels graphiques, possiblement moins complet, mais profitant des fonctionalités de borg backup. Si vous êtes intéressés, vous pouvez consulter https://www.linuxtricks.fr/wiki/pika-backup-la-sauvegarde-graphique-avec-la-puissance-de-borg
Nous allons voir comment utiliser et paramétrer tout ça.
Détails et fonctionalités techniques
Juste avant, quelques détails techniques pour les geeks !
Borg backup supporte la déduplication, la compression et le chiffrement :
- La sauvegarde incrémentale des données rend l'outil approprié pour les sauvegardes quotidiennes puisque seules les modifications sont sauvegardées.
- La technique de déduplication va éviter le stockage multiple de fichiers identiques (plus précisément de blocs de données) d'une sauvegarde à l'autre
- La technique de chiffrement est adaptée aux sauvegardes vers des destinations qui ne sont pas totalement fiables. Ainsi une sauvegarde sur disque amovible pourra rester à l'abris des regards indiscrets.
Borg permet aussi de réaliser :
- Une compression des données sauvegardées pour gagner de la place
- Des sauvegardes distantes avec le support de dépôts distants à travers un tunnel SSH.
- De monter les sauvegardes comme un système de fichiers et d'y accéder pour restaurer avec les outils cp, rsync ou même un gestionnaire de fichiers graphique.
Pour accéder aux sauvegardes, vous devez disposer d'un système ayant borg d'installé.
L'outil ne sauvegarde pas en effet en mode fichier comme un bon vieux copier coller, ou un rsync mais il propose des fonctions intéressantes, ce qui peut répondre à votre besoin.
Aucune base de données n'est nécessaire, les métadonnées sont stockées dans le dépôt de sauvegarde lui même.
Installation
Suivant votre distribution Linux, il suffit d'installer le paquet borgbackup :
Gentoo :
Code BASH :
emerge -av app-backup/borgbackup
Fedora / RedHat et dérivées (Nécessite EPEL) :
Code BASH :
dnf install borgbackup
Debian :
Code BASH :
apt install borgbackup
Utilisation
Dans l'exemple de ce tutoriel, j'utilise un point de montage local /backup sur lequel le disque de sauvegarde est monté.
Initialiser le dépôt borg
Avant de lancer notre première sauvegarde, il faut créer un repository.
Cela permet de créer dans la destination directement les métadonnées qui vont bien.
Pour cela on va utliser la commande borg init.
Dépôt classique
Pour créer un repository sans chiffrement :
Code BASH :
borg init -e none /backup/borg
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Code BASH :
borg init -e none ssh://adrien@192.168.21.105:22/backup/adrien
Dépôt chiffré
Pour protéger le repository avec une passphrase :
Code BASH :
borg init -e repokey /backup/borg
la passphrase vous sera demandée 2 fois :
Code TEXT :
Enter new passphrase: Enter same passphrase again: IMPORTANT: you will need both KEY AND PASSPHRASE to access this repo! If you used a repokey mode, the key is stored in the repo, but you should back it up separately. Use "borg key export" to export the key, optionally in printable format. Write down the passphrase. Store both at safe place(s).
C'est le couple passphrase + clé qui vous permet de déchiffrer le contenu. Pensez bien à sauvegarder cette clé au cas où, qui est stockée dans le repo lui même.
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Code BASH :
borg init -e repokey ssh://adrien@192.168.21.105:22/backup/adrien
Créer une sauvegarde
Pour créer notre sauvegarde, on va utiliser la commande borg create :
On se positionnera dans le dossier concerné avant :
Code BASH :
cd /home/adrien
Code BASH :
borg create --stats -C zstd,10 /backup/borg::20230119 .
Quelques explications :
--stats : Permet d'afficher des statistiques si vous le voulez
-C : Permet d'utiliser la compression si vous le voulez
/backup/borg::20230119 : Le chemin du repo, suivi de :: suivi du nom de la sauvegarde
. : Le dossier à sauvegarder (ici le dossier courant) On peut évidemment mettre plusieurs dossiers, comme avec la commande tar.
Pour l'option -C, vous avez l'autocomplétion disponible avec les algorithmes et les "forces" de compression. Chez moi j'ai :
Code TEXT :
auto lzma,4 none zlib,6 zstd,11 zstd,17 zstd,22 zstd,8 lz4 lzma,5 zlib,1 zlib,7 zstd,12 zstd,18 zstd,3 zstd,9 lzma,0 lzma,6 zlib,2 zlib,8 zstd,13 zstd,19 zstd,4 lzma,1 lzma,7 zlib,3 zlib,9 zstd,14 zstd,2 zstd,5 lzma,2 lzma,8 zlib,4 zstd,1 zstd,15 zstd,20 zstd,6 lzma,3 lzma,9 zlib,5 zstd,10 zstd,16 zstd,21 zstd,7
Vous pouvez utiliser d'autres options sympa :
--progress : permet d'afficher la progression de la création de la sauvegarde.
--exclude : permet d'exclure des dossiers (peut être utilisé plusieurs fois)
Voici un exemple avec progress et 2 dossiers exclus :
Code BASH :
borg create --progress -C zstd,10 --exclude '.cache' --exclude 'Téléchargements' /backup/borg::20230119 .
Si vous sauvegardez sur un repository chiffré, la passphrase vous sera demandée.
Grâce à l'option stats, on a ce type de sortie après la sauvegarde :
Code TEXT :
------------------------------------------------------------------------------ Repository: /backup/borg Archive name: 20230119 Archive fingerprint: 10855358175d9bb31f8b52dee8c13c438d3392581ee15f44b8fbeebbb8872b59 Time (start): Thu, 2023-01-19 19:01:32 Time (end): Thu, 2023-01-19 19:05:33 Duration: 4 minutes 1.15 seconds Number of files: 26354 Utilization of max. archive size: 0% ------------------------------------------------------------------------ Original size Compressed size Deduplicated size This archive: 4.31 GB 2.40 GB 2.23 GB All archives: 4.31 GB 2.40 GB 2.23 GB Unique chunks Total chunks Chunk index: 22656 27245 ----------------------------------------------------------------------
Evidemment, vous ne pouvez pas utiliser deux fois la même commande, chaque nom de sauvegarde doit être unique !
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Code BASH :
borg create --stats -C zstd,10 ssh://adrien@192.168.21.105:22/backup/adrien::20230119 .
Lister les backups
Pour visualiser les backups sur un repository, on utilisera borg list :
Code BASH :
borg list /backup/borg/
Qui produit ceci :
Code TEXT :
20230119 Thu, 2023-01-19 19:01:32 [10855358175d9bb31f8b52dee8c13c438d3392581ee15f44b8fbeebbb8872b59]
Si vous listez un repository chiffré, la passphrase vous sera demandée.
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Code BASH :
borg list ssh://adrien@192.168.21.105:22/backup/adrien
Lister le contenu d'un backup
Pour visualiser le contenu d'un backup particuluer sur un repository, on utilisera borg list également mais avec la même syntaxe que lors de la création avec les deux fois deux points :
Code BASH :
borg list /backup/borg::20230119
Ce qui sort une liste dont je vous mets un extrait (avec les permissions à la ls -l ) :
Code TEXT :
-rw-r--r-- adrien adrien 5258765 Tue, 2021-07-20 17:40:41 Téléchargements/anydesk_6.1.1-1_x86_64.rpm drwxr-xr-x adrien adrien 0 Wed, 2018-12-26 18:58:19 Modèles drwxr-xr-x adrien adrien 0 Wed, 2018-12-26 18:58:19 Public drwxr-xr-x adrien adrien 0 Wed, 2023-01-04 18:23:27 Documents -rw-r--r-- adrien adrien 659165 Mon, 2019-03-04 18:37:39 Documents/vigiXXX (copie).xcf drwx------ adrien adrien 0 Thu, 2021-08-12 07:45:02 Documents/AnyDesk -rw-r--r-- adrien adrien 38 Thu, 2016-04-14 14:48:38 Documents/.directory -rw-r--r-- adrien adrien 17815 Mon, 2020-11-23 07:15:36 Documents/DHCP.odp -rw-r--r-- adrien adrien 2129121 Thu, 2020-07-30 10:49:19 Documents/Escape - Eveningland.mp3 -rw-r--r-- adrien adrien 9527 Thu, 2022-11-17 21:59:46 Documents/LOL_Vivaldi.xlsx -rw-r--r-- adrien adrien 293195 Tue, 2022-05-03 23:08:26 Documents/Sans titre.jpg -rw-r--r-- adrien adrien 184252 Sat, 2023-01-07 11:24:16 Documents/Sans titre.png -rw-r--r-- adrien adrien 238643 Sat, 2022-01-01 18:41:49 Documents/annee-2022-lt.jpg -rw-r--r-- adrien adrien 258725 Thu, 2022-07-28 10:36:14 Documents/bp-remarque.png
Si vous listez un backup d'un repository chiffré, la passphrase vous sera demandée.
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Code BASH :
borg list ssh://adrien@192.168.21.105:22/backup/adrien::20230119
Informations sur un backup
Si vous désiez des informations globales sur un backup, c'est la commande borg info, avec la même syntaxe que lors de la création avec les deux fois deux points :
Code BASH :
borg info /backup/borg::20230119
Ce qui produit ceci :
Code TEXT :
Repository: /backup/borg Archive name: 20230119 Archive fingerprint: 10855358175d9bb31f8b52dee8c13c438d3392581ee15f44b8fbeebbb8872b59 Comment: Hostname: fedora Username: root Time (start): Thu, 2023-01-19 19:01:32 Time (end): Thu, 2023-01-19 19:05:33 Duration: 4 minutes 1.15 seconds Number of files: 26354 Command line: /usr/bin/borg create --stats -C zstd,10 /backup/borg::20230119 . Utilization of maximum supported archive size: 0% ---------------------------------------------------------------------- Original size Compressed size Deduplicated size This archive: 4.31 GB 2.40 GB 2.23 GB All archives: 4.31 GB 2.40 GB 2.23 GB Unique chunks Total chunks Chunk index: 22656 27245 ----------------------------------------------------------------------
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Code BASH :
borg info ssh://adrien@192.168.21.105:22/backup/adrien::20230119
L'intérêt de borg, la déduplication
Borg Backup, comme je l'ai dit en introduction permet la déduplication.
Par rapport à rsync, une sauvegarde suivante va tenir compte de ce qui est déjà présent dans le repository et va dédupliquer la sauvegarde.
C'est un gros plus par rapport à rsync.
Si je supprime quelques fichiers, et que je relance une sauvegarde avec borg create, c'est beauciup plus rapide :
Code BASH :
borg create --stats -C zstd,10 /backup/borg::20230119-2 .
Voilà la sortie produite :
Code TEXT :
Repository: /backup/borg Archive name: 20230119-2 Archive fingerprint: cf1a5b5379437ee2a7a55c82325d976bd884d9d499e5e7486e776c8e95e7ae1e Time (start): Thu, 2023-01-19 19:19:49 Time (end): Thu, 2023-01-19 19:19:56 Duration: 6.49 seconds Number of files: 26347 Utilization of max. archive size: 0% ------------------------------------------------------------------------ Original size Compressed size Deduplicated size This archive: 3.71 GB 1.81 GB 287.56 kB All archives: 8.01 GB 4.21 GB 2.23 GB Unique chunks Total chunks Chunk index: 22666 54250 ------------------------------------------------------------------------
On voit que la sauvegarde est très rapide,
On pourra reprendre l'état d'un chichier à chaque sauvegarde.
Là où rsync fait de la sauvegarde incrémentale et vous avez uniquement la version du fichier de la dernière exécution de la commande rsync.
Restaurer des éléments
Si on fait une sauvegarde, c'est pour vous sauver la vie le jour où vous avez besoin de récupérer un ou des fichiers.
La commande qui nous sera utile sera borg extract avec la même syntaxe que lors de la création avec les deux fois deux points :
Sans argument, ça réextrait toute la sauvegarde dans le dossier courant :
Code BASH :
borg extract --progress /backup/borg::20230119
L'option --progress permet de voir où borg en est dans l'extraction !
Evidemment vous pouvez récupérer que quelques éléments en les passant en argument (comme tar), ici le dossier Téléchargements par exemple :
Code BASH :
borg extract --progress /backup/borg::20230119 Téléchargements
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Code BASH :
borg extract --progress ssh://adrien@192.168.21.105:22/backup/adrien::20230119
Monter une sauvegarde
Plutôt que de restaurer avec la commande borg extract comme vu précédemment, vous pouvez monter une sauvegarde sur un point de montage.
Cela vous permettra de parcourir la sauvegarde comme un dossier classique de votre système, et de restaurer les éléments par copier coller en ligne de commande ou graphique.
Je créé un dossier temporaire dans mon système pour monter dedans après :
Code BASH :
mkdir /var/tmp/borgadrien
On monte la sauvegarde avec la commande borg mount. Voici un exemple :
Code BASH :
borg mount /backup/borg::20230119 /var/tmp/borgadrien
On notera que les données sont montées en lecture seule comme l'indique la commande mount :
Code TEXT :
borgfs on /var/tmp/borgadrien type fuse (ro,nosuid,nodev,relatime,user_id=1000,group_id=1000,default_permissions)
Les données de ma sauvegarde sont accessibles en mode fichier, on peut donc les lister, les copier/coller, etc. :
Code BASH :
ls -l /var/tmp/borgadrien/
Code TEXT :
-rw-rw-r--. 1 adrien adrien 3087 18 avril 2020 1 -rw-rw-r--. 1 adrien adrien 3518 18 avril 2020 2 -rw-rw-r--. 1 adrien adrien 3564 18 avril 2020 3 drwxr-xr-x. 1 adrien adrien 0 1 mai 2019 Bureau drwxr-xr-x. 1 adrien adrien 0 4 janv. 18:23 Documents drwxr-xr-x. 1 adrien adrien 0 26 oct. 2020 Images drwxr-xr-x. 1 adrien adrien 0 26 déc. 2018 Modèles drwxr-xr-x. 1 adrien adrien 0 26 oct. 2020 Musique drwxr-xr-x. 1 adrien adrien 0 26 déc. 2018 Public drwxr-xr-x. 1 adrien adrien 0 20 oct. 21:35 snap drwxr-xr-x. 1 adrien adrien 0 20 oct. 21:33 Téléchargements drwxr-xr-x. 1 adrien adrien 0 26 déc. 2018 Vidéos
Pour démonter on utilisera borg umount :
Code BASH :
borg umount /var/tmp/borgadrien
ou la commande native fusermount :
Code BASH :
fusermount -u /var/tmp/borgadrien
Supprimer des backup
Si je vous relance un borg list j'ai ici 4 backups pour la démo :
Code TEXT :
20230119 Thu, 2023-01-19 19:01:32 [10855358175d9bb31f8b52dee8c13c438d3392581ee15f44b8fbeebbb8872b59] 20230119-2 Thu, 2023-01-19 19:19:49 [cf1a5b5379437ee2a7a55c82325d976bd884d9d499e5e7486e776c8e95e7ae1e] 20230119-3 Thu, 2023-01-19 19:24:25 [e91320464b75d48bf72d6e1f14de0403df9cefb50d91a66a39a5d04585f9ac8b] 20230119-4 Thu, 2023-01-19 19:24:43 [9ba338b605faed78d75321dfc04c889be41f81b2d222d2cf77d67d8134767b30]
Si je veux supprimer un backup, on va utiliser la commande borg delete avec la même syntaxe que lors de la création avec les deux fois deux points :
Code BASH :
borg delete /backup/borg::20230119-2
Et si je reliste avec borg list le backup 2 a disparu :
Code TEXT :
20230119 Thu, 2023-01-19 19:01:32 [10855358175d9bb31f8b52dee8c13c438d3392581ee15f44b8fbeebbb8872b59] 20230119-3 Thu, 2023-01-19 19:24:25 [e91320464b75d48bf72d6e1f14de0403df9cefb50d91a66a39a5d04585f9ac8b] 20230119-4 Thu, 2023-01-19 19:24:43 [9ba338b605faed78d75321dfc04c889be41f81b2d222d2cf77d67d8134767b30]
Evidemment, les 3 autres sauvegardes sont bien intactes, borg gère tout comme un grand.
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Code BASH :
borg delete ssh://adrien@192.168.21.105:22/backup/adrien::20230119-2
Garder les X derniers backups
Parfois on peut avoir besoin de garder que les X derniers backups. Cela peut être utile dans le cas d'une automatisation via script.
Pour cela on va utiliser la commande borg prune, je vous montre ici avec les 2 derniers :
Code BASH :
borg prune --keep-last 2 /backup/borg
Une fois fait, si je liste à nouveau, il ne me reste que les 2 derniers :
Code TEXT :
20230119-3 Thu, 2023-01-19 19:24:25 [e91320464b75d48bf72d6e1f14de0403df9cefb50d91a66a39a5d04585f9ac8b] 20230119-4 Thu, 2023-01-19 19:24:43 [9ba338b605faed78d75321dfc04c889be41f81b2d222d2cf77d67d8134767b30]
Evidemment, 2 est excessif dans cet exemple.
Sachant que borg déduplique, compresse également, vous pouvez en garder plus !
Si on veut utiliser un dépôt distant à travers SSH, on utilisera la syntaxe suivante (avec destination = 192.168.21.105 et port SSH 22) :
Code BASH :
borg prune --keep-last 2 ssh://adrien@192.168.21.105:22/backup/adrien
On peut utiliser d'autres options à noter :
--keep-last 5 : Garder les 5 derniers backup
--keep-daily 5 : Garder les 5 derniers backups journaliers
--keep-monthly 5 : Garder les 5 derniers backups mensuels
Plus de précisions dans la page man avec des exemples.
Quelques autres options utiles
Vérifier la consistance du dépôt
Pour vériier la cohérence du dépôt, on pourra utiliser borg check et rechercher d'éventuels problèmes de consistance :
Code BASH :
borg check --progress /backup/borg
Compacter les données
A force de générer des sauvegardes, et d'en supprimer, on peut tenter de recompacter l'ensemble des données pour libérer un peu d'espace et réorganiser tout ça. On pourra le faire avec borg compact :
Code BASH :
borg compact --progress /backup/borg
Changer la passphrase
Si vous avez utilisé une passphrase et que vous désirez la changer, vous le pouvez grâce à la commande borg key :
Code BASH :
borg key change-passphrase /backup/chiffre
L'ancienne clé vous sera demandée et deux fois la nouvelle :
Code TEXT :
Enter passphrase for key /backup/chiffre: Enter new passphrase: Enter same passphrase again:
Automatisation
Il est possible d'automatiser ses backup avec plusieurs actions :
- Soit par un script avec les différentes commandes
- Soit avec borgmatic
Pour installer borgmatic :
Gentoo :
Code BASH :
emerge -av app-backup/borgmatic
Fedora / red Hat et dérivées (EPEL requis) :
Code BASH :
dnf install borgmatic
Debian :
Code BASH :
apt install borgmatic
Pour générer une config modèle :
Code BASH :
generate-borgmatic-config
Code TEXT :
Generated a sample configuration file at /etc/borgmatic/config.yaml. This includes all available configuration options with example values. The few required options are indicated. Please edit the file to suit your needs.
Par défaut le fichier /etc/borgmatic/config.yaml est extrèmement commenté.
Voici un exemple de ce qu'on peut produire pour faire comme dans les exemples ci-dessus :
Code TEXT :
location: source_directories: - . repositories: - /backup/borg working_directory: /home/adrien exclude_patterns: - .cache - Téléchargements storage: # encryption_passphrase: "super_pass_phrase" compression: zstd,10 # upload_rate_limit: 100 # ssh_command: ssh -i /path/to/private/key archive_name_format: '{hostname}-backup-{now:%Y%m%d}' retention: keep_daily: 7 prefix: '{hostname}-backup-'
Je vous ai laissé en commentaire des choses utiles si vous avez un backup chiffré ou distant
Ensuite pour lancer un backup avec les options de ce fichier de configuration, rien de plus facile :
Code BASH :
borgmatic
Quelques options possibles :
-v1 : permet d'avoir un peu de verbosité
-n : permet de tester l'exécution mais ne fait rien
Voici un exemple de sortie d'un test via :
Code BASH :
borgmatic -n -v1
Code TEXT :
/backup/borg: Pruning archives (dry run; not making any changes) /backup/borg: Compacting segments (dry run; not making any changes) /backup/borg: Skipping compact (dry run) /backup/borg: Creating archive (dry run; not making any changes) Creating archive at "/backup/borg::fedora-backup-20230119" /backup/borg: Running consistency checks Skipping repository check due to configured frequency; 29 days, 23:57:41.478761 until next check Skipping archives check due to configured frequency; 29 days, 23:57:41.478409 until next check summary: /etc/borgmatic/config.yaml: Successfully ran configuration file
Après y a plus qu'à mettre dans crontab pour planifier !