Ajout restic + déplacement borg
parent
7381166084
commit
84f5d6dd64
|
@ -0,0 +1,92 @@
|
|||
# Outils de backups
|
||||
|
||||
## Présentation
|
||||
|
||||
Ce dossier contient une présentation des logiciels utilisés par le Crans pour
|
||||
faire ses sauvegardes, ou backups en anglais. On entend ici par backup une
|
||||
opération qui consiste à dupliquer de manière sécurisée (chiffrée en
|
||||
l'occurrence) sur d'autres serveurs les données des utilisateurices et des
|
||||
machines du Crans.
|
||||
|
||||
Comme dans tout le dossier [logiciels](../../../), le but n'est pas de
|
||||
réexpliquer l'entièreté des fonctionnalités mais simplement d'a voir les bases
|
||||
de compréhension.
|
||||
|
||||
## Organisation
|
||||
|
||||
Vous trouverez ici deux fichiers correspondant aux deux logiciels utilisés pour
|
||||
les backups au Crans :
|
||||
|
||||
- [borg](./borg.md) pour les logiciels borg et borgmatic ;
|
||||
- [restic](./restic.md) pour le logiciel du même nom.
|
||||
|
||||
Il est cependant fortement conseillé de lire la fin de ce fichier présentant
|
||||
certaines informations concernant les backups qu'il est important de connaître
|
||||
avant de lire plus en détails les autres fichiers détaillant plus
|
||||
spécifiquement les logiciels.
|
||||
|
||||
## Contexte
|
||||
|
||||
### Historique
|
||||
|
||||
Pour prevenir certains incidents dus à des erreurs de manipulation, le collège
|
||||
technique a mis en place en système de backups. Le but de celui-ci est de
|
||||
pouvoir, si le besoin s'en fait ressentir, aller rechercher un fichier supprimé
|
||||
ou écrasé. Bien qu'il serait possible de simplement faire une copie périodique
|
||||
des données sur un serveur distant, on lui préfère des solutions un peu plus
|
||||
développées qui permettent de faire des sauvegardes incrémentales. Fut un temps,
|
||||
la solution technique en place était le logiciel
|
||||
[BackupPC](https://backuppc.github.io/backuppc/), cependant celui-ci commençant
|
||||
à dater et ayant une faible ergonomie, nous utilisons aujourd'hui le logiciel
|
||||
[borg](https://borgbackup.readthedocs.io/) et son frontend
|
||||
[borgmatic](https://torsion.org/borgmatic/). De plus, le logiciel
|
||||
[restic](https://restic.readthedocs.io/) a été installé en parallèle pour sa
|
||||
simplicité d'utilisation : borg/borgmatic et restic cohabitent donc pour le
|
||||
moment pour que les jeunes membres actif⋅ves puissent comparer afin de faire un
|
||||
choix à long terme.
|
||||
|
||||
### Backups incrémentales
|
||||
|
||||
Avant de présenter ces logiciels, attardons nous un peu sur ce qu'on entend par
|
||||
faire des backups incrémentales. Pour cela revenons à notre piètre solution
|
||||
initiale qui consiste à copier (à grands coups de rsync, unison, scp...) toutes
|
||||
les données que l'on souhaiterait sauvegarder. Pour que ces sauvegardes soient
|
||||
utiles, il faut les réaliser assez fréquemment (quelque part entre un jour et
|
||||
une semaine disons). Cependant, à chaque nouvelle backup réalisée, celle-ci va
|
||||
venir écraser le contenu de la précédente et ainsi, on ne dispose jamais plus
|
||||
que d'une copie des données de la veille. Ainsi, des dysfonctionnements
|
||||
automatiques ou simplement de la négligence peuvent faire que l'on ne se rendra
|
||||
compte que l'on avait besoin de récupérer notre fichier il y a déjà quelques
|
||||
jours et qu'il a maintenant déjà été supprimé de la copie de sauvegarde.
|
||||
|
||||
On préfererait donc pouvoir disposer d'une collection de sauvegardes qui
|
||||
remonte sur quelques jours voir moi en fonction de la politique de rétention de
|
||||
sauvegarde qu'on mettrait en place. Par exemple, une sauvegarde pour chacun des
|
||||
septs derniers jours puis quelques unes espacée d'une semaine. Si l'on reprend
|
||||
notre solution naïve, on peut facilement en étendre l'usage pour ce nouvel
|
||||
office : on réalise une copie complète des données par jour que l'on souhaite
|
||||
sauvegarder. Suivant la politique de rétention que l'on a donné plus tôt cela
|
||||
consisterais en une quinzaine de copies distinctes des données à sauvegarder et
|
||||
donc une multiplication par quinze de la taille de celle-ci.
|
||||
|
||||
Si je jette un œil rapide à la taille que prends aujourd'hui les données
|
||||
utilisateurices, je vois qu'on utilise un peu plus de 2.5T de stockage, donc si
|
||||
l'on suit la logique, on devrait disposer d'une ou plusieurs machines
|
||||
totalisant un stockage d'environ 40T. Inutile de le dire je pense, mais cela
|
||||
fait (beaucoup) trop. Heureusement pour nous, d'un jour sur l'autre
|
||||
l'intégralité de nos données stockées ne varie pas et seule une petite partie
|
||||
change sur le cours d'une journée. Ainsi, si l'on ne stocke que les différences
|
||||
accumulé sur une journée par rapport à la veille, on se retrouvera avec une
|
||||
taille beaucoup plus raisonnable de sauvegarde. C'est ~la déduplication.
|
||||
|
||||
### Qu'est-ce que l'on sauvegarde ?
|
||||
|
||||
Au Crans, on sauvegarde deux types de données :
|
||||
|
||||
- D'un côté, on a les données d'administration, c'est une partie des disques
|
||||
de tous les serveurs (généralement le /etc et le /var sauf cas particulier),
|
||||
le home des nounous, les bases de données...
|
||||
|
||||
- De l'autre côté; on a les données des adhérents, c'est à dire : le contenu
|
||||
de leur répertoire personnel et de leur dossier mail qui au jour où j'écris
|
||||
ses lignes peut contenir au maximum 30G et 10G de données respectivement.
|
|
@ -0,0 +1,110 @@
|
|||
# Borg
|
||||
|
||||
Page officiel de borg : <https://www.borgbackup.org/>.
|
||||
|
||||
Documentation de borg : <https://borgbackup.readthedocs.io/>.
|
||||
|
||||
Page officielle de borgmatic : <https://torsion.org/borgmatic/> (contient la
|
||||
documentation).
|
||||
|
||||
## Borg et borgmatic
|
||||
|
||||
Borg est un logiciel client/serveur permettant d'effectuer des sauvegardes
|
||||
incrémentales, dédupliquées et chiffrées par le client. Le serveur est simple à
|
||||
installer et utilise ssh comme protocole de transport entre lui et le client.
|
||||
Ainsi, il suffit de donner un accès ssh au client via une paire de clés pour lui
|
||||
autoriser à discuter avec le serveur. Quelque chose ressemblant à ça dans le
|
||||
`.ssh/authorized_keys` de l'utilisateur sur le serveur qui fera les backups :
|
||||
|
||||
```txt
|
||||
command="borg serve --restrict-to-path {{ chemin vers les sauvegardes }}",restrict {{ clé publique ssh }}
|
||||
```
|
||||
|
||||
Avec l'installation du paquet `borg` c'est la seule chose à faire sur le serveur
|
||||
et le reste du travail sera réalisé par le client. Après avoir aussi installé
|
||||
`borg` sur le client, on peut déjà commencer à faire quelques sauvegardes.
|
||||
Cependant, si l'on utilise que borg pour les faire (ce qui est possible), on se
|
||||
retrouvera avec des commandes bien trop longues dans lesquels on passe notre
|
||||
temps à spécifier des arguments plusieurs fois : comment contacter le serveur ?
|
||||
où stocker les sauvegardes ? quel politique de rétentions garder ? que faut-il
|
||||
sauvegarder ? Borgmatic est un frontend de borg qui définir une bonne fois pour
|
||||
toutes ses options dans un fichier de configuration pour ensuite n'avoir plus
|
||||
qu'à faire des appels simples à borgmatic qui pasera à borg tous les paramètres
|
||||
dont il a besoin. Le but n'est pas ici d'être exhaustif sur ce que peut/doit
|
||||
contenir ce fichier de configuration. Je vous redirige pour ça vers la
|
||||
[documentation
|
||||
officielle](https://torsion.org/borgmatic/docs/reference/configuration/). Ici,
|
||||
je vais plus chercher à vous donner quelques options minimales et des exemples
|
||||
d'utilisations de borgmatic. Commençons par donner le contenu d'un fichier de
|
||||
configuration partiel :
|
||||
|
||||
```txt
|
||||
location:
|
||||
source_directories:
|
||||
- /etc
|
||||
- /var
|
||||
repositories:
|
||||
- borg@backup-server:/folder/to/bacup/to
|
||||
|
||||
storage:
|
||||
encryption_passphrase: PASSPHRASE
|
||||
ssh_command: ssh -i /etc/borgmatic/id_ed25519_borg
|
||||
|
||||
retention:
|
||||
keep_daily: 4
|
||||
keep_monthly: 6
|
||||
```
|
||||
|
||||
Dans la section `location`, on définit deux choses : ce que l'on souhaite
|
||||
sauvegarder et où on souhaite le sauvegarder. Ici on va backupé le `/etc` et
|
||||
`/var` de notre client sur un serveur distant qu'on contactera via ssh. Dans la
|
||||
section suivante, `storage`, on définit quelques options relatives au stockage
|
||||
et à comment y accéder. Premièrement, on donne la passphrase de chiffrement des
|
||||
sauvegardes (attention, si elle est perdue, les sauvegardes ne seront plus
|
||||
accessibles). Ensuite, on précise comment accéder au serveur (ici, l'information
|
||||
importante est où se trouve la clé privée pour pouvoir se connecter). Enfin,
|
||||
dans la section retention, on définit notre politique de retention : le serveur
|
||||
ne doit stocker qu'une backup quotidienne sur les 4 derniers jours, et une
|
||||
backup mensuelle sur les 6 derniers mois.
|
||||
|
||||
En supposant les autres options de fonctionnement renseignées dans le fichier,
|
||||
que je ne détaillerais pas ici, il est maintenant possible de commencer à
|
||||
utiliser le logiciel et faire nos premières sauvegardes.
|
||||
|
||||
## Créer l'archive de stockage
|
||||
|
||||
La commande suivante permet de créer l'archive où seront stockées les
|
||||
sauvegardes sur le serveur.
|
||||
|
||||
```bash
|
||||
borgmatic init -e repokey
|
||||
```
|
||||
|
||||
## Faire une première sauvegarde
|
||||
|
||||
Pour faire une sauvegarde, rien de plus simple, on appelle simplement le
|
||||
programme borgmatic sans option. Il est néanmoins possible de demander un
|
||||
affichage plus verbeux pour le débogage.
|
||||
|
||||
```bash
|
||||
borgmatic
|
||||
borgmatic -v 2
|
||||
```
|
||||
|
||||
## Lister les différentes sauvegardes dans l'archive
|
||||
|
||||
```bash
|
||||
borgmatic list
|
||||
```
|
||||
|
||||
## Monter une sauvegarde précise sur un point de montage
|
||||
|
||||
```bash
|
||||
borgmatic mount --archive {{ nom de l'archive ou latest pour la dernière }} --mount-point /mnt --path {{ chemin à monter de l'archive }}
|
||||
borgmatic mount --archive latest --mount-point /mnt --path etc/nginx/nginx.conf
|
||||
```
|
||||
|
||||
## Automatiser les backups
|
||||
|
||||
Pour réaliser des backups périodique, on peut en laisser la charge à un cron ou
|
||||
à systemd à l'aide d'un timer.
|
|
@ -0,0 +1,138 @@
|
|||
# Restic
|
||||
|
||||
Page officielle de restic : <https://restic.net/>.
|
||||
|
||||
Documentation de restic : <https://restic.readthedocs.io/>.
|
||||
|
||||
Dépôt officiel de restic rest-server : <https://github.com/restic/rest-server>.
|
||||
|
||||
## Présentation
|
||||
|
||||
Restic est un logiciel client/serveur permettant d'effectuer des sauvegardes
|
||||
incrémentales, dédupliquées et chiffrées par le client. Différents serveurs
|
||||
sont utilisables par le client, nous présenterons ici le serveur REST de restic
|
||||
utilisant le protocole HTTP, qui est installé actuellement au Crans sur
|
||||
[thot](../../../infrastructure/machines/physiques/thot.md).
|
||||
|
||||
Pour la configuration d'un client, vous aurez besoin d'installer le paquet
|
||||
`restic` sur les machines sous debian, restic étant déjà packagé dans nixpkgs
|
||||
pour les machines sous NixOS.
|
||||
|
||||
## Configuration du serveur
|
||||
|
||||
Le choix le plus simple à mettre en place pour la partie serveur de restic est
|
||||
restic rest-server, très simple à mettre en place. Vous pouvez trouver la
|
||||
configuration actuelle dans le module restic du
|
||||
[dépôt NixOS](https://gitlab.crans.org/nounous/nixos).
|
||||
|
||||
Le fonctionnement de ce serveur REST est le suivant : le client compresse et
|
||||
chiffre ses données avec un mot de passe, vient s'authentifier en
|
||||
[basic auth](https://en.wikipedia.org/wiki/Basic_access_authentication) auprès
|
||||
du serveur, puis dépose la backup au fur et à mesure de son avancée sur le
|
||||
serveur. Chaque client dispose donc de deux mots de passe : une clef de
|
||||
chiffrement pour les données, ainsi qu'un mot de passe pour s'authentifier
|
||||
auprès du serveur REST.
|
||||
|
||||
Deux notions sont importantes à comprendre ici dans la configuration du serveur
|
||||
REST.
|
||||
|
||||
- L'option `privateRepos`/`--private-repos` : permet de faire en sorte qu'un⋅e
|
||||
utilisateurice (dans notre cas une machine) ne puisse accéder qu'à ses
|
||||
propres backups et puisse créer tous les dépôts souhaités dans un sous
|
||||
dossier à son nom. Ainsi, une fois authentifiée, la VM flirt aura accès à
|
||||
tous dépôt de la forme `restic:http://thot.adm.crans.org/flirt/<dépôt>`, ce
|
||||
qui est particulièrement pratique pour ne pas avoir à gérer les accès à la
|
||||
main pour chaque machine.
|
||||
- Les clients sont authentifiées par le serveur grâce à un fichier `.htpasswd`
|
||||
situé à la racine du dossier de données. Ainsi, si le dossier de données est
|
||||
`/backups`, le fichier d'authentification sera `/backups/.htpasswd`. Ce
|
||||
fichier est un fichier d'authentification standard : vous pouvez consulter la
|
||||
[page Wikipédia](https://en.wikipedia.org/wiki/.htpasswd) dédiée pour plus
|
||||
d'informations. Vous pouvez alors ajouter une machine à ce fichier avec la
|
||||
commande :
|
||||
|
||||
```bash
|
||||
sudo htpasswd -B /backups/.htpasswd <username> [<password>]
|
||||
```
|
||||
|
||||
Si le mot de passe n'est pas spécifié, il sera alors demandé sur l'entrée
|
||||
standard.
|
||||
|
||||
## Configuration du client
|
||||
|
||||
Théoriquement, restic est uniquement un logiciel qui s'utilise directement.
|
||||
Cependant, nous souhaitons faire des sauvegardes automatiquement en utilisant
|
||||
des systemd timer, on va donc créer plusieurs fichiers pour ne pas à avoir tout
|
||||
à spécifier directement dans les lignes de commande.
|
||||
|
||||
Actuellement, la configuration des clients restic se situe dans le dossier
|
||||
`/etc/restic` sous debian, et dans le
|
||||
[dépôt NixOS](https://gitlab.crans.org/nounous/nixos) pour les machines sous
|
||||
NixOS. Dans les deux cas, on retrouve les mêmes éléments (on donne les noms
|
||||
pour la configuration par défault des machines sous debian) :
|
||||
|
||||
- un fichier d'environnement `base.env`, contenant plusieurs variables d'environnement
|
||||
dont l'utilité précise peut être trouvée dans
|
||||
[la documentation de restic](https://restic.readthedocs.io/en/stable/040_backup.html#environment-variables).
|
||||
- un fichier `base-repo` contenant la position du dépôt (serveur REST), avec
|
||||
les identifiants de connexion, qui se présente sous la forme
|
||||
`restic:http://<username>:<password>@thot.adm.crans.org/<username>/base`.
|
||||
- un fichier `base-password` contenant le mot de passe de chiffrement des
|
||||
sauvegardes.
|
||||
- deux fichiers `base-includes` et `base-excludes` indiquant respectivement les
|
||||
dossiers inclus et exclus pour les sauvegardes.
|
||||
|
||||
En plus de cela, on trouve un service systemd `restic-base` ainsi qu'un timer
|
||||
associé dans le dossier `/etc/systemd/system/`. Ce service lancera deux
|
||||
commandes : une commande pour lancer une sauvegarde, et une commande pour
|
||||
supprimer les anciennes sauvegardes qui ne seront pas gardées en tant que
|
||||
sauvegarde journalière/hebdomadaire/mensuelle/annuelle (définies par la
|
||||
configuration).
|
||||
|
||||
## Initialiser un dépôt
|
||||
|
||||
En supposant que vous avez la configuration décrite ci-dessus, vous pouvez
|
||||
initialiser un dépôt grâce à la commande suivante :
|
||||
|
||||
```bash
|
||||
restic init --repository-file /etc/restic/data-repo --password-file /etc/restic/data-password
|
||||
```
|
||||
|
||||
## Faire une sauvegarde à la main
|
||||
|
||||
Pour faire une sauvegarde à la main, rien de compliqué, il suffit de lancer le
|
||||
service systemd normalement de la manière suivante :
|
||||
|
||||
```bash
|
||||
sudo systemctl start restic-base.service
|
||||
```
|
||||
|
||||
(Même si c'est surprenant, vous pouvez faire CTRL+C à ce moment dans votre
|
||||
terminal, la tâche continuera en fond.)
|
||||
|
||||
De plus, si la variable `RESTIC_PROGRESS_FPS` a été affectée à une valeur
|
||||
strictement positive, vous pourrez voir la progression de la sauvegarde dans
|
||||
le journal. Vous pouvez donc y accéder par la commande :
|
||||
|
||||
```bash
|
||||
sudo journalctl -xefu restic-base
|
||||
```
|
||||
|
||||
## Consulter l'état des sauvegardes
|
||||
|
||||
Pour consulter la liste actuelle des sauvegardes, vous pouvez simplement
|
||||
utiliser la commande :
|
||||
|
||||
```bash
|
||||
restic snapshots --repository-file /etc/restic/data-repo --password-file /etc/restic/data-password
|
||||
```
|
||||
|
||||
De plus, vous pouvez facilement monter une sauvegarde sur un point de montage
|
||||
avec la commande suivante :
|
||||
|
||||
```bash
|
||||
restic mount /mnt --repository-file /etc/restic/data-repo --password-file /etc/restic/data-password
|
||||
```
|
||||
|
||||
Cela bloquera alors votre terminal, et la sauvegarde sera démontée dès que vous
|
||||
quitterez votre terminal, évitant d'avoir une sauvegarde montée et oubliée.
|
164
services/borg.md
164
services/borg.md
|
@ -1,164 +0,0 @@
|
|||
# Borg
|
||||
|
||||
Pour prevenir certains incidents dus à des erreurs de manipulation, le collège
|
||||
technique a mis en place en système de backups. Le but de celui-ci est de
|
||||
pouvoir, si le besoin s'en fait ressentir, aller rechercher un fichier supprimé
|
||||
ou écrasé. Bien qu'il serait possible de simplement faire une copie périodique
|
||||
des données sur un serveur distant, on lui préfère des solutions un peu plus
|
||||
développées qui permettent de faire des sauvegardes incrémentales. Fut un temps,
|
||||
la solution technique en place était le logiciel
|
||||
[BackupPC](https://backuppc.github.io/backuppc/), cependant celui-ci commençant
|
||||
à dater et ayant une faible ergonomie, nous utilisons aujourd'hui le logiciel
|
||||
[borg](https://borgbackup.readthedocs.io/en/stable/) et son frontend
|
||||
[borgmatic](https://torsion.org/borgmatic/).
|
||||
|
||||
Avant de présenter ce logiciel, attardons nous un peu sur ce qu'on entend par
|
||||
faire des backups incrémentales. Pour cela revenons à notre piètre solution
|
||||
initiale qui consiste à copier (à grands coups de rsync, unison, scp…) toutes
|
||||
les données que l'on souhaiterait sauvegarder. Pour que ces sauvegardes soient
|
||||
utiles, il faut les réaliser assez fréquemment (quelque part entre un jour et
|
||||
une semaine disons). Cependant, à chaque nouvelle backup réalisée, celle-ci va
|
||||
venir écraser le contenu de la précédente et ainsi, on ne dispose jamais plus
|
||||
que d'une copie des données de la veille. Ainsi, des dysfonctionnements
|
||||
automatiques ou simplement de la négligence peuvent faire que l'on ne se rendra
|
||||
compte que l'on avait besoin de récupérer notre fichier il y a déjà quelques
|
||||
jours et qu'il a maintenant déjà été supprimé de la copie de sauvegarde. On
|
||||
préfererait donc pouvoir disposer d'une collection de sauvegardes qui remonte
|
||||
sur quelques jours voir moi en fonction de la politique de rétention de
|
||||
sauvegarde qu'on mettrait en place. Par exemple, une sauvegarde pour chacun des
|
||||
septs derniers jours puis quelques unes espacée d'une semaine. Si l'on reprend
|
||||
notre solution naïve, on peut facilement en étendre l'usage pour ce nouvel
|
||||
office : on réalise une copie complète des données par jour que l'on souhaite
|
||||
sauvegarder. Suivant la politique de rétention que l'on a donné plus tôt cela
|
||||
consisterais en une quinzaine de copies distinctes des données à sauvegarder et
|
||||
donc une multiplication par quinze de la taille de celle-ci. Si je jette un œil
|
||||
rapide à la taille que prends aujourd'hui les données utilisateur⋅ices, je vois
|
||||
qu'on utilise un peu plus de 2.5T de stockage, donc si l'on suit la logique, on
|
||||
devrait disposer d'une ou plusieurs machines totalisant un stockage d'environ
|
||||
40T. Inutile de le dire je pense, mais cela fait (beaucoup) trop. Heureusement
|
||||
pour nous, d'un jour sur l'autre l'intégralité de nos données stockées ne varie
|
||||
pas et seule une petite partie change sur le cours d'une journée. Ainsi, si l'on
|
||||
ne stocke que les différences accumulé sur une journée par rapport à la veille,
|
||||
on se retrouvera avec une taille beaucoup plus raisonnable de sauvegarde. C'est
|
||||
~la déduplication.
|
||||
|
||||
## Qu'est ce que l'on sauvegarde ?
|
||||
|
||||
Au crans, on sauvegarde deux types de données :
|
||||
|
||||
* D'un côté, on a les données d'administration, c'est une partie des disques
|
||||
de tous les serveurs (généralement le /etc et le /var sauf cas particulier),
|
||||
le home des nounous, les bases de données…
|
||||
|
||||
* De l'autre côté; on a les données des adhérents, c'est à dire : le contenu
|
||||
de leur répertoire personnel et de leur dossier mail qui au jour où j'écris
|
||||
ses lignes peut contenir au maximum 30G et 10G de données respectivement.
|
||||
|
||||
Même si les deux types de sauvegardes sont fait avec borg/borgmatic, la manière
|
||||
dont les sauvegardes sont effectivement lancé varie entre les deux. Je
|
||||
m'attarderais ici plus sur le fonctionnement générale de borg/borgmatic et donc
|
||||
je présenterais le cas de la sauvegarde de données administratives qui est une
|
||||
utilisation assez normale du logiciel. L'explication de comment se passe les
|
||||
sauvegardes pour les données adhérents est disponible [ici](services/borg.md).
|
||||
|
||||
## Borg et borgmatic
|
||||
|
||||
Borg est un logiciel client/serveur permettant d'effectuer des sauvegardes
|
||||
incrémentales, dédupliquées et chiffrées par le client. Le serveur est simple à
|
||||
installer et utilise ssh comme protocole de transport entre lui et le client.
|
||||
Ainsi, il suffit de donner un accès ssh au client via une paire de clés pour lui
|
||||
autoriser à discuter avec le serveur. Quelque chose ressemblant à ça dans le
|
||||
`.ssh/authorized_keys` de l'utilisateur sur le serveur qui fera les backups :
|
||||
|
||||
```txt
|
||||
command="borg serve --restrict-to-path {{ chemin vers les sauvegardes }}",restrict {{ clé publique ssh }}
|
||||
```
|
||||
|
||||
Avec l'installation du paquet `borg` c'est la seule chose à faire sur le serveur
|
||||
et le reste du travail sera réalisé par le client. Après avoir aussi installé
|
||||
`borg` sur le client, on peut déjà commencer à faire quelques sauvegardes.
|
||||
Cependant, si l'on utilise que borg pour les faire (ce qui est possible), on se
|
||||
retrouvera avec des commandes bien trop longues dans lesquels on passe notre
|
||||
temps à spécifier des arguments plusieurs fois : comment contacter le serveur ?
|
||||
où stocker les sauvegardes ? quel politique de rétentions garder ? que faut-il
|
||||
sauvegarder ? Borgmatic est un frontend de borg qui définir une bonne fois pour
|
||||
toutes ses options dans un fichier de configuration pour ensuite n'avoir plus
|
||||
qu'à faire des appels simples à borgmatic qui pasera à borg tous les paramètres
|
||||
dont il a besoin. Le but n'est pas ici d'être exhaustif sur ce que peut/doit
|
||||
contenir ce fichier de configuration. Je vous redirige pour ça vers la
|
||||
[documentation
|
||||
officielle](https://torsion.org/borgmatic/docs/reference/configuration/). Ici,
|
||||
je vais plus chercher à vous donner quelques options minimales et des exemples
|
||||
d'utilisations de borgmatic. Commençons par donner le contenu d'un fichier de
|
||||
configuration partiel :
|
||||
|
||||
```txt
|
||||
location:
|
||||
source_directories:
|
||||
- /etc
|
||||
- /var
|
||||
repositories:
|
||||
- borg@backup-server:/folder/to/bacup/to
|
||||
|
||||
storage:
|
||||
encryption_passphrase: PASSPHRASE
|
||||
ssh_command: ssh -i /etc/borgmatic/id_ed25519_borg
|
||||
|
||||
retention:
|
||||
keep_daily: 4
|
||||
keep_monthly: 6
|
||||
```
|
||||
|
||||
Dans la section `location`, on définit deux choses : ce que l'on souhaite
|
||||
sauvegarder et où on souhaite le sauvegarder. Ici on va backupé le `/etc` et
|
||||
`/var` de notre client sur un serveur distant qu'on contactera via ssh. Dans la
|
||||
section suivante, `storage`, on définit quelques options relatives au stockage
|
||||
et à comment y accéder. Premièrement, on donne la passphrase de chiffrement des
|
||||
sauvegardes (attention, si elle est perdue, les sauvegardes ne seront plus
|
||||
accessibles). Ensuite, on précise comment accéder au serveur (ici, l'information
|
||||
importante est où se trouve la clé privée pour pouvoir se connecter). Enfin,
|
||||
dans la section retention, on définit notre politique de retention : le serveur
|
||||
ne doit stocker qu'une backup quotidienne sur les 4 derniers jours, et une
|
||||
backup mensuelle sur les 6 derniers mois.
|
||||
|
||||
En supposant les autres options de fonctionnement renseignées dans le fichier,
|
||||
que je ne détaillerais pas ici, il est maintenant possible de commencer à
|
||||
utiliser le logiciel et faire nos premières sauvegardes.
|
||||
|
||||
### Créer l'archive de stockage
|
||||
|
||||
La commande suivante permet de créer l'archive où seront stockées les
|
||||
sauvegardes sur le serveur.
|
||||
|
||||
```bash
|
||||
borgmatic init -e repokey
|
||||
```
|
||||
|
||||
### Faire une première sauvegarde
|
||||
|
||||
Pour faire une sauvegarde, rien de plus simple, on appelle simplement le
|
||||
programme borgmatic sans option. Il est néanmoins possible de demander un
|
||||
affichage plus verbeux pour le débogage.
|
||||
|
||||
```bash
|
||||
borgmatic
|
||||
borgmatic -v 2
|
||||
```
|
||||
|
||||
### Lister les différentes sauvegardes dans l'archive
|
||||
|
||||
```bash
|
||||
borgmatic list
|
||||
```
|
||||
|
||||
### Monter une sauvegarde précise sur un point de montage
|
||||
|
||||
```bash
|
||||
borgmatic mount --archive {{ nom de l'archive ou latest pour la dernière }} --mount-point /mnt --path {{ chemin à monter de l'archive }}
|
||||
borgmatic mount --archive latest --mount-point /mnt --path etc/nginx/nginx.conf
|
||||
```
|
||||
|
||||
### Automatiser les backups
|
||||
|
||||
Pour réaliser des backups périodique, on peut en laisser la charge à un cron ou
|
||||
à systemd à l'aide d'un timer.
|
Loading…
Reference in New Issue