Ceci est une ancienne révision du document !
CurlFtpFS
Article en cours d'élaboration commentaires et et discussion ici.
A quoi ça sert ?
CurlFtpFS sert à monter sur son système de fichier, un autre système de fichier distant, à travers une connexion FTP, le tout avec des droits utilisateur. L'avantage est de manipuler les données distantes avec n'importe quel gestionnaire de fichier (Nautilus, Konqueror, ROX, ou même la ligne de commande), ce qui est bien plus pratique que les commandes consoles de ftp ou des logiciels comme gFTP.
Installation
Tout d'abord, il vous faudra installer et configurer FUSE, dont dépend CurlFtpFS.
CurlFtpFS n'est pas disponible en paquet Ubuntu, il faut donc le compiler (correction : le paquet curlftpfs est disponible pour Feisty, branche universe). Ce n'est pas un gros programme, la compilation est simple et rapide. Premièrement, il faut récupérer les dernières sources sur le site officiel (curlftpfs 0.9 est la dernière version actuellement), vous pouvez également suivre les instructions qui suivent :
~Checkinstall va vous créer un .deb et l'ajouter directement dans votre base de donnée, ce qui veut dire que pourrez le désinstaller directement dans synaptic, et le réinstaller grâce au .deb.
ATTENTION ⇒ Pour les distrib DAPPER 6.06 Lors de la compilation, le ./configure ne marche pas car il cherche une librairie libcurl plus récente que celle distribuée par la dapper. La solution est donc une fois l'install réalisée, de télécharger les dernières sources de curl (télécharger) et de les compiler (./configure && make && sudo make install). Une fois les librairies installées par votre compil de curl vous pourrez continuer la procédure normale (compil de curlftpfs comme décrite ci-dessus…
Checkinstall va vous demander s'il doit créer la doc, validez, puis une courte description (à finir par une ligne vide), libre à vous de mettre ce que vous voulez, exemple "CurlFtpFS est un système de fichier pour accéder aux serveurs FTP basé sur FUSE et libcurl.". Ensuite, un menu vous demande si vous êtes d'accord avec les informations générées. Je vous conseil de changer le nom (2) pour curlftpfs. Une fois que tout est correct, validez avec "entrer".
Pour désinstaller : sudo dpkg -r curlftpfs__
ne pas oublier d'ajouter son utilisateur à Fuse :
~$ sudo adduser $USER fuse
Et relancer sa session pour que l'ajout au groupe soit pris en compte.
Utilisation en mode Console
Rien de plus simple maintenant :
~$ mkdir tmp ~$ curlftpfs ftp://mon.serveur.org tmp -o user=monlogin:monmdp
si votre mot de passe contient des caractéres spéciaux du genre # ou ! il vous faut échapper ces caractéres par \. Un # sera transformé alors par un \# .
Pour démonter, vérifier que pour rien n'accède au point de montage (fichier ouvert ou gestionnaire de fichier), et effectuer la commande
~$ fusermount -u tmp
Puis y coller le code suivant : bas de page
ne pas oublier de le rendre exécutable :
chmod u+x curlftpfs-dialog.sh
Exécutez le script directement dans votre gestionnaire de fichiers ou dans une console, et vous obtiendrez une fenêtre nécessitant quelques renseignement comme :
- l'adresse du serveur
- une case à cocher pour une connexion anonyme
- le nom de l'utilisateur distant
- le mot de passe
- le nom du point de montage
Une fois tous les champs renseignés, cliquez sur mount. Un répertoire du nom du point de montage doit se créer et votre connexion montée sur le système de fichiers !!
Quand vous avez fini, quittez le répertoire monté et faites Umount. Il est possible de sauvegarder la configuration en appuyant sur Save.
Pour recharger la configuration, il faut passer un fichier .eftp en paramètre du script (en faisant un glisser-déposer avec un gestionnaire de fichiers).
Suggestion d'utilisation
Créez quelque part dans votre arborescence, un répertoire FTP ( /home/toto/Network/FTP ).
Déplacez le script dans ce répertoire.
Remplissez la fenêtre normalement, testez la connexion et sauvegardez.
Vous obtenez des fichiers .eftp, comme par exemple "toto@hebergeur.org.eftp" "tata@sitewoueb.fr.eftp".
Glissez/déposez le fichier toto@hebergeur.org.eftp sur curlftpfs-dialog.sh et la fenêtre s'ouvre directement avec les informations renseignées.
Code de curlftpfs-dialog.sh
#! /bin/bash export DIR=$PWD if [ $1 ] ; then export DIR=`dirname $1` while read ligne ; do first=1 val="" for mot in $ligne ; do if [ $first -eq 1 ] ; then var=$mot first=0 else val=$val$mot" " fi done export $var="$val" done < $1 fi if [ -z "$DISTUSER" ] ; then export DISTUSER=$USER fi if [ -z "$MOUNT" ] ; then export MOUNT=$DISTUSER$SERVEUR fi export MAIN_DIALOG=' <vbox> <hbox> <text><label>Serveur:</label></text> <entry> <input>echo $SERVEUR</input> <variable>SERVEUR</variable> </entry> </hbox> <hbox> <checkbox> <label>Cocher pour l authentification par défaut</label> <variable>CHECKBOX</variable> <default>no</default> <action>if false enable:DISTUSER</action> <action>if false enable:PASSWORD</action> <action>if false OPT=-o user=$DISTUSER:$PASSWORD</action> <action>if true disable:DISTUSER</action> <action>if true disable:PASSWORD</action> <action>if true OPT=</action> </checkbox> </hbox> <hbox> <text><label>User:</label></text> <entry> <input>echo $DISTUSER</input> <variable>DISTUSER</variable> <action>OPT=-o user=$DISTUSER:$PASSWORD</action> </entry> </hbox> <hbox> <text><label>Password:</label></text> <entry> <visible>password</visible> <variable>PASSWORD</variable> <action>OPT=-o user=$DISTUSER:$PASSWORD</action> </entry> </hbox> <hbox> <text><label>Mount Name:</label></text> <entry> <input>echo $MOUNT</input> <variable>MOUNT</variable> </entry> </hbox> <hbox> <button> <label>Mount</label> <action>fusermount -u $DIR/$MOUNT</action> <action>rmdir $DIR/$MOUNT</action> <action>mkdir $DIR/$MOUNT</action> <action>curlftpfs ftp://$SERVEUR $DIR/$MOUNT $OPT</action> </button> <button> <label>Umount</label> <action>fusermount -u $DIR/$MOUNT</action> <action>rmdir $DIR/$MOUNT</action> </button> <button> <label>Save</label> <action>echo SERVEUR $SERVEUR | tee $DIR/$MOUNT.eftp</action> <action>echo DISTUSER $DISTUSER | tee -a $DIR/$MOUNT.eftp</action> <action>echo MOUNT $MOUNT | tee -a $DIR/$MOUNT.eftp</action> </button> </hbox> </vbox> ' gtkdialog --program=MAIN_DIALOG
Si vous obtenez une erreur en ligne 68, c'est que le paquet gtkdialog n'est pas installé, faire :
~$ sudo apt-get install gtkdialog
Montage automatique au démarrage
Pour monter automatiquement un site FTP au démarrage, il vous suffit d'ajouter à votre fichier /etc/fstab la ligne suivante :
curlftpfs#login:password@ftp.host.com /mnt/host fuse rw,uid=500,user,auto 0 0
Vous pouvez aussi monter un sous-répertoire ou encore remonter à un répertoire parent de votre répertoire de départ :
curlftpfs#login:password@ftp.host.com/../chemin/vers/le%20repertoire /mnt/host fuse rw,uid=500,user,auto 0 0
Vous remarquerez au passage qu'un espace dans le nom du répertoire se traduit par %20 dans le chemin.
Utilisation via Fusible
Fusible est une interface graphique pour tous points de montage FUSE. Un plugin pour CurlFTPFS est prévu et permettra d'accéder à toutes les fonctionnalités et options de CurlFTPFS et de FUSE.