S'amuser avec FUSE.

Gazette Linux n°134 — Janvier 2007

Article paru dans le n°134 de la Gazette Linux de janvier 2007.

Traduction française par le Mage Perdu .

Relecture de la traduction française par Deny .

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

Introduction
Obtenir FUSE
Flickrfs
Curlftpfs : Montage de serveurs FTP
C'est tout ?
Une astuce
Conclusion

Introduction

Le système de fichier en espace utilisateur (FUSE, Filesystem in Userspace) est une véritable innovation du noyau Linux. Il permet aux utilisateurs de monter de manière homogène pratiquement tout en tant qu'un répertoire contenant des fichiers. Il permet ainsi d'effectuer un grand nombre d'opérations d'une manière totalement différente. Par exemple, imaginez un moyen d'utiliser votre espace GMail comme un disque local ou bien de monter votre page de photo Flickr dans un répertoire de votre machine. Déplacer des fichiers vers et à partir d'un service réseau deviendrait alors aussi simple qu'une copie de fichier entre des dossiers montés. Cela sonne bien vous ne trouvez pas ? Alors, essayez FUSE !

FUSE est disponible pour le noyau Linux, ainsi que pour FreeBSD© et OpenSolaris©. Il agit tel une couche entre le service que vous souhaitez « monter » en tant que système de fichier et le noyau, il permet ainsi d'accéder à ce service comme à une structure de fichiers ou de répertoires ordinaire. De même, c'est une API qui permet de programmer le fonctionnement du système de fichier. FUSE peut donc être utilisé dans n'importe quel contexte pourvu qu'il soit intéressant de représenter des éléments comme de simples fichiers.

Obtenir FUSE

Si vous utilisez le noyau linux 2.6.14 ou supérieur, il y a de fortes chances que FUSE soit déjà présent comme module. Dans le cas contraire, il suffit d'obtenir les sources à partir de la page web de FUSE et de les compiler pour votre noyau. Une fois terminé, vous pourrez vérifier que le module est correctement chargé avec la commande suivante :

sudo modprobe fuse

(Ou bien modprobe fuse en root)

Si aucune erreur ne survient, nous allons pouvoir utiliser FUSE. Il est possible d'automatiser le chargement de FUSE à chaque démarrage de votre machine. Pour cela, ajoutez une ligne contenant fuse dans le fichier /etc/modules.

De même assurez-vous de disposer des fichiers utiles à FUSE, ces derniers sont fournis par l'archive de FUSE, ou bien par le paquet fuse-utils correspond à votre distribution. Il est fortement recommandé d'utiliser FUSE avec un compte utilisateur standard plutôt que l'utilisateur root. S'ajouter au groupe fuse devrait suffire dans la plupart des distributions. Cette opération est généralement effectuée de la manière suivante :

adduser fuse

(Selon votre distribution, le dossier /dev/fuse peut appartenir à un autre groupe. vérifiez le avec ls -l /dev/fuse. Si c'est le cas, remplacez fuse par ce groupe dans la commande adduser.)

J'ai réalisé ces manipulations sous Debian GNU/Linux© mais elles ne diffèrent pratiquement pas d'une distribution à une autre.

Maintenant étudions deux exemples des systèmes de fichier FUSE parmi ceux que j'utilise.

Catégorie: Système de fichier
...  Imaginez un moyen d'utiliser votre espace Gmail comme un disque ou bien de monter votre page de photo Flickr comme dossier de votre machine. 

Flickrfs

Flickrfs est disponible sur la page personnelle de l'auteur. Il est écrit en Python et utilise l'API FUSE. Comme l'indique son nom, il permet de réaliser la plupart des opérations possibles sur le site du service Flickr à travers un système de fichier agréable.

Pour commencer à l'utiliser, il faut extraire le contenu de l'archive de Flickrfs. Modifiez ensuite le fichier config.txt pour définir la résolution de votre choix, votre navigateur, ainsi qu'un délai d'attente. Enfin, créez un répertoire .flickrfs dans votre répertoire personnel et placez-y le fichier config.txt Choisissez un point de montage pour votre compte Flickr; j'ai choisi ~/Flickr, n'importe quel autre répertoire aurait fait l'affaire. Si vous utilisez un serveur mandataire(Proxy) pour accéder à internet, indiquez-le en utilisant la commande export http_proxy="http://serveur_proxy:port" avec l'adresse et le port de votre serveur. Il suffit ensuite de faire :

python flickrfs.py ~/Flickr

Vos collections seront automatiquement chargées. Pour voir l'ensemble de vos photos, créez un répertoire nommé userinput>stream et déplacez-vous-y à l'aide de la commande cd ou de votre gestionnaire de fichiers ou de photos (Konqueror, Nautilus, Gwenview, F-spot, pour n'en citer que quelques-uns). Ce dossier contiendra toutes vos images Flickr. De plus, il existe deux sous-répertoires dans un répertoire tags, nommés public et personal. Pour visualiser toutes les images que vous avez étiquetées tag1, tag2 et tag3, créez simplement un répertoire nommé tag1:tag2:tag3 dans personal et déplacez-vous-y avec la commande (cd) ou chargez-le avec votre gestionnaire de fichiers. Un sous-répertoire semblable dans le répertoire public aurait permis d'afficher les photos qui portent cet étiquetage chez tous les autres utilisateurs. Pour récupérer ces photos, il suffit ensuite de les copier vers un répertoire de votre disque dur.

Bien d'autres fonctionnalités sont disponibles, comme le chargement (upload) qui devient une copie, l'édition des metadonnées, le changement de la date, de l'heure, des droits d'accès, ou même de la licence etc. voir http://manishrjain.googlepages.com/flickrfs pour plus d'informations.

Pour démonter ce répertoire lorsque vous aurez fini d'utiliser votre compte flickr, exécutez simplement fusermount de la manière suivante :

fusermount -u ~/Flickr

remplacez ~/Flickr par votre point de montage.

Curlftpfs : Montage de serveurs FTP

Il s'agit de quelque chose que j'aime vraiment ! Pouvoir parcourir le contenu d'un serveur FTP comme s'il s'agissait d'un dossier de votre propre ordinateur ! Pour cela, téléchargez simplement Curlftpfs à partir de la page Curlftpfs et installez-le en utilisant les commandes traditionnelles ./configure; make; make install ou bien installez le paquet disponible pour votre distribution. Faites ensuite quelque chose comme :

	[kumar@debian ~] mkdir serveur_free
	[kumar@debian ~] curlftpfs ftp.free.fr serveur_free/
	[kumar@debian ~] cd serveur_free/
	[kumar@debian ~/serveur_free] ls
	lost+found  mirrors  MPlayer  nzb  pub  stats  tmp
      

Dans mon cas, j'ai utilisé serveur_free comme point de montage du serveur FTP. Il est aussi possible de monter un serveur FTP en vous authentifiant, ainsi vous pourrez même y charger des fichiers. Faites curlftpfs -h pour savoir comment indiquer vos nom d'utilisateur et mot de passe, obtenir des droits d'écriture et utiliser un serveur mandataire (Proxy). Pour effectuer le démontage, utilisez fusermount -u ~/serveur_free.

Il est aussi possible d'ajouter la ligne suivante à votre fichier /etc/fstab :

curlftpfs#ftp.free.fr /home/<utilisateur>/serveur_free fuse rw,uid=500,user,noauto      0   0

Dans ce cas, il suffit d'utiliser la commande mount /home/<utilisateur>/serveur_free pour monter le serveur et umount /home/<utilisateur>/serveur_free pour le démonter.

Pensez à changer l'uid 500 par celle que vous aurez obtenue dans un terminal avec la commande id.

C'est tout ?

Alors, êtes-vous intéressés ? Ne dites pas non avant d'avoir vu toutes les autres possibilités présentes dans la liste des systèmes de fichiers FUSE. Il y a plusieurs systèmes de fichiers très utiles à essayer. Qui plus est, FUSE ne se limite pas seulement aux services réseaux, il peut aussi agir comme couche d'interaction pour utiliser diverses systèmes de fichiers et périphériques externes. Par exemple gphotofs peut monter un appareil photo numérique compatible avec Gphoto dans un dossier. DVDfs quant à lui peut créer un lecteur à partir d'une structure de DVD vidéo. Un système de fichier pour Ipod est aussi disponible. Les possibilités de FUSE sont sans limites !

Une astuce

Avant de terminer, je vais vous donner une astuce qui vous sera certainement utile. Il se peut, le plus souvent avez des connexions capricieuses, qu'un montage réseau FUSE cesse de répondre correctement et pose problème. Dans ce cas, il est parfois impossible de faire un démontage propre avec la commande fusermount -u. Il est tout de même possible de forcer un démontage retardé ou paresseux avec la commande fusermount -u -z. Vous pourrez alors essayer de le monter à nouveau.

Conclusion

Il est vrai que cet article fut très succinct, j'espère tout de même que ces deux exemples vous auront permis de relever l'étendu des possibilités de FUSE et sa simplicité d'emploi. Je vous invite maintenant à aller plus loin avec FUSE en montant tout (ou presque) comme de simples systèmes de fichier. N'hésitez pas à en essayer d'autres, tout particulièrement les plus populaires, comme gmailfs, smbnetfs et bien d'autres.

Kumar Appaiah est étudiant à l'IITM (Indian Institute of Technology Madras) où il prépare un B.Tech:Electrical Engineering(équivalent d'une maîtrise) et un M.Tech:Communication Engineering(équivalent d'un Master). Il utilise GNU/Linux depuis 5 ans, et assure que les logiciels libres lui ont permis de travailler plus facilement, plus rapidement, et plus efficacement. C'est un adepte de Debian GNU/Linux et Il aime utiliser Mutt, GNU Emacs, XCircuit, GNU Octave, SiPy, Matplotlib et ConTeXt.

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://www.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.