Mardi 4 décembre 2018

Cher journal,

Suite à l'entrée de journal au sujet des backup le premier du mois, j'ai fini par troquer bup pour borg.

Pour faire simple, Borg, c'est comme Bup, les limitations en moins, et les fonctionnalités en plus !

Rsync

Au début, je faisais mes sauvegardes opportunistes via rsync. C'est un outil à la fois simple et puissant, et qui a un avantage imbattable sur toutes les solutions de sauvegardes : le contenu des sauvegardes peut facilement être examiné, puisqu'au final, ce n'est qu'une copie des fichiers à sauvegarder dans un autre système de fichiers, voir sur une autre machine. Un exemple typique d'utilisation pour sauvegarder ses documents :

machine1$ rsync -axSH Documents/ machine2:/mnt/backup/machine1/Documents/

Le drapeau -a indique que rsync est en mode archivage, ce qui implique tout un tas d'options qui sont documentées dans le manuel. Le drapeau -x permet d'éviter de sauvegarder d'éventuels points de montage qui auraient été effectué dans un sous répertoire de Documents. Le drapeau -H permet de conserver les liens physiques ; peu de gens s'en servent, du moins sciemment, mais moi oui, et ça reste utile pour éviter la casse dans certains cas d'applications un peu curieuses. Le drapeau -S indique de fonctionner en mode fichiers épars (Sparse), ou creux pour utiliser une terminologie qui nous vient de l'algèbre linéaire ; cela évite de copier un pétaoctet complet quand ce dernier est constitué majoritairement de zéros qui prendraient des lustres à être transférés. Un exemple typique de fichier creux est un disque machine virtuelle encore vide : il pourrait faire 500 Gio, qemu-img ne mettrait que quelques secondes à le créer. Ces fichiers sont faciles à identifier avec du car leurs tailles réelles et apparentes sont très différentes :

$ du -sh vm/debian9b.qcow2
895M    vm/debian9b.qcow2

$ du -sh --apparent-size vm/debian9b.qcow2
8.1G    vm/debian9b.qcow2

Enfin, la copie est effectuée depuis machine1 via un tunnel SSH chiffré sur machine2 distante, qui héberge ce qu'on peut supposer être un disque de sauvegarde avec un répertoire dédié pour la machine1. Si ce n'est pas la première sauvegarde effectuée, la force de Rsync est que : les fichiers qui n'ont pas été modifiés, depuis la dernière copie, ne seront pas transférés à nouveau. En ajoutant le drapeau --delete, les fichier, n'existant plus dans le répertoire à sauvegarder, sont effacés de l'arborescence cible.

Cependant, Rsync ne permet pas de récupérer une sauvegarde que l'on aurait écrasé avec la sauvegarde suivante par erreur. Des outils comme rdiff-backup ou rsnapshot, basés sur rsync, ont vu le jour. Bien qu'en apparence simple, les retours que j'ai pu en avoir n'ont jamais été très convaincants. Enfin, Rsync reste subtil d'utilisation. Le comportement change en fonction de la présence des '/' à la fin des noms des répertoires par exemple.

Bup

Bien que d'implémentation plus compliquée, Bup a l'avantage sur Rsync de permettre la construction d'instantanés, accessibles après que les sauvegardes suivantes aient été effectuées au-dessus. Il implémente aussi de la correction d'erreur, via l'usage de la commande par2, pour ne pas perdre l'archive complète en cas de destruction d'un bloc disque. La commande bup ftp permet de naviguer facilement dans l'ensemble des sauvegardes d'un dépôt, et il me semble qu'il dispose de la possibilité de faire des montages FUSE. Enfin bup web permet de naviguer dans ses sauvegardes avec un outil se rapprochant d'une interface graphique, même si c'est encore assez cru.

Bup souffre d'une limitation, intrinsèque à son mode de stockage via un dépôt Git modifié, qui empêche les roulements. Après initialisation d'un dépôt Bup et la première sauvegarde, toutes les sauvegardes suivantes sur ce même dépôt sont incrémentales et différentielles, il est quasiment impossible de supprimer des backups pour libérer de l'espace sur un volume sans risquer de casser l'archive. Il faut reconstruire de nouveaux dépôt Bup à intervalles réguliers, par exemple une fois par mois, pour pouvoir effacer les anciens, vieux de trois mois ou plus par exemple.

Borg

Borg offre des tas de possibilités. Outre le fait de pouvoir effectuer un roulement glissant sur les sauvegardes, il permet de chiffrer les données, ce qui permet les sauvegardes hors site chez un hébergeur en lequel on ne peut pas avoir toute confiance. Les fonctionnalités de montage des sauvegardes dans le système de fichier sont également présentes. La lecture d'une sauvegarde sur une machine distante ne nécessite pas de transférer l'archive en premier, contrairement à Bup, en tout cas jusqu'à Debian 9.

Toutefois, les interfaces un peu graphiques sont plutôt inexistantes. La commande borg list est d'une ergonomie discutable, pour naviguer dans l'index des sauvegardes ; ainsi que borg extract, des l'instant où il faut un grain un peu fin pour les restaurations. La possibilité de rattacher les sauvegardes au système de fichier devrait aider un peu à contrer les difficultés liées à ce point  on peut même utiliser Rsync dedans, hé ! :^)

Resistance is futile!

La vitesse supérieure

Pour avoir une infrastructure plus souple, le seul moyen que j'ai en-tête serait de déployer des sauvegardes avec roulement, compression et chiffrement, à déclenchement automatisé, sur bandes, avec découpe de l'archive à l'octet près quand on arrive à la fin de la piste, histoire de pouvoir sauvegarder facilement des fichiers plusieurs téraoctets sur plusieurs supports, pour toutes les machines de la maison, soit une et demi. En prime, un bras robot chargerait les bandes automatiquement dans le lecteur, une fois en bout de piste. Un outil d'indexation devrait permettre de faire des recherches dans le temps et l'espace des fichiers sauvegardés.

Dans ce cas, la seule solution qui me vient en tête à être libre (elle fait tout de même partie du dépôt Debian main) est Bacula. Je n'ai rien contre déployer ça en entreprise, il y en a qui se servent de ce genre de solutions chez eux. Mais à la maison, ça me parait un peu surdimensionné.

Conclusion

Le sujet des sauvegardes mériterait un véritable article, plus qu'une simple entrée dans un journal. Je n'ai pas mentionné les stratégies de duplication des dépôts, les rythmes pour les sauvegardes hors site, etc. Il y a beaucoup à dire sur le sujet.

Le temps de la transition vers Borg, je conserve les sauvegardes Bup, afin de pouvoir y accéder si je découvre de la casse dans mes fichier. Si à l'expérience, l'outil est convaincant, mes dépôts Bup seront effacé...

...et si j'ai besoin de l'espace occupé par l'archive. Toute sauvegarde est précieuse.

[ICO]NameLast modifiedSize
[PARENTDIR]Parent Directory  -

  —