Copyright © 2007 Appaiah Kumar
Copyright © 2008 Le Mage Perdu
Copyright © 2008 Deny
Article paru dans le n°134 de la Gazette Linux de janvier 2007.
Traduction française par le Mage Perdu
<mageperdu CHEZ orange POINT fr>
.
Relecture de la traduction française par Deny
<deny CHEZ monaco POINT net>
.
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
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.
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 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.
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.
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 !
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.
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.
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.