PROJET AUTOBLOG


Korben

Site original : Korben

⇐ retour index

Synchronisez votre Linux avec Hubic d’OVH

mercredi 22 novembre 2017 à 14:19

Éric, lecteur de Korben.info m'a gentiment proposé un script et un tuto permettant de mettre en place une synchro Rsync entre votre ordinateur ou votre serveur et Hubic, l'espace de stockage d'OVH. Comme le client officiel pour Linux est un poil mort-vivant, j'ai trouvé que c'était une bonne idée de partager ça ici avec vous, histoire que vous puissiez bénéficier directement sur votre Linux d'un système de fichier de 5 à 10 To.

Si vous avez des remarques à ajouter ou des corrections à faire, n'hésitez pas. Encore merci à Éric d'avoir pris le temps de rédiger tout cela pour la communauté.

=====

Le but de ce Tuto est de présenter la mise en place d’un script de synchronisation basé sur l’indispensable et (bien ?) connu « rsync », entre un ordinateur local et un espace Cloud Hubic, mis à disposition par la Société OVH. L’objet n’est évidemment pas de présenter le client fourni par OVH, plutôt simple à mettre en place, et performant (quand il fonctionne ;-)), mais de proposer une solution tierce ou de secours, qui permet également un accès direct à l’espace de stockage comme un système « local », qui va de 25 Go (proposé gratuitement par OHV) à 10 To, pour 5 €/mois. J’ai également fait en sorte d’augmenter au maximum les performances de synchronisation par rapport à une « simple » commande rsync.

Ce script doit être analysé, et utilisé en fonction des besoins, sans aucune garantie : j’ai moi-même supprimé quelques gigas de mes données personnelles en le mettant au point. Heureusement que j’avais des sauvegardes, faites-en autant.

Montage du système de fichiers Hubic.

L’accès à l’espace de stockage se fait au travers de l’outil hubicfuse et ne sera pas détaillé ici, car d’autres l’ont déjà très bien fait. J’y amène juste quelques personnalisations qui peuvent servir.

Moi j’ai suivi cette page, simple et bien expliquée.

Voici mon fichier de config ".hubicfuse" après avoir suivi le Tuto de P. Diancourt :

client_id=api_hubic_XXXXXXXXXXXXXXXXXXXXXXXXXXX
client_secret=XXXXXXXXXXXXXXXXXXXXXX
refresh_token=XXXXXXXXXXXXXXXXXXXXXXX
cache_timeout = 600
temp_dir = /home/mon_user/tmp

get_extended_metadata = true
curl_verbose = false
curl_progress_state = true
cache_statfs_timeout = 15
debug_level = 0
enable_chmod = false
enable_chown = false

Ajustements personnels :

hubicfuse /home/mon_user/hubic rw,noauto_cache,sync_read,allow_other,no_splice_write,no_splice_move

Vous n’êtes pas obligé de monter ce système de façon permanente, le script fourni plus loin le fera si nécessaire.

Comme le précise bien Pierre Diancourt, ce système de fichiers subit quelques limitations en termes de performances et de fonctionnalités, mais pourra fort bien s’accommoder d’un script basé sur rsync configuré en conséquence.

Le script de synchronisation HubicTool

Ce script, baptisé un peu pompeusement « hubictool » amène 6 arguments plutôt basiques :

Ce script est fortement inspiré de celui que l’on peut trouver ici dans lequel le principe est de parcourir les répertoires avec un « find » et de lancer un thread rsync par répertoire. Le nombre de thread est limité pour ne pas mettre à genou la machine.

J’en ai repris le principe de parallélisation des threads rsync, mais en parallélisant au niveau des fichiers et pas des répertoires. Cela s’adapte mieux à des répertoires avec une forte disparité dans la taille des fichiers. Par exemple une multitude de répertoires avec des petits fichiers (DOC bureautiques, numérisation de papiers administratifs, etc.), et un répertoire avec des films. En parallélisant au niveau répertoire, les petits fichiers sont vite synchronisés, et il reste souvent un seul processus rsync pour le répertoire avec les gros fichiers.

J’ai également repris ce script pour qu’il travaille par niveau de répertoire (il synchronise d’abord la racine, puis les répertoires de niveau 1, 2 … <= $maxdepth

Le script est récupérable ici.

Voici quelques explications sur le code.

Le premier bloc permet d’initialiser les variables les plus courantes : les répertoires, exclusions et point de montage pour hubicfuse. Notez que les exclusions désignent « ce qui commence par ». Les différents PATTERNS sont séparés par des | (pipes). Les slashes sont échappés par des antislashes. Par exemple l’exclusion /_NO_ permet d’exclure rapidement tout répertoire commençant par « _NO_ ». Voir la commande egrep (REGEXP) pour la notation.

On trouve ensuite la fonction principale de synchronisation, avec ses variables, dont certaines peuvent être ajustées :

La fonction hubicmount : comme son nom l’indique monte le système de fichiers hubic, celui-ci n’est pas démonté quand le script se termine normalement.

Le « main » se veut simple puisqu’il est basé sur un « case » énumérant les 3 arguments de ce script : -sync, -backup, -restore.

Enfin un appui sur Ctrl-C pendant l’exécution du script permet de sortir en tuant TOUT les process « rsync ». Ceci n’est possible (pour le moment) qu’en tuant également le process hubicfuse.

C’est pourquoi il vous est demandé de faire un démontage forcé du système de fichier hubicfuse (sudo umount -l hubicfuse) en quittant, sinon il apparaîtra toujours comme monté pour le système.

=====

Merci à Eric pour le tuto et encore bravo pour ce petit script bien pratique. J'espère qu'il vous servira et si vous avez des remarques à faire dessus, les commentaires sont ouverts.

Cet article merveilleux et sans aucun égal intitulé : Synchronisez votre Linux avec Hubic d’OVH ; a été publié sur Korben, le seul site qui t'aime plus fort que tes parents.