Accueil > [old] Information > Archives > Technologies > GNU / Linux / Réseau > Gedit - synchronisation de fichiers distants

Gedit - synchronisation de fichiers distants

Utilisation des outils externes

mardi 3 avril 2007, par Patrick Vincent

Situation

Ayant récemment rejoint le monde Linux (Ubuntu Edgy), j’ai longtemps cherché LA bonne application d’édition de code orientée Web. Mon besoin est notamment d’éditer des pages sur le serveur avec un outil de synchronisation local à l’enregistrement, de type Ultraedit sous Windows.

Voici la liste des solutions testées :
 fuse et curlftpfs

  • solution pratique pour accéder à des répertoires distants dans son home : fuse
  • problèmes récurrents de perte de connexion et de fiabilité des transferts (la version utilisée était en beta sous Edgy, elle devrait être plus stable sous Feisty). Je joins de ce fait le script utilisé qui pourrait être utile à l’avenir : Monte_FTP.sh.

 Anjuta, jedit, Kate, KWrite, Quanta+, Eclipse

  • soit trop simples, soit trop compliqués, les editeurs testés ne comportaient pas (de mon expérience) de solution pour synchroniser, ou parfois ouvrir, les fichiers distants en local.

 vi et autres emacs

  • le retour à la ligne de commande est difficile après plusieurs années d’éditeur de texte riche...

 wine + Ultraedit

  • la fonction de lecture / écriture FTP ne fonctionne pas

 Screem : la solution presque parfaite

  • screem se greffe sur le module gnome-vfs et permets l’ouverture des comptes ftp créés dans les signets de Nautilus. Le problème de type mime attribués aux répertoires distants dans gnome-vfs a été corrigé dans la version 2.18 de gnome-vfs (feisty).
  • permets la synchronistation des comptes ftp distants mais pas dans le sens descendant
  • le chargement du profil est extrêmement long après quelques jours d’utilisation

 gedit : retour aux outils simples et paramétrables, c’est finalement cette solution qui est apparue à la fois la plus stable et la plus modulaire pour répondre au besoin

Gedit

Gedit est l’éditeur de texte intégré nativement au bureau gnome.

Cette application aux fonctionnalités simples permets, comme la plupart des outils sous Linux, une personnalisation avancée des préférences et l’édition de plugins sur mesure... au prix d’un peu de main dans le code.

Afin de répondre à mon besoin donc j’ai utilisé les outils externes de gedit :

 > Outil > Outils Externes > Nouveau
 Entrer la Description de l’outil et la touche de raccourci associée
 Entrée : document actuel
 Sortie : Afficher dans le panneau inférieur
 Applicabilité : Uniquement les fichiers distants
 Commandes : copier/coller le code source ci-dessous en modifiant la variable rep contenant le répertoire d’enregistrement local

Gedit utilise des variables d’environnement disponibles dans le contexte d’édition de l’article et du fonctionnement du plugin :
 $GEDIT_CURRENT_DOCUMENT_URI : chemin et nom complets du document
 $GEDIT_CURRENT_DOCUMENT_NAME : nom du document

Les commandes du plugin permettent ainsi l’enregistrement du fichier dans :
 le répertoire ftp distant (par défaut gedit ouvre les fichiers ftp en lecture seule)
 le répertoire local ( /home/nom/www par exemple) auquel est ajouté l’adresse ftp du fichier actuel (/home/nom/www/site dans le cas de ftp://login@site/repertoire/fichier ).

Code de l’outil

#!/bin/bash

#Définition du répertoire de travail
rep="/home/pvincent/Desktop/www"

#Copie locale temporaire
if 	! [ -d "$rep/tmp" ];
	then mkdir "$rep/tmp";
fi
cat $1 > $rep/tmp/$GEDIT_CURRENT_DOCUMENT_NAME

#Copie distante (fichiers ftp ouverts en lecture seule)
echo "DISTANT : gnomevfs-copy" $rep/tmp/$GEDIT_CURRENT_DOCUMENT_NAME
gnomevfs-copy $rep/tmp/$GEDIT_CURRENT_DOCUMENT_NAME $GEDIT_CURRENT_DOCUMENT_URI

#Extraction du nom du site
export HOTE=<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZWNobyAkR0VESVRfQ1VSUkVOVF9ET0NVTUVOVF9VUkkgfCBzZWQgLWUgJ3MvLipAXCguKlwpXC8uKi9cMS9naSc8L2NvZGU+"></span>

#Création du répertoire si non existant
if 	! [ -d "$rep/$HOTE" ];
	then mkdir -p "$rep/$HOTE";
fi

#Copie locale
echo "LOCAL : rcp " $rep/$HOTE/$GEDIT_CURRENT_DOCUMENT_NAME
rcp $rep/tmp/$GEDIT_CURRENT_DOCUMENT_NAME $rep/$HOTE

#Effacement de la copie locale temporaire
gnomevfs-rm $rep/tmp/$GEDIT_CURRENT_DOCUMENT_NAME

Portfolio

Messages

  • L’option lecture/ecriture des fichiers ouverts en ftp sous gedit est désactivée par défaut (pour des raisons de fiabilité semble-t-il).

    Cette option peut être modifiée de la manière suivante :
     Lancer(ALT+F2) : gconf-editor
     apps>gedit-2>preferences>editor>/save>writable_vfs_schemes
    ajouter : ftp

    Avec cette nouvelle situation, le script précédent peut être associé à la touche d’enregistrement CTRL+S et peut être simplifié :

    #!/bin/bash
    
    #Définition du répertoire de travail
    rep="/home/pvincent/Desktop/www"
    
    #Extraction du nom du site
    export HOTE=<span class="base64" title="PGNvZGUgY2xhc3M9J3NwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lJyBkaXI9J2x0cic+ZWNobyAkR0VESVRfQ1VSUkVOVF9ET0NVTUVOVF9VUkkgfCBzZWQgLWUgJ3MvLipAXCguKlwpXC8uKi9cMS9naSc8L2NvZGU+"></span>
    
    #Création du répertoire si non existant
    if         ! [ -d "$rep/$HOTE" ];
            then mkdir -p "$rep/$HOTE";
    fi
    
    #Copie locale
    echo "LOCAL : rcp " $rep/$HOTE/$GEDIT_CURRENT_DOCUMENT_NAME
    cat $1 > $rep/$HOTE/$GEDIT_CURRENT_DOCUMENT
    • Merci ! Merci ! Merci !

    • Salut,
      Juste une petite coquille dans le script ci-dessus : à la dernière ligne, il faut écrire :

      cat $1 > $rep/$HOTE/$GEDIT_CURRENT_DOCUMENT_NAME
    • Une question : quand j’associe ce script au raccourci Ctrl+S, il remplace l’enregistrement "classique", et du coup mes fichiers ne sont pas enregistrés en FTP (alors que quand j’utilise l’icône Enregistrer, l’enregistrement FTP se fait bien).
      Comment-faire pour que Ctrl+S active à la fois l’enregisrement local et l’enregistrement distant ?

      Merci !

Un message, un commentaire ?

Forum sur abonnement

Pour participer à ce forum, vous devez vous enregistrer au préalable. Merci d’indiquer ci-dessous l’identifiant personnel qui vous a été fourni. Si vous n’êtes pas enregistré, vous devez vous inscrire.