Accueil du site > INFORMATIQUE > Liens symboliques et Windows

Liens symboliques et Windows

samedi 17 septembre 2005, par Thierry Bothorel

Toutes les versions de cet article : [English ] [français ]

L’utilisation des liens symboliques avec Windows XP est une possibilité souvent ignorée.

Je dois l’admettre, je n’étais pas au courant qu’il était possible de faire des liens symboliques sous Windows. Je pensais que les “Symlinks” étaient réservés aux système Unix jusqu’à ce que je tombe sur un article du site Lowerbounds, Upperbounds, Sysinternals Junction.

Mais des liens symboliques pour quoi faire ? Personnellement je vois trois bonnes raisons :

- Combien de fois avez vous été “irrité” quand à partir d’un logiciel PC ou d’une application web vous deviez sélectionner un fichier sur votre PC ? Bien sûr vous aviez créé ce joli raccourci sur votre bureau pour atteindre directement ce dossier enfoui au fin fond de votre disque dur. Malheureusement lorsque vous cliquez sur ce lien, au lieu d’ouvrir le dossier cible, c’est le fichier du raccourci lui même qui est utilisé (%@# ) !

- J’utilise encore de nombreux jeux dos et un certain nombre d’entre eux ne fonctionnent que sur le lecteur C. Aujourd’hui j’utilise un disque à part pour les applications, D par exemple, et les jeux sous DOS sont dans D :\dosgames\. Avec les liens symboliques je peux créer un dossier virtuel c :\dosgames\ lié à d :\dosgames\ et lancez les programmes à partir de c :\dosgames\.

- J’utilise un PC de type WAMP et j’utilise un certain nombre de scripts Perl. Je suis irrité (encore !) de devoir changer sans arrêt la ligne Shebang de « # !/usr/bin/perl » à «  !#C :/programs/perl/perl.exe ». C’est en fait la raison principale pour laquelle je veux essayer d’utiliser les liens symboliques sous Windows.

NTFS supporte les liens symboliques, mais Microsoft ne communique pas dessus, il est impossible d’en créer dans le gestionnaire de fichiers, tout au plus cette fonction est documentée dans d’obscurs kits de développement. Sysinternals propose un utilitaire gratuit, « junction.exe ». Ce programme permet de créer des liens symboliques UNIQUEMENT sur les dossiers, pas sur les fichiers.
J’ai trouvé toutefois un utilitaire en ligne de commande, « hardlink.exe » sur le site de Jean-Claude Bellamy, JCB site, qui permet de créer des liens symboliques sur des FICHIERS UNIQUEMENT.

Mes quelques impressions après quelques jours d’utilisation :

  • « Jean-Claude Bellamy » avertit sur son site “Une restriction : fichier (ou dossier) d’origine et lien symbolique doivent résider sur le même disque logique.”. Jusqu’ici j’ai pu créer des liens symboliques de dossiers sur deux disques différents sans problème, peut-être ai-je manqué quelque chose ?
  • J’ai remarqué qu’il est impossible de supprimer un sous-dossier si on est entré dans le dossier parent à partir d’un lien symbolique. On obtient toujours un message « Fichier en cours d’utilisation ». Le seul moyen est de supprimer le dossier en passant par le chemin réel. Cela peut poser un problème pour des applications qui ont besoin de supprimer des dossiers. Il n’y a par contre aucun problème pour les fichiers.
  • Si vous supprimez un lien symbolique de fichier, vous supprimez uniquement le lien, pas le fichier. Par contre si vous supprimez le fichier réel, le lien symbolique devient le fichier. Ce n’était pas forcément évident pour moi, surtout n’étant pas utilisateur d’un système Unix (merci à Jean-Claude Bellamy pour ces précisions).
  • A propos d’Apache et de la ligne Shebang. Je crois me souvenir que si on ne précise pas la lettre de lecteur, Apache utilise la lettre de lecteur ou il est installé (ou lecteur système, j’ai un doute). J’ai donc essayé de “leurrer” Apache avec ces commandes, qui dans mon esprit devraient permettre à Apache de lancer “/usr/bin/perl” :

J’ai essayé de mettre /usr/bin/ sur le lecteur d’Apache comme dans l’exemple, et sur C, j’ai invariablement le message « 500 Internal Server Error ».

Toute suggestion est la bienvenue !

Répondre à cet article | RétroLiens :0


12 Messages de forum

  • Liens symboliques et Windows Le 12 octobre 2005 à 17:21

    Tu ne parles pas de cygwin ?

    Répondre à ce message

    • Liens symboliques et Windows Le 12 octobre 2005 à 21:54 , par Thierry Bothorel

      Je me place dans la perspective d’une utilisation de Windows pure, ou d’un utilisateur lambda, et dans ce cas là installer Cygwin juste pour çà, c’est un peu comme prendre un fusil pour dégommer une mouche !

      Bien qu’utilisateur de Cygwin pour des besoins particuliers, je n’ai jamais essayé de les utiliser avec. Par contre j’ai lu il y a déjà longtemps que leur support n’était pas encore "stable", mais çà a peut-être changé depuis..

      Répondre à ce message

      • Liens symboliques et Windows Le 13 octobre 2005 à 17:18

        Un utilisateur lambda de windows n’utilise pas wamp, ni n’écrit des script en perl ;-) et ignore probablement ce que lien symbolique veut dire…

        Un joueur de jeu DOS, pourrait penser à la commande subst, qui existe encore sous windows XP.

        Rhoô, ce que je peux être taquin… tu as raison ! prends les outils qui te conviennent ! :)

        Répondre à ce message

  • Liens symboliques et Windows Le 18 octobre 2005 à 14:04 , par Spit

    Il me semble que les liens symboliques peuvent etre aussi utilisés pour des server ftp par exemple

    C’est en tout cas ce que je cherche a faire, et comme j’ai deja utilisé unix c’est comme ca que je suis tombé ici : en effet, j’ai un server sur lequel il y’a a la fois des sauvegarde perso et des fichiers divers que je peux partager, tout ca sur plusieurs disques durs. N’ayant pas envie de tout partager je voudrais pouvoir ajouté dans le dossier "PARTAGE" dispo sur mon ftp des liens symbolik vers ce que je veu partager et qui ne se trouve pas au meme endroit… ou vers ce qu’on me demande de partager.

    Mais je ne l’ai pas encore fait, parce que je n’avais pas encore trouvé cette page :)

    Répondre à ce message

  • Liens symboliques et Windows Le 26 février 2007 à 13:29 , par alain

    A priori il y a confusion entre lien symbolique (symbolic) et lien réel (hard). Les liens symboliques sont possibles vers d’autres disques logiques, pas les liens réels. D’après la description, il semble que junction.exe crée des liens symboliques, alors que hardlink.exe crée des liens réels. Cela expliquerait l’incompréhension de l’auteur (hardlink ne peut travailler que sur une même unité logique)

    Répondre à ce message

  • Liens symboliques et Windows Le 6 mars 2007 à 00:27 , par gerfaut

    La création de liens réels est gérée de base sous Windows XP, grâce à la commande :

    fsutil hardlink create "nom du fichier lien" "nom du fichier original"

    Plus d’info sur le site de Zebulon :

    Répondre à ce message

    • Liens symboliques et Windows Le 6 mars 2007 à 11:06 , par Thierry Bothorel

      Merci pour ce lien, je ne connaissais pas fsutil

      Répondre à ce message

      • Liens symboliques et Windows Le 18 novembre 2007 à 17:57 , par number-one

        Bonjour, j’ai deux dossiers "videos" sur deux disques différents (voir le lien)

        http://perso.wanadoo.fr/jpforever/d…

        J’aimerais creer un dossier virtuelle qui rassemblerait les sous dossiers et fichiers de ces deux répertoires.

        Commment faire sous Windows XP ? Merci

        Répondre à ce message

        • Liens symboliques et Windows Le 18 novembre 2007 à 18:59 , par Thierry Bothorel

          Bonjour,

          les fonctionnalités dont je parle ici ne permettent pas de faire çà.

          Le seul truc approchant que je connaisse est sous Windows 2003 server. On peut créer des partages réseaux virtuels grâce au système DFS. Tu crées un point de partage virtuel et tu dis quels dossiers physiques doivent être montés dedans. Mais même dans ce cas, je ne suis pas sur qu’on puisse “fusionner” deux dossiers.

          Répondre à ce message

          • Liens symboliques et Windows Le 3 décembre 2007 à 19:21 , par Passant

            Salut,

            La solution c’est linux avec unionfs, on monte dans un répertoire 2 partitions qui seront fusionnées, une est prioritaire sur l’autre et c’est sur ce dernier seulement que les fichiers peuvent être écrits.

            Ou alors, toujours sous linux, créer un répertoire qui contient lui des liens symbolique.

            Il reste le RAID, mais on s’écarte du sujet

            Bref, Impossible sous Windows, j’ai monté un PC avec ubuntu server juste pour ça.

            Répondre à ce message

          • Liens symboliques et Windows Le 3 décembre 2007 à 19:21 , par Passant

            Salut,

            La solution c’est linux avec unionfs, on monte dans un répertoire 2 partitions qui seront fusionnées, une est prioritaire sur l’autre et c’est sur ce dernier seulement que les fichiers peuvent être écrits.

            Ou alors, toujours sous linux, créer un répertoire qui contient lui des liens symbolique.

            Il reste le RAID, mais on s’écarte du sujet

            Bref, Impossible sous Windows, j’ai monté un PC avec ubuntu server juste pour ça.

            Répondre à ce message

Répondre à cet article