Mon CV

Utiliser HubiC comme espace de backup avec Duplicity

11 mars 2014

Il y a quelques temps, je vous expliquais comment mettre en place un système de sauvegardes chiffrées avec Duplicity. Je vous propose de voir aujourd’hui comment adapter ce process pour utiliser HubiC, car l’un des soucis majeurs avec les sauvegardes est de disposer d’un espace distant de stockage suffisamment volumineux. Et autant le dire HubiC est un très bon candidat.

La solution HubiC d’OVH est une solution de cloud personnel très compétitive sur le plan tarifaire. L’offre démarre avec 25 Go gratuits, 100 Go de stockage pour 1€ par mois et 10 To de stockage pour 10 € par mois. Autant dire que vous allez pouvoir faire autant de sauvegardes que vous le souhaitez.

Hubic

Le problème, par contre, c’est que cette solution de stockage personnel, que l’on souhaite utiliser comme destination de stockage pour notre backup incrémental, ne propose pas d’interface de connection FTP. Fût un temps où le protocole Webdav était actif (mais pas supporté officiellement) … mais aujourd’hui, HubiC repose sur  OpenStack / Swift.

Certains bricoleurs ont donc cherché comment utiliser l’API Swift, qui est bien documentée, étant notamment utilisée par le service d’hébergement de RackSpace, Cloud Files. Le hic, c’est que le protocole d’authentification utilisé par HubiC n’est pas tout à fait standard et que la phase d’authentification n’est pas identique à celle de Swift.

J’ai testé pas mal de solutions, l’une permettant de monter votre dossier HubiC comme un point de partage réseau, l’autre permettant de créer une sorte de proxy accessible et FTP et faisant l’interface avec le container OpenStack, ou bien encore un client Swift.

Et après pas mal de tentatives pas complètement satisfaisantes, j’ai trouvé sur un blog quelqu’un de suffisamment astucieux pour avoir modifié la librairie python-cloudfiles, utilisée par Duplicity pour le support du service CloudFiles pour supporter HubiC. J’ai repris de mon côté son travail pour supprimer un message d’alerte. Voici en détails comment la tout mettre en place.

Etape 1 : patcher la lib python-cloudfiles pour supporter l’authentification Hubic

Dans votre terminal :

apt-get install python-setuptools git
cd /usr/src
git clone https://github.com/yvangodard/python-cloudfiles-hubic.git
cd python-cloudfiles-hubic
python setup.py  install
rm -R /usr/src/python-cloudfiles-hubic

Etape 2 : enregistrer une application pour utiliser l’API

Rendez-vous sur votre compte HubiC, et dans les paramètres, choisissez “Ajouter une application” puis entrez les paramètres suivants :

  • Nom : un_nom_de_votre_choix
  • Domaine de redirection : http://localhost/

Et récupérez le client_id et le client_secret :

HubiC API

Etape 3 : tester Duplicity avec le support de HubiC

Si ce n’est pas fait, c’est le moment pour installer Duplicity :

apt-get install duplicity

Et vous pouvez ensuite faire quelques tests à l’aide des commandes suivantes. Pensez à remplacer les variables suivantes :

  • CLOUDFILES_USERNAME contiendra votre adresse de connexion associée à votre compte HubiC
  • CLOUDFILES_APIKEY contiendra le mot de passe de votre compte HubiC
  • CLOUDFILES_AUTHURL contiendra les client_id et le client_secret récupérés à l’étape 2, sous la forme : CLOUDFILES_AUTHURL="hubic|client_id|client_secret|http://localhost/"
# Désactiver le bash_history et supprimer les anciennes variables
unset HISTFILE
unset CLOUDFILES_USERNAME
unset CLOUDFILES_APIKEY
unset CLOUDFILES_AUTHURL
# Entrons les variables 
export CLOUDFILES_USERNAME=monloginhubic@monfai.fr
export CLOUDFILES_APIKEY=MotDePasseDeMonCompteHubic
export CLOUDFILES_AUTHURL="hubic|api_hubic_XXXX|YYYYY|http://localhost/"
# Lançons une première sauvegarde de test
duplicity /root cf+http://default
# Observons l'état
duplicity collection-status cf+http://default
# Listons les fichiers distants 
duplicity list-current-files cf+http://default
# Testons la restauration d'un fichier 
duplicity --file-to-restore /etc/ cf+http://default /tmp/bash_alias_recup

Pour réaliser le backup, il vous sera demandé d’entrer une passphrase (utilisée pour le chiffrement). Vous pouvez en générer une ici en créant un mot de passe de 50 caractères par exemple.

Pour vérifier que tout fonctionne, vérifiez en ligne, sur votre espace HubiC que les volumes de backup ont été uploadés. Vous devriez trouver là tout une liste de fichier commençant pas “duplicity-******”. Sélectionnez-les tous, supprimez les.

Ensuite nous allons faire un peu de ménage en local :

duplicity cleanup cf+http://default

Comme l’explique David Mercereau sur son blog, il ne e semble pas possible d’écrire dans un sous-répertoire. Si vous souhaitez isoler les fichiers de backup, il est possible d’écrire dans un autre “container” sur HubiC (autre que “default”), par exemple en faisant votre backup ainsi :

duplicity /root cf+http://backup

Vous ne verrez pas en ligne les fichiers sans modifier manuellement l’URL ainsi https://hubic.com/home/browser/#backup/ (n’oubliez pas ‘/’ à la fin) :

HubiC

Etape 4 : mettre en place les scripts de backup de Duplicity

Comme je l’avais indiqué dans mon premier billet sur Duplicity, nous allons installer ces script dans le répertoire /usr/local/sbin :

# On récupère les scripts
wget -O /usr/local/sbin/master-backup-cleanup.sh --no-check-certificate https://raw.github.com/yvangodard/Scripts-Utiles/master/duplicityscripts/scripts/master-backup-cleanup.sh
wget -O /usr/local/sbin/master-backup-listing.sh --no-check-certificate https://raw.github.com/yvangodard/Scripts-Utiles/master/duplicityscripts/scripts/master-backup-listing.sh
wget -O /usr/local/sbin/master-backup-restore.sh --no-check-certificate https://raw.github.com/yvangodard/Scripts-Utiles/master/duplicityscripts/scripts/master-backup-restore.sh
wget -O /usr/local/sbin/master-backup-status.sh --no-check-certificate https://raw.github.com/yvangodard/Scripts-Utiles/master/duplicityscripts/scripts/master-backup-status.sh
wget -O /usr/local/sbin/master-backup-verify.sh --no-check-certificate https://raw.github.com/yvangodard/Scripts-Utiles/master/duplicityscripts/scripts/master-backup-verify.sh
wget -O /usr/local/sbin/master-backup.sh --no-check-certificate https://raw.github.com/yvangodard/Scripts-Utiles/master/duplicityscripts/scripts/master-backup.sh

# On les rends exécutables
sudo chmod +x /usr/local/sbin/master-backup*

Je vous invite ensuite à vous reporter à mon premier billet sur Duplicity pour voir comment utiliser ces scripts. Il vous faudra juste éditer le fichier de configuration (par exemple /etc/master-backup.conf) et y entrer les variables suivantes :

  • URL=cf+http://default (ou tout autre containter, comme indiqué à l’étape 3)
  • HUBICUSER= votre adresse de connexion associée à votre compte HubiC
  • HUBICPASSWORD= votre mot de passe de connexion associée à votre compte HubiC
  • HUBICAPPID= client_id récupéré à l’étape 2
  • HUBICAPPSECRET= client_secret récupéré à l’étape 2
  • HUBICAPPURLREDIRECT=http://localhost/

Amusez-vous bien maintenant !

Posted in Unix et LinuxTags: