Sauvegarde chiffrée automatique sur HubiC avec Attic / Borg Backup

J'ai commencé à utiliser Attic Backup il y a près d'un an, sur les recommandations d'un collègue. Aujourd'hui, j'utilise son fork Borg, pour sauvegarder automatiquement mes documents sur HubiC, de manière sécurisée. Petit tour d'horizon.

Attic et Borg Backup

Attic Backup

Attic est un outil de sauvegarde incrémentielle écrit en Python. Son principal intérêt ? Proposer un moyen efficace et sécurisé pour sauvegarder vos données. La sauvegarde incrémentielle vous permet de l'utiliser quotidiennement (seules les modifications sont stockées) et de retourner à une version bien précise de vos fichiers.

Attic Backup est particulièrement intéressant sur plusieurs points :

  • optimisation de l'espace de stockage : mon répertoire à sauvegarder fait 12 Go, la sauvegarde incrémentielle en fait moins de 5 ;
  • chiffrement des données (AES 256) côté client ;
  • sauvegarde distante via SSH ;
  • possibilité de monter une sauvegarde (à une date précise) comme simple système de fichiers.

Actuellement, Attic est proposée dans sa version 0.16. Je vous recommande de l'installer dans sa dernière version, et donc de ne pas forcément utiliser celle proposée dans les dépôts de votre distribution Linux.

Borg Backup

Borg Backup est un fork d'Attic, créé en mars 2015, suite à quelques mésententes au sein de la communauté. Son principal intérêt étant l'activité de sa communauté, qui corrige pas mal de bugs d'Attic, notamment au niveau de la gestion du cache. J'y suis passé pour cette raison.

Il existe là aussi plusieurs manières de l'installer. Je l'utilise personnellement via un container Docker.

HubiC

HubiC est un système de stockage en ligne (comme Dropbox ou Google Drive) s'adressant aux particuliers, proposé par OVH, avec des offres plutôt intéressantes et un hébergement des données en France.

HubiC propose un client Linux. Lors de mes tests, il n'avait pas réussi à me convaincre : beaucoup de lenteurs, quelques plantages, pas de sauvegarde chiffrée incrémentielle, etc. Les clients Windows et Mac ont l'air, en revanche, bien plus stables et aboutis.

Utiliser Attic ou Borg avec HubiC

Avant propos

Avant-tout, sachez que la solution proposée ici ne s'adresse pas aux professionnels qui veulent sauvegarder l'intégralité de leurs serveurs. Ne rêvez pas, ça ne fonctionnera pas avec des centaines de Go. D'autant qu'HubiC a annoncé avoir limité sa bande passante à 10 Mbps. Cette solution s'adresse donc aux particuliers ayant au maximum quelques Go à sauvegarder ; les pros préféreront une solution pro.

Montage HubiC avec HubicFuse

À l'heure où j'écris ces lignes, j'utilise HubicFuse pour faire un monter mon espace HubiC comme un système de fichiers classique. Ce n'est pas très rapide et pas toujours très stable, mais ça fonctionne pour mon usage.

Pour information, HubiC a annoncé récemment la création d'un petit soft, appelé svfs et encore en bêta, permettant d'arriver au même résultat. Je n'ai pas encore testé, mais ça semble prometteur. L'utilisation d'HubiC directement en SSH devrait également arriver, d'après ce tweet d'Octave Klaba.

Sur Debian, l'installation est relativement simple. En root :

1. Installez les dépendances nécessaires

aptitude install build-essential libcurl4-openssl-dev libxml2-dev  \
libssl-dev libfuse-dev libjson0-dev pkg-config unp fuse-utils libmagic-dev

2. Clonez directement les sources puis installez HubicFuse :

git clone https://github.com/TurboGit/hubicfuse.git
cd hubicfuse
./configure
make
make install

3. Créez une application développeur sur HubiC

Une fois connecté à HubiC, allez dans Mon compte » Développeurs » Ajouter une application puis suivez les instructions.

4. Générez le refresh_token attendue par l'application :

./hubic_token

puis répondez aux questions. Cela va générer 3 variables (client_id, client_secret, client_secret) à renseigner dans le fichier ~/.hubicfuse.

5. Et voilà, il ne vous reste plus qu'à monter votre espace HubiC comme système de fichiers :

mkdir /mnt/hubic
hubicfuse /mnt/hubic -o noauto_cache,sync_read,direct_io,big_writes

Utilisation de Borg Backup sur notre montage HubiC

À partir de maintenant, l'utilisation de Borg backup est très classique, je vous laisse vous référer à la documentation :

1. Création d'un nouveau repository Borg :

borg init /mnt/hubic/mon-backup.borg --encryption=keyfile

2. On sauvegarde nos documents :

borg create --stats --progress /mnt/hubic/mon-backup.borg::`date +%Y-%m-%d--%H:%M:%S` ~/Documents

Les commandes sont très semblables avec Attic.

Alternative

Il existe de nombreuses alternatives :

  • Une fois HubiC monté via hubicfuse, vous pouvez utiliser rsync. Attention cependant à bien utiliser les flags --inplace et --size-only notamment, car le montage via hubicfuse ne permet pas de manipuler les dates des fichiers.
  • L'outil Rclone permet de faire des sauvegardes sur différents services cloud, dont HubiC. Il a des fonctionnalités très intéressantes, j'y reviendrai dans un nouvel article.

Vos réflexions