Créer un lien symbolique sous Linux

I. Présentation

Dans ce tutoriel, nous allons apprendre à faire des liens symboliques entre des répertoires et des fichiers.

Un lien symbolique se rapproche d’une copie directe ou d’un raccourci. Un répertoire ou un fichier est l’exacte copie (en temps réelle) d’un autre. Souvent les liens symboliques sont utilisés pour simplifier les arborescences (nom de répertoire ou de fichier trop complexe ou mal placés).

II. Lien symbolique entre répertoire

D'une manière générale, voici comment utiliser la commande "ln" pour créer un lien symbolique :

ln -s dossier_cible nom_du_lien

Dans le contexte de mon exemple, je souhaite qu'en allant sur le répertoire /opt/jdk, j'atterrisse en réalité sur /opt/jdk1_7.2. Cela permet de facilement gérer le changement de version de JAVA. Mais ce n'est qu'un exemple 🙂

Nous allons commencer par créer lien symbolique entre deux répertoires. Nous utiliserons pour cela la commande « ln » (links) :

ln –s /root/jdk1_7.2 /root/jdk

Le lien symbolique "/root/jdk" sera alors créé.

Note : Il faut que le dossier « /root/jdk» n’existe pas au moment de la création du lien, il sera créé lors de la construction du lien.

Nous verrons alors avec la commande « ls –l » le résultat de notre lien :

root@debian:/opt# ls -al
total 1600
drwxr-xr-x  9 root root    4096 sept.  5 13:45 .
drwxr-xr-x 22 root root    4096 oct.  22  2015 ..
lrwxrwxrwx  1 root root      14 sept.  5 13:45 jdk -> /opt/jdk1_7.2/
drwxr-xr-x  2 root root    4096 sept.  5 13:44 jdk1_7.2

On voit donc bien ici que le dossier « jdk» se réfère au dossier « jdk_1_7.2». On remarque d’ailleurs bien que lors de la commande « ls –l », nous voyons un « l » au tout début qui indique que le dossier est un lien. Pour un test supplémentaire, nous pouvons créer un fichier « file1 » dans le dossier « jdk » et nous verrons qu’il sera créé également dans « jdk1_7.2» :

liensymb2

Pour supprimer un lien symbolique, il faut supprimer le répertoire de destination (ici « dest »).

III. Lien symbolique entre deux fichiers

Nous allons maintenant créer un lien symbolique entre deux fichiers. Le principe sera le même, un fichier « file_001_lien_symbolique» sera un lien (raccourci) vers un autre « file_001» :

ln –s file_001 file_001_lien_symbolique

C'est tout pour cet article, les liens symboliques sont très utiles pour simplifier la gestion d'un serveur, notamment lors des migrations, un lien symbolique pointant vers une instance N ou N-1 à modifier en cas de volonté de rollback par exemple 🙂

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Fondateur d'IT-Connect.fr et d'Information-security.fr. Auditeur sécurité chez Amossys.

    mickael a publié 478 articles sur IT-Connect.See all posts by mickael

    5 réactions sur “Créer un lien symbolique sous Linux

    • 02/10/2014 à 18:14
      Permalink

      J’ai peut-être mal compris, mais tu écris dans II. que « source » sera un lien symbolique vers « dest », donc dest serait un répertoire existant ?
      On créé un lien symbolique « source », qui pointera vers un répertoire existant « dest » si on comprend bien cette phrase, non ?
      Puis dans le cadre rouge il y a écrit que dest ne doit pas exister et sera créé avec le lien….
      La commande ln est ainsi si je ne me trompe pas :
      ln -s [existing/directory] [new/link/directory] non ? donc ce que tu as écrit est faux : selon ta commande, c’est dest qui sera le lien symbolique vers source, ce pourquoi en effet il n’existe pas avant la création du lien, comme précisé dans le cadre rouge…

      Je pense qu’il y a une confusion entre dest et source, soit dans la première phrase, soit dans la commande et dans le cadre rouge. D’ailleurs, je trouverais ça plus logique que ton lien soit au final « source -> dest », plutôt que « dest -> source » comme ce que l’on retrouve dans la capture …

      En fait je pense que le terme « source » est ambigüe selon le point de vue, d’où la confusion : dans une certaine mesure la source peut être le lien sur lequel on pointe pour aller qq part, ou il peut être l’origine vers laquelle on veut aller avec le lien. Tandis que le terme « destination » lui n’est pas ambigüe, c’est là où on va, cad le répertoire existant.

      Répondre
    • 23/12/2014 à 14:25
      Permalink

      Erreur dans la commande:
      ln –s /root/source/ /root/dest
      La correction est:
      ln –s /root/source /root/dest

      Répondre
    • 02/09/2016 à 10:01
      Permalink

      Premier lien google et l ‘explication est fausse
      ln -s dossier_cible nom_du_lien

      Répondre
      • 05/09/2016 à 13:43
        Permalink

        Bonjour, la dénomination « source » et « dest » pose en effet des problèmes de compréhension de l’article. Celui-ci a été modifié en conséquence.

        Merci pour votre remarque.

        Répondre
    • 26/03/2017 à 21:28
      Permalink

      Bonjour,
      D’abord, cette commande a quelle endroit doit-on la mettre.
      Dans quel fichier ?
      Et par exemple :
      si on veut que le dossier image du s-domaine A soit un répertoire raccourci du dossier image du domaine.
      idem pour b, c etc
      à quel endroit et dans quel fichier doit-on écrire ce code.
      à la racine du serveur.
      dans le .htaccess de chaque s-domaine ?
      Suis nul mais je me corrige(smile)

      Répondre

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *